Free Hero Mesh

Check-in [a1dab8cccd]
Login
This is a mirror of the main repository for Free Hero Mesh. New tickets and changes will not be accepted at this mirror.
Overview
Comment:Change a comment in exec.c explaining another reason why finding loops in deferred movement might sometimes not find one, and why it doesn't matter in that case.
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: a1dab8cccd2eb8214764d33301bc123ac75f7401
User & Date: user on 2021-04-08 21:25:37
Other Links: manifest | tags
Context
2021-04-09
23:23
Add the possibility to rename a picture in the picture editor. check-in: 602174dd57 user: user tags: trunk
2021-04-08
21:25
Change a comment in exec.c explaining another reason why finding loops in deferred movement might sometimes not find one, and why it doesn't matter in that case. check-in: a1dab8cccd user: user tags: trunk
14:44
Add a compile-time assertion that multi-character literals are implemented in a suitable way. check-in: 6cb45f70ee user: user tags: trunk
Changes

Modified exec.c from [bd128e8f11] to [d7feec84d8].

2046
2047
2048
2049
2050
2051
2052
2053



2054
2055
2056
2057
2058
2059
2060
  // If a loop is found, call the handle_colliding function to determine what to do next.
  // If there is no loop, allow the move to be retried later, trying objE's location next.
  // Since there may be multiple objects in a location, which move in different directions,
  // a variable "ch" mentions the next object to try, if it is VOIDLINK. If not, then once
  // it reaches the end without finding a loop, it can try the next one, resetting ch to
  // VOIDLINK. This will find not only loops, but also if there is a branch that is later
  // merged; due to what this program needs to do, and how they will be dealt with after
  // the potential loop is found, that isn't a problem.



  static sqlite3_uint64 board[64]; // bit board for locations with possible collisions
  Object*o=objects[obj];
  Uint32 ch=VOIDLINK; // first object found in same place as other where it must be checked
  Uint8 x=o->x;
  Uint8 y=o->y;
  Uint32 n,nn;
  memset(board,0,sizeof(board));







|
>
>
>







2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
2061
2062
2063
  // If a loop is found, call the handle_colliding function to determine what to do next.
  // If there is no loop, allow the move to be retried later, trying objE's location next.
  // Since there may be multiple objects in a location, which move in different directions,
  // a variable "ch" mentions the next object to try, if it is VOIDLINK. If not, then once
  // it reaches the end without finding a loop, it can try the next one, resetting ch to
  // VOIDLINK. This will find not only loops, but also if there is a branch that is later
  // merged; due to what this program needs to do, and how they will be dealt with after
  // the potential loop is found, that isn't a problem. This algorithm also will not find
  // some loops with multiple branches, but that is also OK, since the main handling of
  // deferred movements will eventually try every object as an origin, and this will cause
  // the loop to eventually be found.
  static sqlite3_uint64 board[64]; // bit board for locations with possible collisions
  Object*o=objects[obj];
  Uint32 ch=VOIDLINK; // first object found in same place as other where it must be checked
  Uint8 x=o->x;
  Uint8 y=o->y;
  Uint32 n,nn;
  memset(board,0,sizeof(board));