summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--src/game.cpp12
-rw-r--r--src/game.h1
2 files changed, 7 insertions, 6 deletions
diff --git a/src/game.cpp b/src/game.cpp index fc57acc..e9a9fbe 100644 --- a/src/game.cpp +++ b/src/game.cpp
@@ -55,7 +55,7 @@ void Game::tick(
55 bool invert, 55 bool invert,
56 bool onlyDark) 56 bool onlyDark)
57{ 57{
58 std::vector<MapData> temp(map.data()); 58 mapDoubleBuffer = map.data();
59 59
60 for (int y = map.getTop(); y < map.getBottom(); y++) 60 for (int y = map.getTop(); y < map.getBottom(); y++)
61 { 61 {
@@ -91,19 +91,19 @@ void Game::tick(
91 int tempIndex = map.getTrueX(x) + map.getTrueY(y) * map.getWidth(); 91 int tempIndex = map.getTrueX(x) + map.getTrueY(y) * map.getWidth();
92 if (count >= 5) 92 if (count >= 5)
93 { 93 {
94 temp[tempIndex].tile = Tile::Wall; 94 mapDoubleBuffer[tempIndex].tile = Tile::Wall;
95 } else { 95 } else {
96 temp[tempIndex].tile = Tile::Floor; 96 mapDoubleBuffer[tempIndex].tile = Tile::Floor;
97 } 97 }
98 98
99 if (temp[tempIndex].tile != map.at(x,y).tile) { 99 if (mapDoubleBuffer[tempIndex].tile != map.at(x,y).tile) {
100 temp[tempIndex].dirtyRender = true; 100 mapDoubleBuffer[tempIndex].dirtyRender = true;
101 dirtyRender = true; 101 dirtyRender = true;
102 } 102 }
103 } 103 }
104 } 104 }
105 105
106 map.data() = std::move(temp); 106 std::swap(map.data(), mapDoubleBuffer);
107} 107}
108 108
109void Game::tick(bool onlyDark) 109void Game::tick(bool onlyDark)
diff --git a/src/game.h b/src/game.h index 93ca81a..f307156 100644 --- a/src/game.h +++ b/src/game.h
@@ -68,6 +68,7 @@ public:
68 bool dirtyRender = true; 68 bool dirtyRender = true;
69 size_t numLamps = 0; 69 size_t numLamps = 0;
70 size_t numDust = 0; 70 size_t numDust = 0;
71 std::vector<MapData> mapDoubleBuffer;
71 72
72 int player_x = 0; 73 int player_x = 0;
73 int player_y = 0; 74 int player_y = 0;