about summary refs log tree commit diff
path: root/src/game/editor/ed_layer_tiles.cpp
diff options
context:
space:
mode:
authorChoupom <andycootlapin@hotmail.fr>2011-04-19 10:34:51 +0200
committeroy <Tom_Adams@web.de>2011-05-03 18:45:42 +0200
commit0c6f187e3bc3bb617a1985b41e6fc9e4acad2319 (patch)
tree6083c52e35f5bf0acf67235021d9120c5eddcc5f /src/game/editor/ed_layer_tiles.cpp
parent694be7dfb51a9b45d63f40189fe7113c3ab0aa2a (diff)
downloadzcatch-0c6f187e3bc3bb617a1985b41e6fc9e4acad2319.tar.gz
zcatch-0c6f187e3bc3bb617a1985b41e6fc9e4acad2319.zip
renamed editor files
Diffstat (limited to 'src/game/editor/ed_layer_tiles.cpp')
-rw-r--r--src/game/editor/ed_layer_tiles.cpp460
1 files changed, 0 insertions, 460 deletions
diff --git a/src/game/editor/ed_layer_tiles.cpp b/src/game/editor/ed_layer_tiles.cpp
deleted file mode 100644
index d0c9041c..00000000
--- a/src/game/editor/ed_layer_tiles.cpp
+++ /dev/null
@@ -1,460 +0,0 @@
-/* (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.                */
-#include <base/math.h>
-
-#include <engine/client.h>
-#include <engine/graphics.h>
-#include <engine/textrender.h>
-
-#include <game/generated/client_data.h>
-#include <game/client/render.h>
-#include "ed_editor.h"
-
-#include <game/localization.h>
-
-CLayerTiles::CLayerTiles(int w, int h)
-{
-	m_Type = LAYERTYPE_TILES;
-	m_pTypeName = "Tiles";
-	m_Width = w;
-	m_Height = h;
-	m_Image = -1;
-	m_TexID = -1;
-	m_Game = 0;
-	m_Color.r = 255;
-	m_Color.g = 255;
-	m_Color.b = 255;
-	m_Color.a = 255;
-
-	m_pTiles = new CTile[m_Width*m_Height];
-	mem_zero(m_pTiles, m_Width*m_Height*sizeof(CTile));
-}
-
-CLayerTiles::~CLayerTiles()
-{
-	delete [] m_pTiles;
-}
-
-void CLayerTiles::PrepareForSave()
-{
-	for(int y = 0; y < m_Height; y++)
-		for(int x = 0; x < m_Width; x++)
-			m_pTiles[y*m_Width+x].m_Flags &= TILEFLAG_VFLIP|TILEFLAG_HFLIP|TILEFLAG_ROTATE;
-
-	if(m_Image != -1 && m_Color.a == 255)
-	{
-		for(int y = 0; y < m_Height; y++)
-			for(int x = 0; x < m_Width; x++)
-				m_pTiles[y*m_Width+x].m_Flags |= m_pEditor->m_Map.m_lImages[m_Image]->m_aTileFlags[m_pTiles[y*m_Width+x].m_Index];
-	}
-}
-
-void CLayerTiles::MakePalette()
-{
-	for(int y = 0; y < m_Height; y++)
-		for(int x = 0; x < m_Width; x++)
-			m_pTiles[y*m_Width+x].m_Index = y*16+x;
-}
-
-void CLayerTiles::Render()
-{
-	if(m_Image >= 0 && m_Image < m_pEditor->m_Map.m_lImages.size())
-		m_TexID = m_pEditor->m_Map.m_lImages[m_Image]->m_TexID;
-	Graphics()->TextureSet(m_TexID);
-	vec4 Color = vec4(m_Color.r/255.0f, m_Color.g/255.0f, m_Color.b/255.0f, m_Color.a/255.0f);
-	m_pEditor->RenderTools()->RenderTilemap(m_pTiles, m_Width, m_Height, 32.0f, Color, LAYERRENDERFLAG_OPAQUE|LAYERRENDERFLAG_TRANSPARENT);
-}
-
-int CLayerTiles::ConvertX(float x) const { return (int)(x/32.0f); }
-int CLayerTiles::ConvertY(float y) const { return (int)(y/32.0f); }
-
-void CLayerTiles::Convert(CUIRect Rect, RECTi *pOut)
-{
-	pOut->x = ConvertX(Rect.x);
-	pOut->y = ConvertY(Rect.y);
-	pOut->w = ConvertX(Rect.x+Rect.w+31) - pOut->x;
-	pOut->h = ConvertY(Rect.y+Rect.h+31) - pOut->y;
-}
-
-void CLayerTiles::Snap(CUIRect *pRect)
-{
-	RECTi Out;
-	Convert(*pRect, &Out);
-	pRect->x = Out.x*32.0f;
-	pRect->y = Out.y*32.0f;
-	pRect->w = Out.w*32.0f;
-	pRect->h = Out.h*32.0f;
-}
-
-void CLayerTiles::Clamp(RECTi *pRect)
-{
-	if(pRect->x < 0)
-	{
-		pRect->w += pRect->x;
-		pRect->x = 0;
-	}
-
-	if(pRect->y < 0)
-	{
-		pRect->h += pRect->y;
-		pRect->y = 0;
-	}
-
-	if(pRect->x+pRect->w > m_Width)
-		pRect->w = m_Width - pRect->x;
-
-	if(pRect->y+pRect->h > m_Height)
-		pRect->h = m_Height - pRect->y;
-
-	if(pRect->h < 0)
-		pRect->h = 0;
-	if(pRect->w < 0)
-		pRect->w = 0;
-}
-
-void CLayerTiles::BrushSelecting(CUIRect Rect)
-{
-	Graphics()->TextureSet(-1);
-	m_pEditor->Graphics()->QuadsBegin();
-	m_pEditor->Graphics()->SetColor(1.0f, 1.0f, 1.0f, 0.4f);
-	Snap(&Rect);
-	IGraphics::CQuadItem QuadItem(Rect.x, Rect.y, Rect.w, Rect.h);
-	m_pEditor->Graphics()->QuadsDrawTL(&QuadItem, 1);
-	m_pEditor->Graphics()->QuadsEnd();
-	char aBuf[16];
-	str_format(aBuf, sizeof(aBuf), "%d,%d", ConvertX(Rect.w), ConvertY(Rect.h));
-	TextRender()->Text(0, Rect.x+3.0f, Rect.y+3.0f, 15.0f*m_pEditor->m_WorldZoom, aBuf, -1);
-}
-
-int CLayerTiles::BrushGrab(CLayerGroup *pBrush, CUIRect Rect)
-{
-	RECTi r;
-	Convert(Rect, &r);
-	Clamp(&r);
-
-	if(!r.w || !r.h)
-		return 0;
-
-	// create new layers
-	CLayerTiles *pGrabbed = new CLayerTiles(r.w, r.h);
-	pGrabbed->m_pEditor = m_pEditor;
-	pGrabbed->m_TexID = m_TexID;
-	pGrabbed->m_Image = m_Image;
-	pGrabbed->m_Game = m_Game;
-	pBrush->AddLayer(pGrabbed);
-
-	// copy the tiles
-	for(int y = 0; y < r.h; y++)
-		for(int x = 0; x < r.w; x++)
-			pGrabbed->m_pTiles[y*pGrabbed->m_Width+x] = m_pTiles[(r.y+y)*m_Width+(r.x+x)];
-
-	return 1;
-}
-
-void CLayerTiles::FillSelection(bool Empty, CLayer *pBrush, CUIRect Rect)
-{
-	if(m_Readonly)
-		return;
-
-	int sx = ConvertX(Rect.x);
-	int sy = ConvertY(Rect.y);
-	int w = ConvertX(Rect.w);
-	int h = ConvertY(Rect.h);
-
-	CLayerTiles *pLt = static_cast<CLayerTiles*>(pBrush);
-
-	for(int y = 0; y <= h; y++)
-	{
-		for(int x = 0; x <= w; x++)
-		{
-			int fx = x+sx;
-			int fy = y+sy;
-
-			if(fx < 0 || fx >= m_Width || fy < 0 || fy >= m_Height)
-				continue;
-
-			if(Empty)
-				m_pTiles[fy*m_Width+fx].m_Index = 1;
-			else
-				m_pTiles[fy*m_Width+fx] = pLt->m_pTiles[(y*pLt->m_Width + x%pLt->m_Width) % (pLt->m_Width*pLt->m_Height)];
-		}
-	}
-	m_pEditor->m_Map.m_Modified = true;
-}
-
-void CLayerTiles::BrushDraw(CLayer *pBrush, float wx, float wy)
-{
-	if(m_Readonly)
-		return;
-
-	//
-	CLayerTiles *l = (CLayerTiles *)pBrush;
-	int sx = ConvertX(wx);
-	int sy = ConvertY(wy);
-
-	for(int y = 0; y < l->m_Height; y++)
-		for(int x = 0; x < l->m_Width; x++)
-		{
-			int fx = x+sx;
-			int fy = y+sy;
-			if(fx<0 || fx >= m_Width || fy < 0 || fy >= m_Height)
-				continue;
-
-			m_pTiles[fy*m_Width+fx] = l->m_pTiles[y*l->m_Width+x];
-		}
-	m_pEditor->m_Map.m_Modified = true;
-}
-
-void CLayerTiles::BrushFlipX()
-{
-	for(int y = 0; y < m_Height; y++)
-		for(int x = 0; x < m_Width/2; x++)
-		{
-			CTile Tmp = m_pTiles[y*m_Width+x];
-			m_pTiles[y*m_Width+x] = m_pTiles[y*m_Width+m_Width-1-x];
-			m_pTiles[y*m_Width+m_Width-1-x] = Tmp;
-		}
-
-	if(!m_Game)
-		for(int y = 0; y < m_Height; y++)
-			for(int x = 0; x < m_Width; x++)
-				m_pTiles[y*m_Width+x].m_Flags ^= m_pTiles[y*m_Width+x].m_Flags&TILEFLAG_ROTATE ? TILEFLAG_HFLIP : TILEFLAG_VFLIP;
-}
-
-void CLayerTiles::BrushFlipY()
-{
-	for(int y = 0; y < m_Height/2; y++)
-		for(int x = 0; x < m_Width; x++)
-		{
-			CTile Tmp = m_pTiles[y*m_Width+x];
-			m_pTiles[y*m_Width+x] = m_pTiles[(m_Height-1-y)*m_Width+x];
-			m_pTiles[(m_Height-1-y)*m_Width+x] = Tmp;
-		}
-
-	if(!m_Game)
-		for(int y = 0; y < m_Height; y++)
-			for(int x = 0; x < m_Width; x++)
-				m_pTiles[y*m_Width+x].m_Flags ^= m_pTiles[y*m_Width+x].m_Flags&TILEFLAG_ROTATE ? TILEFLAG_VFLIP : TILEFLAG_HFLIP;
-}
-
-void CLayerTiles::BrushRotate(float Amount)
-{
-	int Rotation = (round(360.0f*Amount/(pi*2))/90)%4;	// 0=0°, 1=90°, 2=180°, 3=270°
-	if(Rotation < 0)
-		Rotation +=4;
-
-	if(Rotation == 1 || Rotation == 3)
-	{
-		// 90° rotation
-		CTile *pTempData = new CTile[m_Width*m_Height];
-		mem_copy(pTempData, m_pTiles, m_Width*m_Height*sizeof(CTile));
-		CTile *pDst = m_pTiles;
-		for(int x = 0; x < m_Width; ++x)
-			for(int y = m_Height-1; y >= 0; --y, ++pDst)
-			{
-				*pDst = pTempData[y*m_Width+x];
-				if(!m_Game)
-				{
-					if(pDst->m_Flags&TILEFLAG_ROTATE)
-						pDst->m_Flags ^= (TILEFLAG_HFLIP|TILEFLAG_VFLIP);
-					pDst->m_Flags ^= TILEFLAG_ROTATE;
-				}
-			}
-
-		int Temp = m_Width;
-		m_Width = m_Height;
-		m_Height = Temp;
-		delete[] pTempData;
-	}
-
-	if(Rotation == 2 || Rotation == 3)
-	{
-		BrushFlipX();
-		BrushFlipY();
-	}
-}
-
-void CLayerTiles::Resize(int NewW, int NewH)
-{
-	CTile *pNewData = new CTile[NewW*NewH];
-	mem_zero(pNewData, NewW*NewH*sizeof(CTile));
-
-	// copy old data
-	for(int y = 0; y < min(NewH, m_Height); y++)
-		mem_copy(&pNewData[y*NewW], &m_pTiles[y*m_Width], min(m_Width, NewW)*sizeof(CTile));
-
-	// replace old
-	delete [] m_pTiles;
-	m_pTiles = pNewData;
-	m_Width = NewW;
-	m_Height = NewH;
-}
-
-void CLayerTiles::Shift(int Direction)
-{
-	switch(Direction)
-	{
-	case 1:
-		{
-			// left
-			for(int y = 0; y < m_Height; ++y)
-				mem_move(&m_pTiles[y*m_Width], &m_pTiles[y*m_Width+1], (m_Width-1)*sizeof(CTile));
-		}
-		break;
-	case 2:
-		{
-			// right
-			for(int y = 0; y < m_Height; ++y)
-				mem_move(&m_pTiles[y*m_Width+1], &m_pTiles[y*m_Width], (m_Width-1)*sizeof(CTile));
-		}
-		break;
-	case 4:
-		{
-			// up
-			for(int y = 0; y < m_Height-1; ++y)
-				mem_copy(&m_pTiles[y*m_Width], &m_pTiles[(y+1)*m_Width], m_Width*sizeof(CTile));
-		}
-		break;
-	case 8:
-		{
-			// down
-			for(int y = m_Height-1; y > 0; --y)
-				mem_copy(&m_pTiles[y*m_Width], &m_pTiles[(y-1)*m_Width], m_Width*sizeof(CTile));
-		}
-	}
-}
-
-void CLayerTiles::ShowInfo()
-{
-	float ScreenX0, ScreenY0, ScreenX1, ScreenY1;
-	Graphics()->GetScreen(&ScreenX0, &ScreenY0, &ScreenX1, &ScreenY1);
-	Graphics()->TextureSet(m_pEditor->Client()->GetDebugFont());
-
-	int StartY = max(0, (int)(ScreenY0/32.0f)-1);
-	int StartX = max(0, (int)(ScreenX0/32.0f)-1);
-	int EndY = min((int)(ScreenY1/32.0f)+1, m_Height);
-	int EndX = min((int)(ScreenX1/32.0f)+1, m_Width);
-
-	for(int y = StartY; y < EndY; y++)
-		for(int x = StartX; x < EndX; x++)
-		{
-			int c = x + y*m_Width;
-			if(m_pTiles[c].m_Index)
-			{
-				char aBuf[64];
-				str_format(aBuf, sizeof(aBuf), "%i", m_pTiles[c].m_Index);
-				m_pEditor->Graphics()->QuadsText(x*32, y*32, 16.0f, 1,1,1,1, aBuf);
-
-				char aFlags[4] = {	m_pTiles[c].m_Flags&TILEFLAG_VFLIP ? 'V' : ' ',
-									m_pTiles[c].m_Flags&TILEFLAG_HFLIP ? 'H' : ' ',
-									m_pTiles[c].m_Flags&TILEFLAG_ROTATE? 'R' : ' ',
-									0};
-				m_pEditor->Graphics()->QuadsText(x*32, y*32+16, 16.0f, 1,1,1,1, aFlags);
-			}
-			x += m_pTiles[c].m_Skip;
-		}
-}
-
-int CLayerTiles::RenderProperties(CUIRect *pToolBox)
-{
-	CUIRect Button;
-	pToolBox->HSplitBottom(12.0f, pToolBox, &Button);
-
-	bool InGameGroup = !find_linear(m_pEditor->m_Map.m_pGameGroup->m_lLayers.all(), this).empty();
-	if(m_pEditor->m_Map.m_pGameLayer == this)
-		InGameGroup = false;
-
-	if(InGameGroup)
-	{
-		static int s_ColclButton = 0;
-		if(m_pEditor->DoButton_Editor(&s_ColclButton, "Game tiles", 0, &Button, 0, "Constructs game tiles from this layer"))
-			m_pEditor->PopupSelectGametileOpInvoke(m_pEditor->UI()->MouseX(), m_pEditor->UI()->MouseY());
-
-		int Result = m_pEditor->PopupSelectGameTileOpResult();
-		if(Result > -1)
-		{
-			CLayerTiles *gl = m_pEditor->m_Map.m_pGameLayer;
-			int w = min(gl->m_Width, m_Width);
-			int h = min(gl->m_Height, m_Height);
-			for(int y = 0; y < h; y++)
-				for(int x = 0; x < w; x++)
-					if(m_pTiles[y*m_Width+x].m_Index)
-						gl->m_pTiles[y*gl->m_Width+x].m_Index = TILE_AIR+Result;
-
-			return 1;
-		}
-	}
-
-	enum
-	{
-		PROP_WIDTH=0,
-		PROP_HEIGHT,
-		PROP_SHIFT,
-		PROP_IMAGE,
-		PROP_COLOR,
-		NUM_PROPS,
-	};
-
-	int Color = 0;
-	Color |= m_Color.r<<24;
-	Color |= m_Color.g<<16;
-	Color |= m_Color.b<<8;
-	Color |= m_Color.a;
-
-	CProperty aProps[] = {
-		{"Width", m_Width, PROPTYPE_INT_SCROLL, 1, 1000000000},
-		{"Height", m_Height, PROPTYPE_INT_SCROLL, 1, 1000000000},
-		{"Shift", 0, PROPTYPE_SHIFT, 0, 0},
-		{"Image", m_Image, PROPTYPE_IMAGE, 0, 0},
-		{"Color", Color, PROPTYPE_COLOR, 0, 0},
-		{0},
-	};
-
-	if(m_pEditor->m_Map.m_pGameLayer == this) // remove the image and color properties if this is the game layer
-	{
-		aProps[3].m_pName = 0;
-		aProps[4].m_pName = 0;
-	}
-
-	static int s_aIds[NUM_PROPS] = {0};
-	int NewVal = 0;
-	int Prop = m_pEditor->DoProperties(pToolBox, aProps, s_aIds, &NewVal);
-	if(Prop != -1)
-		m_pEditor->m_Map.m_Modified = true;
-
-	if(Prop == PROP_WIDTH && NewVal > 1)
-		Resize(NewVal, m_Height);
-	else if(Prop == PROP_HEIGHT && NewVal > 1)
-		Resize(m_Width, NewVal);
-	else if(Prop == PROP_SHIFT)
-		Shift(NewVal);
-	else if(Prop == PROP_IMAGE)
-	{
-		if (NewVal == -1)
-		{
-			m_TexID = -1;
-			m_Image = -1;
-		}
-		else
-			m_Image = NewVal%m_pEditor->m_Map.m_lImages.size();
-	}
-	else if(Prop == PROP_COLOR)
-	{
-		m_Color.r = (NewVal>>24)&0xff;
-		m_Color.g = (NewVal>>16)&0xff;
-		m_Color.b = (NewVal>>8)&0xff;
-		m_Color.a = NewVal&0xff;
-	}
-
-	return 0;
-}
-
-
-void CLayerTiles::ModifyImageIndex(INDEX_MODIFY_FUNC Func)
-{
-	Func(&m_Image);
-}
-
-void CLayerTiles::ModifyEnvelopeIndex(INDEX_MODIFY_FUNC Func)
-{
-}