OpenGL游戏制作之路[第六篇 游戏控件之游戏地图编辑(1)]---2D游戏---(注:此版本作者处于探索阶段,希望能得到读者的指教和建议)

前言

上次显示了地图,只不过地图上只有地面贴图,这次要在上面显示更多的元素,并且用鼠标来设置地图。这样编辑器大部分工作就完成了。

正题

要让GMap能响应鼠标事件,所以新建一个类从GMap继承,就叫EMap,这个地图中,当鼠标点击一个元素后,回记录该元素,然后在地图上点击的时候,就会放置该元素。

class EMap : public GMap
{
public:
	EMap();
	//鼠标在控件上
	bool isMouseMoveOn();
	//鼠标左键按下
	bool isMouseLeftButtonDown();
	//设置元素
	void setBlock(int x,int y,int z,int ShaderIndex,int VertexIndex,int TextureIndex);
	~EMap();
};

这是EMap类的设计。在原来地图的基础上增加了事件响应。

地图被修改的关键代码就是设置地图块信息部分。

void EMap::setBlock(int x,int y,int z,int ShaderIndex,int VertexIndex,GLTexture * texture)
{
	
		
		GLTexture *t =&map[x][y][z] ;
		 *t = *texture;
		map[x][y][z].setProgram(GLSTD_TOOLS::SHADER[ShaderIndex]);//写死代码
		map[x][y][z].setPos(vec3(x*32+pos.x,y*32+pos.y,z));
		//map[x][y][z].addAnim(GLSTD_TOOLS::TEXTURE[TextureIndex]);
		map[x][y][z].setCover(0);
		map[x][y][z].setMesh(GLSTD_TOOLS::VERTEX[VertexIndex].VAO,GLSTD_TOOLS::VERTEX[VertexIndex].zoom,GLSTD_TOOLS::VERTEX[VertexIndex].size);
}

并且在GameBlockButton类中加入了记录元素下标的,但这个还不是最终方案,先看效果。

编辑效果

现在图片都是静态的,往后会有动态效果。

源码

本次的源码和文件

发布了64 篇原创文章 · 获赞 16 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/ARTELE/article/details/87871696
今日推荐