|
|
|
@ -10,12 +10,45 @@ void Editor::Update(float fElapsedTime){ |
|
|
|
|
vf2d center = { -(float)MAP_SIZE.x / 2 * GRID_SIZE.x + game->ScreenWidth()/2 , -(float)MAP_SIZE.y / 2 * GRID_SIZE.y + game->ScreenHeight()/2 }; |
|
|
|
|
for (int y = 0; y < MAP_SIZE.y; y++) { |
|
|
|
|
for (int x = 0; x < MAP_SIZE.x; x++) { |
|
|
|
|
Tile&t = map[y][x]; |
|
|
|
|
vf2d squarePos = vf2d{ (float)x,(float)y }*GRID_SIZE + center; |
|
|
|
|
if (game->GetMouseX() >= squarePos.x && game->GetMouseX() <= squarePos.x + GRID_SIZE.x && |
|
|
|
|
game->GetMouseY() >= squarePos.y && game->GetMouseY() <= squarePos.y + GRID_SIZE.y) { |
|
|
|
|
if (game->GetKey(W).bPressed) { |
|
|
|
|
t.wallN = !t.wallN; |
|
|
|
|
if (y > 0) { |
|
|
|
|
Tile& neighbor = map[y - 1][x]; |
|
|
|
|
neighbor.wallS = t.wallN; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
if (game->GetKey(D).bPressed) { |
|
|
|
|
t.wallE = !t.wallE; |
|
|
|
|
if (x < MAP_SIZE.x-1) { |
|
|
|
|
Tile& neighbor = map[y][x+1]; |
|
|
|
|
neighbor.wallW = t.wallE; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
if (game->GetKey(S).bPressed) { |
|
|
|
|
t.wallS = !t.wallS; |
|
|
|
|
if (y < MAP_SIZE.y - 1) { |
|
|
|
|
Tile& neighbor = map[y+1][x]; |
|
|
|
|
neighbor.wallN = t.wallS; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
if (game->GetKey(A).bPressed) { |
|
|
|
|
t.wallW = !t.wallW; |
|
|
|
|
if (x > 0) { |
|
|
|
|
Tile& neighbor = map[y][x-1]; |
|
|
|
|
neighbor.wallE = t.wallW; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
game->FillRectDecal(squarePos, GRID_SIZE, { 0,0,255,64 }); |
|
|
|
|
} |
|
|
|
|
game->DrawRectDecal(squarePos,GRID_SIZE); |
|
|
|
|
//game->DrawRectDecal(squarePos,GRID_SIZE,{64,64,64});
|
|
|
|
|
game->DrawLineDecal(squarePos,{squarePos.x+GRID_SIZE.x,squarePos.y},t.wallN?WHITE:Pixel{64,64,64}); |
|
|
|
|
game->DrawLineDecal({ squarePos.x + GRID_SIZE.x,squarePos.y }, { squarePos.x + GRID_SIZE.x,squarePos.y + GRID_SIZE.y }, t.wallE ? WHITE : Pixel{ 64,64,64 }); |
|
|
|
|
game->DrawLineDecal({ squarePos.x + GRID_SIZE.x,squarePos.y + GRID_SIZE.y }, { squarePos.x,squarePos.y + GRID_SIZE.y }, t.wallS ? WHITE : Pixel{ 64,64,64 }); |
|
|
|
|
game->DrawLineDecal({ squarePos.x,squarePos.y + GRID_SIZE.y }, squarePos, t.wallW ? WHITE : Pixel{ 64,64,64 }); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
@ -66,8 +99,13 @@ void Editor::LoadLevel() { |
|
|
|
|
newTile.blink = (map_data & 0b1000000000000000) >> 15; |
|
|
|
|
newTile.facingDir = FacingDirection((map_data & 0b0110000000000000) >> 13); |
|
|
|
|
newTile.enemyId = EnemyID((map_data & 0b0001111110000000) >> 7); |
|
|
|
|
newTile.spawnWave = (map_data & 0b1110000) >> 4; |
|
|
|
|
newTile.walls = map_data & 0b1111; |
|
|
|
|
newTile.wave1 = (map_data & 0b10000) >> 4; |
|
|
|
|
newTile.wave2 = (map_data & 0b100000) >> 5; |
|
|
|
|
newTile.wave3 = (map_data & 0b1000000) >> 6; |
|
|
|
|
newTile.wallN = (map_data & 0b1000) >> 3; |
|
|
|
|
newTile.wallE = (map_data & 0b100) >> 2; |
|
|
|
|
newTile.wallS = (map_data & 0b10) >> 1; |
|
|
|
|
newTile.wallW = (map_data & 0b1); |
|
|
|
|
row.push_back(newTile); |
|
|
|
|
} |
|
|
|
|
map.push_back(row); |
|
|
|
|