MCPcopy Create free account
hub / github.com/AbyssEngine/AbyssEngineOld / render

Method render

src/Abyss/MapEngine/MapEngine.cpp:101–170  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

99}
100
101void MapEngine::render() const {
102 const auto &renderer = AbyssEngine::getInstance().getRenderer();
103
104 SDL_SetRenderDrawColor(renderer, 0, 0, 0, 255);
105 SDL_RenderClear(renderer);
106
107 for (int tileY = 0; tileY < _height; ++tileY) {
108 for (int tileX = 0; tileX < _width; ++tileX) {
109 const auto posX = (tileX - tileY) * 80;
110 const auto posY = (tileX + tileY) * 40;
111
112 // Draw lower walls
113 for (const auto &layer : _layers.wall) {
114 if (const auto &tile = layer[tileX + tileY * _width];
115 tile.dt1Ref && tile.type >= DataTypes::TileType::LowerWallsEquivalentToLeftWall)
116 tile.dt1Ref->drawTile(posX - _cameraPosition.x, posY - _cameraPosition.y, tile.dt1Index);
117 }
118
119 // Draw floors
120 for (const auto &layer : _layers.floor) {
121 if (const auto &tile = layer[tileX + tileY * _width]; tile.dt1Ref)
122 tile.dt1Ref->drawTile(posX - _cameraPosition.x, posY - _cameraPosition.y, tile.dt1Index);
123 }
124 // Draw shadows
125 for (const auto &layer : _layers.shadow) {
126 if (const auto &tile = layer[tileX + tileY * _width]; tile.dt1Ref)
127 tile.dt1Ref->drawTile(posX - _cameraPosition.x, posY - _cameraPosition.y, tile.dt1Index);
128 }
129 }
130 }
131
132 for (int tileY = 0; tileY < _height; ++tileY) {
133 for (int tileX = 0; tileX < _width; ++tileX) {
134 const auto posX = (tileX - tileY) * 80;
135 const auto posY = (tileX + tileY) * 40;
136
137 // Draw upper
138 for (const auto &layer : _layers.wall) {
139 if (const auto &tile = layer[tileX + tileY * _width];
140 tile.dt1Ref && ((tile.type >= DataTypes::TileType::LeftWall && tile.type <=
141 DataTypes::TileType::RightWallWithDoor) || (
142 tile.type >= DataTypes::TileType::PillarsColumnsAndStandaloneObjects && tile.type <=
143 DataTypes::TileType::Tree))) {
144 tile.dt1Ref->drawTile(posX - _cameraPosition.x, posY - _cameraPosition.y + 96, tile.dt1Index);
145
146 // Super special condition. This was fun to figure out :(
147 if (tile.type == DataTypes::TileType::RightPartOfNorthCornerWall)
148 tile.dt1Ref->drawTile(posX - _cameraPosition.x, posY - _cameraPosition.y + 96, tile.dt1IndexAlt);
149 }
150
151 }
152
153 }
154 }
155
156 for (int tileY = 0; tileY < _height; ++tileY) {
157 for (int tileX = 0; tileX < _width; ++tileX) {
158 const auto posX = (tileX - tileY) * 80;

Callers

nothing calls this directly

Calls 2

getRendererMethod · 0.80
drawTileMethod · 0.80

Tested by

no test coverage detected