Free Hero Mesh

Check-in [7a6ec6b4a1]
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:Add a placeholder icon for the new move at the end of the move list
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: 7a6ec6b4a117db5851c3bda2c11025d05a9f76de
User & Date: user on 2021-01-07 07:42:53
Other Links: manifest | tags
Context
2021-01-08
00:32
Change read_lump function; also add read_userstate and write_userstate. check-in: 7dab93e8a9 user: user tags: trunk
2021-01-07
07:42
Add a placeholder icon for the new move at the end of the move list check-in: 7a6ec6b4a1 user: user tags: trunk
2021-01-06
22:33
Write more about the WinLevel instruction check-in: 44aa200a8a user: user tags: trunk
Changes

Modified game.c from [6379500623] to [e1f2a7b97d].

109
110
111
112
113
114
115

116
117
118
119
120
121
122
    draw_text(8,52,buf,0xF0,0xF9);
    snprintf(buf,8,"%5d",replay_count);
    draw_text(8,screen->h-8,buf,0xF0,0xFC);
    for(y=44,x=replay_pos-(screen->h-68)/32;;x++) {
      y+=16;
      if(y+24>screen->h) break;
      if(x>=0 && x<replay_count) draw_key(16,y,replay_list[x],0xF8,0xFB);

      if(x==replay_pos) draw_text(0,y,"~~",0xF0,0xFE);
      if(x==replay_mark) draw_text(32,y,"~~",0xF0,0xFD);
    }
    SDL_UnlockSurface(screen);
  }
  if(quiz_text) draw_popup(quiz_text);
  SDL_Flip(screen);







>







109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
    draw_text(8,52,buf,0xF0,0xF9);
    snprintf(buf,8,"%5d",replay_count);
    draw_text(8,screen->h-8,buf,0xF0,0xFC);
    for(y=44,x=replay_pos-(screen->h-68)/32;;x++) {
      y+=16;
      if(y+24>screen->h) break;
      if(x>=0 && x<replay_count) draw_key(16,y,replay_list[x],0xF8,0xFB);
      if(x==replay_count) draw_key(16,y,1,0xF0,0xF8);
      if(x==replay_pos) draw_text(0,y,"~~",0xF0,0xFE);
      if(x==replay_mark) draw_text(32,y,"~~",0xF0,0xFD);
    }
    SDL_UnlockSurface(screen);
  }
  if(quiz_text) draw_popup(quiz_text);
  SDL_Flip(screen);
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
    } else if(side_mode) {
      // Inventory
      x=(ev->button.y-52)/picture_size;
      if(x<0 || x>=ninventory) strcpy(buf,"       "); else snprintf(buf,8,"%7d",inventory[x].value);
    } else {
      // Move list
      x=replay_pos+(ev->button.y+4)/16-(screen->h-68)/32-4;
      if(x<0 || x>replay_count) strcpy(buf,"       "); else snprintf(buf,8,"=%6d",x);
    }
  } else {
    if(x>0 && y>0 && x<=pfwidth && y<=pfheight) snprintf(buf,8,"(%2d,%2d)",x,y);
    else strcpy(buf,"       ");
  }
  SDL_LockSurface(screen);
  draw_text(0,40,buf,0xF0,0xF1);







|







180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
    } else if(side_mode) {
      // Inventory
      x=(ev->button.y-52)/picture_size;
      if(x<0 || x>=ninventory) strcpy(buf,"       "); else snprintf(buf,8,"%7d",inventory[x].value);
    } else {
      // Move list
      x=replay_pos+(ev->button.y+4)/16-(screen->h-68)/32-4;
      if(x<0 || x>replay_count) strcpy(buf,"       "); else snprintf(buf,8,"%c%6d",x<replay_pos?0xAE:x>replay_pos?0xAF:0xFE,x);
    }
  } else {
    if(x>0 && y>0 && x<=pfwidth && y<=pfheight) snprintf(buf,8,"(%2d,%2d)",x,y);
    else strcpy(buf,"       ");
  }
  SDL_LockSurface(screen);
  draw_text(0,40,buf,0xF0,0xF1);

Modified keyicons.xbm from [cde032d1fd] to [9bb248112a].

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#define keyicons_width 16
#define keyicons_height 4096
static unsigned char keyicons_bits[] = {
   0x55, 0x00, 0xaa, 0x00, 0x55, 0x00, 0xaa, 0x00, 0x55, 0x00, 0xaa, 0x00,
   0x55, 0x00, 0xaa, 0x00, 0x00, 0x55, 0x00, 0xaa, 0x00, 0x55, 0x00, 0xaa,
   0x00, 0x55, 0x00, 0xaa, 0x00, 0x55, 0x00, 0xaa,
   0x55, 0x00, 0xaa, 0x00, 0x55, 0x00, 0xaa, 0x00, 0x55, 0x00, 0xaa, 0x00,
   0x55, 0x00, 0xaa, 0x00, 0x00, 0x55, 0x00, 0xaa, 0x00, 0x55, 0x00, 0xaa,
   0x00, 0x55, 0x00, 0xaa, 0x00, 0x55, 0x00, 0xaa,
   0x55, 0x00, 0xaa, 0x00, 0x55, 0x00, 0xaa, 0x00, 0x55, 0x00, 0xaa, 0x00,
   0x55, 0x00, 0xaa, 0x00, 0x00, 0x55, 0x00, 0xaa, 0x00, 0x55, 0x00, 0xaa,
   0x00, 0x55, 0x00, 0xaa, 0x00, 0x55, 0x00, 0xaa,
   0x55, 0x00, 0xaa, 0x00, 0x55, 0x00, 0xaa, 0x00, 0x55, 0x00, 0xaa, 0x00,
   0x55, 0x00, 0xaa, 0x00, 0x00, 0x55, 0x00, 0xaa, 0x00, 0x55, 0x00, 0xaa,
   0x00, 0x55, 0x00, 0xaa, 0x00, 0x55, 0x00, 0xaa,
   0x55, 0x00, 0xaa, 0x00, 0x55, 0x00, 0xaa, 0x00, 0x55, 0x00, 0xaa, 0x00,






|
|
|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#define keyicons_width 16
#define keyicons_height 4096
static unsigned char keyicons_bits[] = {
   0x55, 0x00, 0xaa, 0x00, 0x55, 0x00, 0xaa, 0x00, 0x55, 0x00, 0xaa, 0x00,
   0x55, 0x00, 0xaa, 0x00, 0x00, 0x55, 0x00, 0xaa, 0x00, 0x55, 0x00, 0xaa,
   0x00, 0x55, 0x00, 0xaa, 0x00, 0x55, 0x00, 0xaa,
   0x55, 0x55, 0x00, 0x80, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x80,
   0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x80,
   0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0xaa, 0xaa,
   0x55, 0x00, 0xaa, 0x00, 0x55, 0x00, 0xaa, 0x00, 0x55, 0x00, 0xaa, 0x00,
   0x55, 0x00, 0xaa, 0x00, 0x00, 0x55, 0x00, 0xaa, 0x00, 0x55, 0x00, 0xaa,
   0x00, 0x55, 0x00, 0xaa, 0x00, 0x55, 0x00, 0xaa,
   0x55, 0x00, 0xaa, 0x00, 0x55, 0x00, 0xaa, 0x00, 0x55, 0x00, 0xaa, 0x00,
   0x55, 0x00, 0xaa, 0x00, 0x00, 0x55, 0x00, 0xaa, 0x00, 0x55, 0x00, 0xaa,
   0x00, 0x55, 0x00, 0xaa, 0x00, 0x55, 0x00, 0xaa,
   0x55, 0x00, 0xaa, 0x00, 0x55, 0x00, 0xaa, 0x00, 0x55, 0x00, 0xaa, 0x00,

Modified sql.doc from [1e5a6a3c19] to [8e507e60da].

123
124
125
126
127
128
129


130
131
132
133
134
135
136
137
138
139
140
141
142
  Contains the user cache data for the .level and .solution files of each
  puzzle set, in order to speed up loading and saving. The DATA will be
  null unless the data has changed, in which case the new data is stored
  here; it will later rewrite the Hamster archive with the new data and
  then it will be set to null again. USERSTATE contains user data such as
  the list of moves made by the player. FILE is the ID in the user cache
  index, and indicates which Hamster archive file this lump belongs to.



CREATE TABLE "USERCACHEINDEX"("ID" INTEGER PRIMARY KEY, "NAME" TEXT,
"TIME" INT);
  The user cache index; contains one record for each .level and .solution
  file of all puzzle sets which have been loaded. NAME is the full path,
  and TIME is the UNIX timestamp. If you want to delete a record, then
  you should also delete all records from USERCACHEDATA whose FILE value
  is the same as the ID value in this table for which it is deleted. You
  should not touch it while Free Hero Mesh is running, though.

CREATE TEMPORARY TABLE "VARIABLES"("ID" INTEGER PRIMARY KEY, "NAME" TEXT);
  List of all global and local user variables used in the game.








>
>













123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
  Contains the user cache data for the .level and .solution files of each
  puzzle set, in order to speed up loading and saving. The DATA will be
  null unless the data has changed, in which case the new data is stored
  here; it will later rewrite the Hamster archive with the new data and
  then it will be set to null again. USERSTATE contains user data such as
  the list of moves made by the player. FILE is the ID in the user cache
  index, and indicates which Hamster archive file this lump belongs to.
  (The USERSTATE column of this SQL table is not related to the UserState
  variable of objects in the game.)

CREATE TABLE "USERCACHEINDEX"("ID" INTEGER PRIMARY KEY, "NAME" TEXT,
"TIME" INT);
  The user cache index; contains one record for each .level and .solution
  file of all puzzle sets which have been loaded. NAME is the full path,
  and TIME is the UNIX timestamp. If you want to delete a record, then
  you should also delete all records from USERCACHEDATA whose FILE value
  is the same as the ID value in this table for which it is deleted. You
  should not touch it while Free Hero Mesh is running, though.

CREATE TEMPORARY TABLE "VARIABLES"("ID" INTEGER PRIMARY KEY, "NAME" TEXT);
  List of all global and local user variables used in the game.