From 0c04d8ad550a179adae54a5a0130e7887f8727b6 Mon Sep 17 00:00:00 2001 From: Johanna Ploog Date: Tue, 12 Jan 2010 17:21:26 +0100 Subject: Also add wave tiles for deep water. The water masks still look wonky. When it comes to drawing waves, deep water always trumps shallow water. --- crawl-ref/source/rltiles/dc-dngn.txt | 12 +++ .../rltiles/dc-dngn/water/deep_water_wave_E.png | Bin 0 -> 1097 bytes .../rltiles/dc-dngn/water/deep_water_wave_N.png | Bin 0 -> 1101 bytes .../rltiles/dc-dngn/water/deep_water_wave_S.png | Bin 0 -> 1099 bytes .../rltiles/dc-dngn/water/deep_water_wave_W.png | Bin 0 -> 1108 bytes .../dc-dngn/water/deep_water_wave_corner_NE.png | Bin 0 -> 1083 bytes .../dc-dngn/water/deep_water_wave_corner_NW.png | Bin 0 -> 1097 bytes .../dc-dngn/water/deep_water_wave_corner_SE.png | Bin 0 -> 1085 bytes .../dc-dngn/water/deep_water_wave_corner_SW.png | Bin 0 -> 1090 bytes crawl-ref/source/tilereg.cc | 84 +++++++++++++++------ 10 files changed, 75 insertions(+), 21 deletions(-) create mode 100644 crawl-ref/source/rltiles/dc-dngn/water/deep_water_wave_E.png create mode 100644 crawl-ref/source/rltiles/dc-dngn/water/deep_water_wave_N.png create mode 100644 crawl-ref/source/rltiles/dc-dngn/water/deep_water_wave_S.png create mode 100644 crawl-ref/source/rltiles/dc-dngn/water/deep_water_wave_W.png create mode 100644 crawl-ref/source/rltiles/dc-dngn/water/deep_water_wave_corner_NE.png create mode 100644 crawl-ref/source/rltiles/dc-dngn/water/deep_water_wave_corner_NW.png create mode 100644 crawl-ref/source/rltiles/dc-dngn/water/deep_water_wave_corner_SE.png create mode 100644 crawl-ref/source/rltiles/dc-dngn/water/deep_water_wave_corner_SW.png diff --git a/crawl-ref/source/rltiles/dc-dngn.txt b/crawl-ref/source/rltiles/dc-dngn.txt index 2a92489295..ff26bd0314 100644 --- a/crawl-ref/source/rltiles/dc-dngn.txt +++ b/crawl-ref/source/rltiles/dc-dngn.txt @@ -1002,6 +1002,18 @@ dngn_shoals_shallow_water_disturbance1 SHOALS_SHALLOW_WATER_DISTURBANCE dngn_shoals_shallow_water_disturbance2 dngn_shoals_shallow_water_disturbance3 +# corner waves (diagonals) +deep_water_wave_corner_NE WAVE_DEEP_CORNER_NE +deep_water_wave_corner_NW WAVE_DEEP_CORNER_NW +deep_water_wave_corner_SE WAVE_DEEP_CORNER_SE +deep_water_wave_corner_SW WAVE_DEEP_CORNER_SW + +# orthogonal waves +deep_water_wave_N WAVE_DEEP_N +deep_water_wave_S WAVE_DEEP_S +deep_water_wave_E WAVE_DEEP_E +deep_water_wave_W WAVE_DEEP_W + # corner waves (diagonals) shallow_water_wave_corner_NE WAVE_CORNER_NE shallow_water_wave_corner_NW WAVE_CORNER_NW diff --git a/crawl-ref/source/rltiles/dc-dngn/water/deep_water_wave_E.png b/crawl-ref/source/rltiles/dc-dngn/water/deep_water_wave_E.png new file mode 100644 index 0000000000..819526e1f7 Binary files /dev/null and b/crawl-ref/source/rltiles/dc-dngn/water/deep_water_wave_E.png differ diff --git a/crawl-ref/source/rltiles/dc-dngn/water/deep_water_wave_N.png b/crawl-ref/source/rltiles/dc-dngn/water/deep_water_wave_N.png new file mode 100644 index 0000000000..5093a00024 Binary files /dev/null and b/crawl-ref/source/rltiles/dc-dngn/water/deep_water_wave_N.png differ diff --git a/crawl-ref/source/rltiles/dc-dngn/water/deep_water_wave_S.png b/crawl-ref/source/rltiles/dc-dngn/water/deep_water_wave_S.png new file mode 100644 index 0000000000..9d7e6179ef Binary files /dev/null and b/crawl-ref/source/rltiles/dc-dngn/water/deep_water_wave_S.png differ diff --git a/crawl-ref/source/rltiles/dc-dngn/water/deep_water_wave_W.png b/crawl-ref/source/rltiles/dc-dngn/water/deep_water_wave_W.png new file mode 100644 index 0000000000..8ca03b8a5d Binary files /dev/null and b/crawl-ref/source/rltiles/dc-dngn/water/deep_water_wave_W.png differ diff --git a/crawl-ref/source/rltiles/dc-dngn/water/deep_water_wave_corner_NE.png b/crawl-ref/source/rltiles/dc-dngn/water/deep_water_wave_corner_NE.png new file mode 100644 index 0000000000..c8869eff13 Binary files /dev/null and b/crawl-ref/source/rltiles/dc-dngn/water/deep_water_wave_corner_NE.png differ diff --git a/crawl-ref/source/rltiles/dc-dngn/water/deep_water_wave_corner_NW.png b/crawl-ref/source/rltiles/dc-dngn/water/deep_water_wave_corner_NW.png new file mode 100644 index 0000000000..4a04f0b018 Binary files /dev/null and b/crawl-ref/source/rltiles/dc-dngn/water/deep_water_wave_corner_NW.png differ diff --git a/crawl-ref/source/rltiles/dc-dngn/water/deep_water_wave_corner_SE.png b/crawl-ref/source/rltiles/dc-dngn/water/deep_water_wave_corner_SE.png new file mode 100644 index 0000000000..ab44f8fd78 Binary files /dev/null and b/crawl-ref/source/rltiles/dc-dngn/water/deep_water_wave_corner_SE.png differ diff --git a/crawl-ref/source/rltiles/dc-dngn/water/deep_water_wave_corner_SW.png b/crawl-ref/source/rltiles/dc-dngn/water/deep_water_wave_corner_SW.png new file mode 100644 index 0000000000..b3a0966cae Binary files /dev/null and b/crawl-ref/source/rltiles/dc-dngn/water/deep_water_wave_corner_SW.png differ diff --git a/crawl-ref/source/tilereg.cc b/crawl-ref/source/tilereg.cc index 97e491d2f7..7c5eaaca62 100644 --- a/crawl-ref/source/tilereg.cc +++ b/crawl-ref/source/tilereg.cc @@ -281,6 +281,13 @@ void DungeonRegion::load_dungeon(unsigned int* tileb, int cx_to_gx, int cy_to_gy place_cursor(CURSOR_TUTORIAL, m_cursor[CURSOR_TUTORIAL]); } +enum wave_type +{ + WV_NONE = 0, + WV_SHALLOW, + WV_DEEP +}; + void DungeonRegion::pack_background(unsigned int bg, int x, int y) { unsigned int bg_idx = bg & TILE_FLAG_MASK; @@ -309,67 +316,102 @@ void DungeonRegion::pack_background(unsigned int bg, int x, int y) // Add wave tiles on floor adjacent to shallow water. const coord_def pos = coord_def(x + m_cx_to_gx, y + m_cy_to_gy); const dungeon_feature_type feat = env.map_knowledge(pos).feat(); - if (feat == DNGN_FLOOR || feat == DNGN_UNDISCOVERED_TRAP) + if (feat == DNGN_FLOOR || feat == DNGN_UNDISCOVERED_TRAP + || feat == DNGN_SHALLOW_WATER) { - bool north = false, south = false, east = false, west = false; - bool ne = false, nw = false, se = false, sw = false; + wave_type north = WV_NONE, south = WV_NONE, + east = WV_NONE, west = WV_NONE, + ne = WV_NONE, nw = WV_NONE, + se = WV_NONE, sw = WV_NONE; + for (radius_iterator ri(pos, 1, true, false, true); ri; ++ri) { - if (env.map_knowledge(*ri).feat() != DNGN_SHALLOW_WATER) + if (!is_terrain_seen(*ri) && !is_terrain_mapped(*ri)) continue; - if (!is_terrain_seen(*ri) && !is_terrain_mapped(*ri)) + bool shallow = false; + if (env.map_knowledge(*ri).feat() == DNGN_SHALLOW_WATER) + { + // Adjacent shallow water is only interesting for + // floor cells. + if (feat == DNGN_SHALLOW_WATER) + continue; + + shallow = true; + } + else if (env.map_knowledge(*ri).feat() != DNGN_DEEP_WATER) continue; if (ri->x == pos.x) // orthogonals { if (ri->y < pos.y) - north = true; + north = (shallow ? WV_SHALLOW : WV_DEEP); else - south = true; + south = (shallow ? WV_SHALLOW : WV_DEEP); } else if (ri->y == pos.y) { if (ri->x < pos.x) - west = true; + west = (shallow ? WV_SHALLOW : WV_DEEP); else - east = true; + east = (shallow ? WV_SHALLOW : WV_DEEP); } else // diagonals { if (ri->x < pos.x) { if (ri->y < pos.y) - nw = true; + nw = (shallow ? WV_SHALLOW : WV_DEEP); else - sw = true; + sw = (shallow ? WV_SHALLOW : WV_DEEP); } else { if (ri->y < pos.y) - ne = true; + ne = (shallow ? WV_SHALLOW : WV_DEEP); else - se = true; + se = (shallow ? WV_SHALLOW : WV_DEEP); } } } - if (north) + // First check for shallow water. + if (north == WV_SHALLOW) m_buf_dngn.add(TILE_WAVE_N, x, y); - if (south) + if (south == WV_SHALLOW) m_buf_dngn.add(TILE_WAVE_S, x, y); - if (east) + if (east == WV_SHALLOW) m_buf_dngn.add(TILE_WAVE_E, x, y); - if (west) + if (west == WV_SHALLOW) m_buf_dngn.add(TILE_WAVE_W, x, y); - if (ne && !north && !east) + + // Then check for deep water, overwriting shallow + // corner waves, if necessary. + if (north == WV_DEEP) + m_buf_dngn.add(TILE_WAVE_DEEP_N, x, y); + if (south == WV_DEEP) + m_buf_dngn.add(TILE_WAVE_DEEP_S, x, y); + if (east == WV_DEEP) + m_buf_dngn.add(TILE_WAVE_DEEP_E, x, y); + if (west == WV_DEEP) + m_buf_dngn.add(TILE_WAVE_DEEP_W, x, y); + + if (ne == WV_SHALLOW && !north && !east) m_buf_dngn.add(TILE_WAVE_CORNER_NE, x, y); - if (nw && !north && !west) + else if (ne == WV_DEEP && north != WV_DEEP && east != WV_DEEP) + m_buf_dngn.add(TILE_WAVE_DEEP_CORNER_NE, x, y); + if (nw == WV_SHALLOW && !north && !west) m_buf_dngn.add(TILE_WAVE_CORNER_NW, x, y); - if (se && !south && !east) + else if (nw == WV_DEEP && north != WV_DEEP && west != WV_DEEP) + m_buf_dngn.add(TILE_WAVE_DEEP_CORNER_NW, x, y); + if (se == WV_SHALLOW && !south && !east) m_buf_dngn.add(TILE_WAVE_CORNER_SE, x, y); - if (sw && !south && !west) + else if (se == WV_DEEP && south != WV_DEEP && east != WV_DEEP) + m_buf_dngn.add(TILE_WAVE_DEEP_CORNER_SE, x, y); + if (sw == WV_SHALLOW && !south && !west) m_buf_dngn.add(TILE_WAVE_CORNER_SW, x, y); + else if (sw == WV_DEEP && south != WV_DEEP && west != WV_DEEP) + m_buf_dngn.add(TILE_WAVE_DEEP_CORNER_SW, x, y); } } -- cgit v1.2.3-54-g00ecf