ddnet/src/game/editor/layer_game.cpp

61 lines
1.8 KiB
C++
Raw Normal View History

2010-11-20 10:37:14 +00:00
/* (c) Magnus Auvinen. See licence.txt in the root of the distribution for more information. */
/* If you are missing that file, acquire a complete release at teeworlds.com. */
2011-04-19 08:34:51 +00:00
#include "editor.h"
2008-01-12 12:27:55 +00:00
2010-05-29 07:25:38 +00:00
CLayerGame::CLayerGame(int w, int h)
: CLayerTiles(w, h)
2008-01-12 12:27:55 +00:00
{
2011-07-12 01:14:46 +00:00
str_copy(m_aName, "Game", sizeof(m_aName));
2010-05-29 07:25:38 +00:00
m_Game = 1;
2008-01-12 12:27:55 +00:00
}
2010-05-29 07:25:38 +00:00
CLayerGame::~CLayerGame()
2008-01-12 12:27:55 +00:00
{
}
CTile CLayerGame::GetTile(int x, int y, bool force)
{
if(!force && m_pEditor->m_Map.m_pFrontLayer && GetTile(x, y, true).m_Index == TILE_NOHOOK && m_pEditor->m_Map.m_pFrontLayer->GetTile(x, y, true).m_Index == TILE_THROUGH_CUT)
{
CTile throughcut = {TILE_THROUGH_CUT, 0, 0, 0};
return throughcut;
} else {
return m_pTiles[y*m_Width+x];
}
}
void CLayerGame::SetTile(int x, int y, CTile tile, bool force)
{
if(!force && tile.m_Index == TILE_THROUGH_CUT) {
if(!m_pEditor->m_Map.m_pFrontLayer) {
CLayer *l = new CLayerFront(m_Width, m_Height);
m_pEditor->m_Map.MakeFrontLayer(l);
m_pEditor->m_Map.m_lGroups[m_pEditor->m_SelectedGroup]->AddLayer(l);
}
CTile nohook = {TILE_NOHOOK, 0, 0, 0};
SetTile(x, y, nohook, true);
CTile throughcut = {TILE_THROUGH_CUT, 0, 0, 0};
m_pEditor->m_Map.m_pFrontLayer->SetTile(x, y, throughcut, true);
} else {
if(!force && m_pEditor->m_Map.m_pFrontLayer && m_pEditor->m_Map.m_pFrontLayer->GetTile(x, y, true).m_Index == TILE_THROUGH_CUT) {
CTile air = {TILE_AIR, 0, 0, 0};
m_pEditor->m_Map.m_pFrontLayer->SetTile(x, y, air, true);
}
// set normal game tile
if(m_pEditor->m_AllowPlaceUnusedTiles || IsValidGameTile(tile.m_Index)) {
m_pTiles[y*m_Width+x] = tile;
} else {
CTile air = {TILE_AIR, 0, 0, 0};
SetTile(x, y, air);
}
}
}
2010-05-29 07:25:38 +00:00
int CLayerGame::RenderProperties(CUIRect *pToolbox)
2008-01-12 12:27:55 +00:00
{
2010-05-29 07:25:38 +00:00
int r = CLayerTiles::RenderProperties(pToolbox);
m_Image = -1;
2008-01-13 22:03:32 +00:00
return r;
2008-01-12 12:27:55 +00:00
}