Too much C for main forum! I think it belongs here.
Yes, they start on level 5 (this is actually in dungeon_profile.txt, see "room:room template:" lines).
Of course, you shoudn't use words of recall Press Ctrl-A, that enables debug commands. Some useful commands: 'A' - get max experience (so your @ becomes level 50); 'j' - jump to some level, 'w' - reveal whole level (like with scroll of magic map).
Right (except it's y, x coordinate instead of x, y! good source of bugs ) So you'll need to implement square_set_color(), which should be similar to square_set_feat(), but for colors.
When the core wants to update something on the map, it calls square_light_spot(); that tells the ui that a grid shoud be redrawn. The ui then calls map_info(), that fills struct grid_data with all information that a player is allowed to know. grid_data_as_text() then translates grid_data to text (or to tiles).
So struct square (in cave.h) looks like this:
I suggest to add another field to it:
And initialize color field much like how feat is initialized (functions in cave-square.c). Roughly:
Then just call square_set_color() when appropriate in room builder.
See ui-map.c:
The Term stuff then passes characters and their colors to a frontend, e.g., to ncurses client.
Yes, they start on level 5 (this is actually in dungeon_profile.txt, see "room:room template:" lines).
Of course, you shoudn't use words of recall Press Ctrl-A, that enables debug commands. Some useful commands: 'A' - get max experience (so your @ becomes level 50); 'j' - jump to some level, 'w' - reveal whole level (like with scroll of magic map).
From what little I understand from the code, each terrain type has a terrain index from terrain.txt and a color index from z-color. Terrain bits from build_room_template() are set through square_set_feat(). This sets the appropriate terrain feature to a chunk / cave x y coordinate.
And this information somehow ends up in grid_data_as_text() where the color of the feature type is displayed.
To color room templates, maybe I can pass along the color_map color with the feature index in build_room_template() and store both at the cave square coordinate. Is this what you meant with the additional attribute for cave.h:132, t4nk?
Code:
struct square { byte feat; bitflag *info; byte noise; byte scent; s16b mon; struct object *obj; struct trap *trap; };
Code:
struct square { byte feat; byte color; /* and all other stuff... */
Code:
void square_set_color(struct chunk *c, int y, int x, byte color) { assert(square_in_bounds(c, y, x)); c->squares[y][x].color = color; }
But grid_data_as_text() doesn't have current square coordinates or the cave object to look up and overrule the feature color for display.
Code:
/* Determine what is there */ map_info(y, x, &g); grid_data_as_text(&g, &a, &c, &ta, &tc); Term_queue_char(t, vx, vy, a, c, ta, tc);
Comment