Skip to content

Commit 9c62e56

Browse files
committed
shadows look ok
1 parent c5c177c commit 9c62e56

File tree

4 files changed

+128
-72
lines changed

4 files changed

+128
-72
lines changed

data/gfx.tgz

4.53 KB
Binary file not shown.

src/gfx_32x32.cpp

+104
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,110 @@ void gfx_init_32x32(void)
2323
"",
2424
"",
2525
// ##############################################################################
26+
"dungeon_wall.IS_JOIN_TL2.shadow",
27+
"dungeon_wall.IS_JOIN_T_3.shadow",
28+
"dungeon_wall.IS_JOIN_TR2.shadow",
29+
"dungeon_wall.IS_JOIN_TOP.shadow",
30+
"dungeon_wall.IS_JOIN_X4_180.shadow",
31+
"dungeon_wall.IS_JOIN_X4_270.shadow",
32+
"dungeon_wall.IS_JOIN_X2_270.shadow",
33+
"dungeon_wall.IS_JOIN_X2.shadow",
34+
"dungeon_wall.IS_JOIN_X1_180.shadow",
35+
"dungeon_wall.IS_JOIN_X1.shadow",
36+
"dungeon_wall.IS_JOIN_X.shadow",
37+
"",
38+
// ##############################################################################
39+
"dungeon_wall.IS_JOIN_T270_3.shadow",
40+
"dungeon_wall.IS_JOIN_BLOCK.shadow",
41+
"dungeon_wall.IS_JOIN_T90_3.shadow",
42+
"dungeon_wall.IS_JOIN_VERT.shadow",
43+
"dungeon_wall.IS_JOIN_X4_90.shadow",
44+
"dungeon_wall.IS_JOIN_X4.shadow",
45+
"dungeon_wall.IS_JOIN_X2_180.shadow",
46+
"dungeon_wall.IS_JOIN_X2_90.shadow",
47+
"dungeon_wall.IS_JOIN_X1_90.shadow",
48+
"dungeon_wall.IS_JOIN_X1_270.shadow",
49+
"dungeon_wall.IS_JOIN_X3_180.shadow",
50+
"dungeon_wall.IS_JOIN_X3.shadow",
51+
// ##############################################################################
52+
"dungeon_wall.IS_JOIN_BL2.shadow",
53+
"dungeon_wall.IS_JOIN_T180_3.shadow",
54+
"dungeon_wall.IS_JOIN_BR2.shadow",
55+
"dungeon_wall.IS_JOIN_BOT.shadow",
56+
"dungeon_wall.IS_JOIN_T_1.shadow",
57+
"dungeon_wall.IS_JOIN_T_2.shadow",
58+
"dungeon_wall.IS_JOIN_T270_2.shadow",
59+
"dungeon_wall.IS_JOIN_T90_1.shadow",
60+
"dungeon_wall.IS_JOIN_T.shadow",
61+
"dungeon_wall.IS_JOIN_T90.shadow",
62+
"dungeon_wall.IS_JOIN_TL.shadow",
63+
"dungeon_wall.IS_JOIN_TR.shadow",
64+
// ##############################################################################
65+
"dungeon_wall.IS_JOIN_LEFT.shadow",
66+
"dungeon_wall.IS_JOIN_HORIZ.shadow",
67+
"dungeon_wall.IS_JOIN_RIGHT.shadow",
68+
"dungeon_wall.IS_JOIN_NODE.shadow",
69+
"dungeon_wall.IS_JOIN_T180_2.shadow",
70+
"dungeon_wall.IS_JOIN_T180_1.shadow",
71+
"dungeon_wall.IS_JOIN_T270_1.shadow",
72+
"dungeon_wall.IS_JOIN_T90_2.shadow",
73+
"dungeon_wall.IS_JOIN_T270.shadow",
74+
"dungeon_wall.IS_JOIN_T180.shadow",
75+
"dungeon_wall.IS_JOIN_BL.shadow",
76+
"dungeon_wall.IS_JOIN_BR.shadow",
77+
// ##############################################################################
78+
"dungeon_door.IS_JOIN_TL2.shadow",
79+
"dungeon_door.IS_JOIN_T_3.shadow",
80+
"dungeon_door.IS_JOIN_TR2.shadow",
81+
"dungeon_door.IS_JOIN_TOP.shadow",
82+
"dungeon_door.IS_JOIN_X4_180.shadow",
83+
"dungeon_door.IS_JOIN_X4_270.shadow",
84+
"dungeon_door.IS_JOIN_X2_270.shadow",
85+
"dungeon_door.IS_JOIN_X2.shadow",
86+
"dungeon_door.IS_JOIN_X1_180.shadow",
87+
"dungeon_door.IS_JOIN_X1.shadow",
88+
"dungeon_door.IS_JOIN_X.shadow",
89+
"",
90+
// ##############################################################################
91+
"dungeon_door.IS_JOIN_T270_3.shadow",
92+
"dungeon_door.IS_JOIN_BLOCK.shadow",
93+
"dungeon_door.IS_JOIN_T90_3.shadow",
94+
"dungeon_door.IS_JOIN_VERT.shadow",
95+
"dungeon_door.IS_JOIN_X4_90.shadow",
96+
"dungeon_door.IS_JOIN_X4.shadow",
97+
"dungeon_door.IS_JOIN_X2_180.shadow",
98+
"dungeon_door.IS_JOIN_X2_90.shadow",
99+
"dungeon_door.IS_JOIN_X1_90.shadow",
100+
"dungeon_door.IS_JOIN_X1_270.shadow",
101+
"dungeon_door.IS_JOIN_X3_180.shadow",
102+
"dungeon_door.IS_JOIN_X3.shadow",
103+
// ##############################################################################
104+
"dungeon_door.IS_JOIN_BL2.shadow",
105+
"dungeon_door.IS_JOIN_T180_3.shadow",
106+
"dungeon_door.IS_JOIN_BR2.shadow",
107+
"dungeon_door.IS_JOIN_BOT.shadow",
108+
"dungeon_door.IS_JOIN_T_1.shadow",
109+
"dungeon_door.IS_JOIN_T_2.shadow",
110+
"dungeon_door.IS_JOIN_T270_2.shadow",
111+
"dungeon_door.IS_JOIN_T90_1.shadow",
112+
"dungeon_door.IS_JOIN_T.shadow",
113+
"dungeon_door.IS_JOIN_T90.shadow",
114+
"dungeon_door.IS_JOIN_TL.shadow",
115+
"dungeon_door.IS_JOIN_TR.shadow",
116+
// ##############################################################################
117+
"dungeon_door.IS_JOIN_LEFT.shadow",
118+
"dungeon_door.IS_JOIN_HORIZ.shadow",
119+
"dungeon_door.IS_JOIN_RIGHT.shadow",
120+
"dungeon_door.IS_JOIN_NODE.shadow",
121+
"dungeon_door.IS_JOIN_T180_2.shadow",
122+
"dungeon_door.IS_JOIN_T180_1.shadow",
123+
"dungeon_door.IS_JOIN_T270_1.shadow",
124+
"dungeon_door.IS_JOIN_T90_2.shadow",
125+
"dungeon_door.IS_JOIN_T270.shadow",
126+
"dungeon_door.IS_JOIN_T180.shadow",
127+
"dungeon_door.IS_JOIN_BL.shadow",
128+
"dungeon_door.IS_JOIN_BR.shadow",
129+
// ##############################################################################
26130
"dungeon_wall.IS_JOIN_TL2",
27131
"dungeon_wall.IS_JOIN_T_3",
28132
"dungeon_wall.IS_JOIN_TR2",

src/level_display_dungeon.cpp

+11-59
Original file line numberDiff line numberDiff line change
@@ -32,38 +32,6 @@ void Level::display_dungeon_tile(Tpp tp, uint16_t tile_index, point tl, point br
3232
display_dungeon_tile(tp, tile, tl, br, offset);
3333
}
3434

35-
#define BLIT_UP_TILE \
36-
tile = tile_index_to_tile(tile_index - offset); \
37-
display_dungeon_tile(tp, tile, tl, br, point(0, -dh));
38-
39-
#define BLIT_DOWN_TILE \
40-
tile = tile_index_to_tile(tile_index + offset); \
41-
display_dungeon_tile(tp, tile, tl, br, point(0, dh));
42-
43-
#define BLIT_LEFT_TILE \
44-
tile = tile_index_to_tile(tile_index - 1); \
45-
display_dungeon_tile(tp, tile, tl, br, point(-dw, 0));
46-
47-
#define BLIT_RIGHT_TILE \
48-
tile = tile_index_to_tile(tile_index + 1); \
49-
display_dungeon_tile(tp, tile, tl, br, point(dw, 0));
50-
51-
#define BLIT_TL_TILE \
52-
tile = tile_index_to_tile(tile_index - offset - 1); \
53-
display_dungeon_tile(tp, tile, tl, br, point(-dw, -dh));
54-
55-
#define BLIT_TR_TILE \
56-
tile = tile_index_to_tile(tile_index - offset + 1); \
57-
display_dungeon_tile(tp, tile, tl, br, point(dw, -dh));
58-
59-
#define BLIT_BL_TILE \
60-
tile = tile_index_to_tile(tile_index + offset - 1); \
61-
display_dungeon_tile(tp, tile, tl, br, point(-dw, dh));
62-
63-
#define BLIT_BR_TILE \
64-
tile = tile_index_to_tile(tile_index + offset + 1); \
65-
display_dungeon_tile(tp, tile, tl, br, point(dw, dh));
66-
6735
void Level::display_dungeon_z_layer(int x, int y, int slot, int z, bool deco)
6836
{
6937
int dw = TILE_WIDTH / game->config.game_pix_zoom;
@@ -134,32 +102,7 @@ void Level::display_dungeon_z_layer(int x, int y, int slot, int z, bool deco)
134102
br.y = tl.y + pix_height;
135103

136104
if (deco) {
137-
auto offset = tex_get_width(tile_get_tex(tile)) / TILE_WIDTH;
138-
139-
if (obj->dir_up) {
140-
BLIT_UP_TILE
141-
}
142-
if (obj->dir_down) {
143-
BLIT_DOWN_TILE
144-
}
145-
if (obj->dir_left) {
146-
BLIT_LEFT_TILE
147-
}
148-
if (obj->dir_right) {
149-
BLIT_RIGHT_TILE
150-
}
151-
if (obj->dir_tl) {
152-
BLIT_TL_TILE
153-
}
154-
if (obj->dir_bl) {
155-
BLIT_BL_TILE
156-
}
157-
if (obj->dir_tr) {
158-
BLIT_TR_TILE
159-
}
160-
if (obj->dir_br) {
161-
BLIT_BR_TILE
162-
}
105+
display_dungeon_tile(tp, tile_index - 94, tl, br, point(0, 0));
163106
} else {
164107
display_dungeon_tile(tp, tile_index, tl, br, point(0, 0));
165108
}
@@ -179,7 +122,7 @@ void Level::display_dungeon(void)
179122
glClear(GL_COLOR_BUFFER_BIT);
180123
blit_init();
181124

182-
// const bool deco = true;
125+
const bool deco = true;
183126
const bool no_deco = false;
184127

185128
for (auto y = miny; y < maxy; y++) {
@@ -197,6 +140,15 @@ void Level::display_dungeon(void)
197140
}
198141
}
199142
}
143+
144+
for (auto y = miny; y < maxy; y++) {
145+
for (auto x = maxx - 1; x >= minx; x--) {
146+
for (auto slot = 0; slot < MAP_SLOTS; slot++) {
147+
display_dungeon_z_layer(x, y, slot, MAP_DEPTH_WALL, deco);
148+
display_dungeon_z_layer(x, y, slot, MAP_DEPTH_DOOR, deco);
149+
}
150+
}
151+
}
200152
}
201153

202154
glcolor(WHITE);

src/level_dungeon.cpp

+13-13
Original file line numberDiff line numberDiff line change
@@ -10,20 +10,20 @@ void Level::dungeon_create_and_place()
1010
map_set(data,
1111
"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
1212
"x...x...........x..............x"
13-
"x...x=xx=x...=..x..xxxx==xxxx..x"
14-
"x...x..x....===.x..xxxx...xxx..x"
15-
"x===x..xx....=..x..xxx.===.=...x"
16-
"x...=.xx........x...=..===.=...x"
17-
"x...=..x.======.x..xxx.===.=...x"
18-
"xxx.=.xx.=..=.=.x..xxxx...xxx..x"
19-
"x...=....======.x..xxxx==xxxx..x"
20-
"x...=.xx........x..............x"
13+
"x...x=xx=x......x..xxxx==xxxx..x"
14+
"x...x..x..x.....x..xxxx...xxx..x"
15+
"x===x..xx..x....x..xxx.....=...x"
16+
"x...=.xx....x...x...=......=...x"
17+
"x...=..x.....x..x..xxx.....=...x"
18+
"xxx.=.xxx.....x.x..xxxx...xxx..x"
19+
"x...=...xxx.....x..xxxx==xxxx..x"
20+
"x...=.xxx.......x..............x"
2121
"x...=.......xxxxx...x.......x..x"
22-
"x..xxxxx.====...x..x.x=====x...x"
23-
"x......x.=..=...x...x.....x....x"
24-
"xx...xxx.====...x........x.....x"
25-
"x........=..=..x........x......x"
26-
"xxxx.xxx.====.x..x.....x.......x"
22+
"x..xxxxx........x..x.x=====x...x"
23+
"x......x........x...x.....x....x"
24+
"xx...xxx........x........x.....x"
25+
"x..............x........x......x"
26+
"xxxx.xxx......x..x.....x.......x"
2727
"x..x.x...........xx............x"
2828
"x..x.x............x.x......x...x"
2929
"x..x.x....xxx.......x..xxxxxxx.x"

0 commit comments

Comments
 (0)