str(world_db["Things"][0]["T_POSX"]) + "\n" + \
str(world_db["MAP_LENGTH"]) + "\n"
length = world_db["MAP_LENGTH"]
+
fov = bytearray(b' ' * (length ** 2))
ord_v = ord("v")
for pos in [pos for pos in range(length ** 2)
if ord_v == world_db["Things"][0]["fovmap"][pos]]:
fov[pos] = world_db["MAP"][pos]
- length = world_db["MAP_LENGTH"]
for id in [id for tid in reversed(sorted(list(world_db["ThingTypes"])))
for id in world_db["Things"]
if not world_db["Things"][id]["carried"]
fov[world_db["Things"][id]["T_POSY"] * length
+ world_db["Things"][id]["T_POSX"]] = c
string = write_map(string, fov)
+
mem = world_db["Things"][0]["T_MEMMAP"][:]
for mt in [mt for tid in reversed(sorted(list(world_db["ThingTypes"])))
for mt in world_db["Things"][0]["T_MEMTHING"]
c = world_db["ThingTypes"][mt[0]]["TT_SYMBOL"]
mem[(mt[1] * length) + mt[2]] = ord(c)
string = write_map(string, mem)
+
+ stacksmap = bytearray(b'0' * (length ** 2)) # #
+ for id in [id for id in world_db["Things"] # #
+ if not world_db["Things"][id]["carried"] # #
+ if world_db["Things"][0]["fovmap"][ # #
+ world_db["Things"][id]["T_POSY"] * length # #
+ + world_db["Things"][id]["T_POSX"]] == ord_v]: # #
+ pos = (world_db["Things"][id]["T_POSY"] * length # #
+ + world_db["Things"][id]["T_POSX"]) # #
+ if stacksmap[pos] < ord('2'): # #
+ stacksmap[pos] += 1 # #
+ for mt in world_db["Things"][0]["T_MEMTHING"]: # #
+ pos = mt[1] * length + mt[2] # #
+ if stacksmap[pos] < ord('2'): # #
+ stacksmap[pos] += 1 # #
+ string = write_map(string, stacksmap) # #
+
atomic_write(io_db["path_worldstate"], string, delete=False)
strong_write(io_db["file_out"], "WORLD_UPDATED\n")
io_db["worldstate_updateable"] = False
// attr_t a=' '==world.mem_map[y*world.map.length+x]?attr_sha:attr_mem;
char c = world.mem_map[y*world.map.length + x];
set_ch_on_yx(win, y, x * 2 + (y % 2), c | a);
- set_ch_on_yx(win, y, x * 2 + (y % 2) + 1, ' ' | a);
+ chtype depth = ' ' | a; //
+ if (world.stacks_map[y * world.map.length + x] == '2') //
+ { //
+ depth = '+' | COLOR_PAIR(2); //
+ } //
+ set_ch_on_yx(win, y, x * 2 + (y % 2) + 1, depth);
}
}
init_pair(4, COLOR_BLUE, COLOR_BLACK); //
} //
// char c = world.map.cells[y*world.map.length + x];
set_ch_on_yx(win, y, x * 2 + (y % 2), c | a); //
- set_ch_on_yx(win, y, x * 2 + (y % 2) + 1, ' ' | a); //
+ chtype depth = ' ' | a; //
+ if (world.stacks_map[y * world.map.length + x] == '2') //
+ { //
+ depth = '+' | COLOR_PAIR(13); //
+ } //
+ set_ch_on_yx(win, y, x * 2 + (y % 2) + 1, depth); //
// set_ch_on_yx(win, y, x * 2 + (y % 2), c);
// set_ch_on_yx(win, y, x * 2 + (y % 2) + 1, ' ');
}
world.map.length = (uint16_t) read_value_from_line(read_buf, linemax, file);
read_map_cells(file, &world.map.cells);
read_map_cells(file, &world.mem_map);
+ read_map_cells(file, &world.stacks_map); //
free(read_buf);
try_fclose(file, __func__);
return 1;
char * path_commands; /* path of commands config file */
char * player_inventory; /* one-item-per-line string list of owned items */
char * mem_map; /* map cells of player's map memory */
+ char * stacks_map; /* map of depths of thing stacks on world map */ // 7DRL
char * queue; /* stores un-processed messages read from the input file */
struct yx_uint8 player_pos; /* coordinates of player on map */
struct yx_uint8 look_pos; /* coordinates of look cursor */