From f1467c4c3ee524fd578d2a9979ebc935a443ea44 Mon Sep 17 00:00:00 2001 From: Joachim Meyer Date: Sat, 7 Mar 2015 22:06:33 +0100 Subject: [PATCH 1/4] Fix the whole project to use addVertexWithUV instead of addVertex. Exit Game closes the game now.. --- Scripts/CharPicker.lua | 4 +- Scripts/Creature.lua | 70 +++++++++++----------- Scripts/Level.lua | 128 ++++++++++++++++++++--------------------- Scripts/MainMenu.lua | 3 + Scripts/Prop.lua | 12 ++-- 5 files changed, 110 insertions(+), 107 deletions(-) diff --git a/Scripts/CharPicker.lua b/Scripts/CharPicker.lua index ae9bd75..7f74479 100644 --- a/Scripts/CharPicker.lua +++ b/Scripts/CharPicker.lua @@ -1,7 +1,7 @@ -- Character selection screen class "CharPicker" (Scene) - + function CharPicker:CharPicker() Scene.Scene(self, Scene.SCENE_3D) self.pickerScreen = Scene(Scene.SCENE_2D) @@ -22,7 +22,7 @@ function CharPicker:CharPicker() self.pickerScreen.enabled = false - self.ambientColor.r = 1 + self.ambientColor.r = 0.9 self.ambientColor.g = 1 self.ambientColor.b = 1 diff --git a/Scripts/Creature.lua b/Scripts/Creature.lua index 8cf1faa..9e77f9b 100644 --- a/Scripts/Creature.lua +++ b/Scripts/Creature.lua @@ -73,7 +73,7 @@ function Creature:Creature(creatureIndex) self.zAccel = 0 self.shadow = ScenePrimitive(ScenePrimitive.TYPE_PLANE, 0.08,0.08,0) - self.shadow:setPosition(0.0, 0.001, 0.00) + self.shadow:setPosition(scale*0.5, 0.001, 0.00) self.shadow:setColor(1,1,1,0.78) self.shadow.depthWrite = false self.shadow:setMaterialByName("Shadow", Services.ResourceManager:getGlobalPool()) @@ -130,13 +130,13 @@ function Creature:Creature(creatureIndex) self.baseXScale = 6 - bodyMesh:addVertex((i*self.levelScale)+scale,0,(j*scale),1,0) - bodyMesh:addVertex((i*scale)+scale,sheight,(j*scale),1,1) - bodyMesh:addVertex((i*scale),sheight,(j*scale),0,1) + bodyMesh:addVertexWithUV((i*self.levelScale)+scale,0,(j*scale),1,0) + bodyMesh:addVertexWithUV((i*scale)+scale,sheight,(j*scale),1,1) + bodyMesh:addVertexWithUV((i*scale),sheight,(j*scale),0,1) - bodyMesh:addVertex((i*scale),0,(j*scale),0,0) - bodyMesh:addVertex((i*scale)+scale,0,(j*scale),1,0) - bodyMesh:addVertex((i*scale),sheight,(j*scale),0,1) + bodyMesh:addVertexWithUV((i*scale),0,(j*scale),0,0) + bodyMesh:addVertexWithUV((i*scale)+scale,0,(j*scale),1,0) + bodyMesh:addVertexWithUV((i*scale),sheight,(j*scale),0,1) bodyMesh:calculateNormals() @@ -146,19 +146,19 @@ function Creature:Creature(creatureIndex) bodyMesh = Mesh(Mesh.TRI_MESH) bodyMesh.indexedMesh = false - bodyMesh:addVertex((i*self.levelScale)+scale,0,(j*scale),0,0) - bodyMesh:addVertex((i*scale)+scale,sheight,(j*scale),0,1) - bodyMesh:addVertex((i*scale),sheight,(j*scale),1,1) + bodyMesh:addVertexWithUV((i*self.levelScale)+scale,0,(j*scale),0,0) + bodyMesh:addVertexWithUV((i*scale)+scale,sheight,(j*scale),0,1) + bodyMesh:addVertexWithUV((i*scale),sheight,(j*scale),1,1) - bodyMesh:addVertex((i*scale),0,(j*scale),1,0) - bodyMesh:addVertex((i*scale)+scale,0,(j*scale),0,0) - bodyMesh:addVertex((i*scale),sheight,(j*scale),1,1) + bodyMesh:addVertexWithUV((i*scale),0,(j*scale),1,0) + bodyMesh:addVertexWithUV((i*scale)+scale,0,(j*scale),0,0) + bodyMesh:addVertexWithUV((i*scale),sheight,(j*scale),1,1) bodyMesh:calculateNormals() self.lBody = SceneMesh.SceneMeshFromMesh(bodyMesh) - self.lBody:Translate(0,-self.levelScale,0) - self.rBody:Translate(0,-self.levelScale,0) + self.lBody:Translate(-scale,-self.levelScale,0) + self.rBody:Translate(-scale,-self.levelScale,0) self.lBody:setMaterialByName("DragonBody", Services.ResourceManager:getGlobalPool()) self.rBody:setMaterialByName("DragonBody", Services.ResourceManager:getGlobalPool()) @@ -167,13 +167,13 @@ function Creature:Creature(creatureIndex) --self.y = self.levelScale*4*0.5 else - bodyMesh:addVertex((i*scale)+scale,0,(j*scale),(indexX * cellSizeX) + cellSizeX,indexY*cellSizeY) - bodyMesh:addVertex((i*scale)+scale,sheight,(j*scale),(indexX * cellSizeX) + cellSizeX,(indexY * cellSizeY) + cellSizeY) - bodyMesh:addVertex((i*scale),sheight,(j*scale),indexX*cellSizeX,(indexY * cellSizeY) + cellSizeY) + bodyMesh:addVertexWithUV((i*scale)+scale,0,(j*scale),(indexX * cellSizeX) + cellSizeX,indexY*cellSizeY) + bodyMesh:addVertexWithUV((i*scale)+scale,sheight,(j*scale),(indexX * cellSizeX) + cellSizeX,(indexY * cellSizeY) + cellSizeY) + bodyMesh:addVertexWithUV((i*scale),sheight,(j*scale),indexX*cellSizeX,(indexY * cellSizeY) + cellSizeY) - bodyMesh:addVertex((i*scale),0,(j*scale),(indexX * cellSizeX),(indexY * cellSizeY)) - bodyMesh:addVertex((i*scale)+scale,0,(j*scale),(indexX * cellSizeX)+cellSizeX,(indexY * cellSizeY)) - bodyMesh:addVertex((i*scale),sheight,(j*scale),(indexX * cellSizeX),(indexY * cellSizeY)+cellSizeY) + bodyMesh:addVertexWithUV((i*scale),0,(j*scale),(indexX * cellSizeX),(indexY * cellSizeY)) + bodyMesh:addVertexWithUV((i*scale)+scale,0,(j*scale),(indexX * cellSizeX)+cellSizeX,(indexY * cellSizeY)) + bodyMesh:addVertexWithUV((i*scale),sheight,(j*scale),(indexX * cellSizeX),(indexY * cellSizeY)+cellSizeY) bodyMesh:calculateNormals() self.rBody = SceneMesh.SceneMeshFromMesh(bodyMesh) @@ -184,19 +184,19 @@ function Creature:Creature(creatureIndex) bodyMesh = Mesh(Mesh.TRI_MESH) bodyMesh.indexedMesh = false - bodyMesh:addVertex((i*scale)+scale,0,(j*scale),(indexX * cellSizeX) - cellSizeX,indexY*cellSizeY) - bodyMesh:addVertex((i*scale)+scale,sheight,(j*scale),(indexX * cellSizeX) - cellSizeX,(indexY * cellSizeY) + cellSizeY) - bodyMesh:addVertex((i*scale),sheight,(j*scale),indexX*cellSizeX,(indexY * cellSizeY) + cellSizeY) + bodyMesh:addVertexWithUV((i*scale)+scale,0,(j*scale),(indexX * cellSizeX) - cellSizeX,indexY*cellSizeY) + bodyMesh:addVertexWithUV((i*scale)+scale,sheight,(j*scale),(indexX * cellSizeX) - cellSizeX,(indexY * cellSizeY) + cellSizeY) + bodyMesh:addVertexWithUV((i*scale),sheight,(j*scale),indexX*cellSizeX,(indexY * cellSizeY) + cellSizeY) - bodyMesh:addVertex((i*scale),0,(j*scale),(indexX * cellSizeX),(indexY * cellSizeY)) - bodyMesh:addVertex((i*scale)+scale,0,(j*scale),(indexX * cellSizeX)-cellSizeX,(indexY * cellSizeY)) - bodyMesh:addVertex((i*scale),sheight,(j*scale),(indexX * cellSizeX),(indexY * cellSizeY)+cellSizeY) + bodyMesh:addVertexWithUV((i*scale),0,(j*scale),(indexX * cellSizeX),(indexY * cellSizeY)) + bodyMesh:addVertexWithUV((i*scale)+scale,0,(j*scale),(indexX * cellSizeX)-cellSizeX,(indexY * cellSizeY)) + bodyMesh:addVertexWithUV((i*scale),sheight,(j*scale),(indexX * cellSizeX),(indexY * cellSizeY)+cellSizeY) bodyMesh:calculateNormals() self.lBody = SceneMesh.SceneMeshFromMesh(bodyMesh) - self.lBody:Translate(0,0,0) - self.rBody:Translate(0,0,0) + self.lBody:Translate(-scale,0,0) + self.rBody:Translate(-scale,0,0) self.lBody:setMaterialByName("Creature", Services.ResourceManager:getGlobalPool()) self.rBody:setMaterialByName("Creature", Services.ResourceManager:getGlobalPool()) @@ -218,13 +218,13 @@ function Creature:Creature(creatureIndex) local shieldMesh = Mesh(Mesh.TRI_MESH) shieldMesh.indexedMesh = false - shieldMesh:addVertex((i*self.levelScale)+scale,0,(j*scale),1,0) - shieldMesh:addVertex((i*scale)+scale,sheight,(j*scale),1,1) - shieldMesh:addVertex((i*scale),sheight,(j*scale),0,1) + shieldMesh:addVertexWithUV((i*self.levelScale)+scale,0,(j*scale),1,0) + shieldMesh:addVertexWithUV((i*scale)+scale,sheight,(j*scale),1,1) + shieldMesh:addVertexWithUV((i*scale),sheight,(j*scale),0,1) - shieldMesh:addVertex((i*scale),0,(j*scale),0,0) - shieldMesh:addVertex((i*scale)+scale,0,(j*scale),1,0) - shieldMesh:addVertex((i*scale),sheight,(j*scale),0,1) + shieldMesh:addVertexWithUV((i*scale),0,(j*scale),0,0) + shieldMesh:addVertexWithUV((i*scale)+scale,0,(j*scale),1,0) + shieldMesh:addVertexWithUV((i*scale),sheight,(j*scale),0,1) shieldMesh:calculateNormals() diff --git a/Scripts/Level.lua b/Scripts/Level.lua index 4f65a40..f9a4b0d 100644 --- a/Scripts/Level.lua +++ b/Scripts/Level.lua @@ -33,13 +33,13 @@ function Level:createFloorTile(mesh,x,y,textureID) local stepX = 0.0625 local offsetX = texID * stepX - mesh:addVertex((x*self.levelScale),0,(y*self.levelScale)+self.levelScale,offsetX,0) - mesh:addVertex((x*self.levelScale)+self.levelScale,0,(y*self.levelScale)+self.levelScale,offsetX+stepX,0) - mesh:addVertex((x*self.levelScale)+self.levelScale,0,(y*self.levelScale),offsetX+stepX,1) + mesh:addVertexWithUV((x*self.levelScale),0,(y*self.levelScale)+self.levelScale,offsetX,0) + mesh:addVertexWithUV((x*self.levelScale)+self.levelScale,0,(y*self.levelScale)+self.levelScale,offsetX+stepX,0) + mesh:addVertexWithUV((x*self.levelScale)+self.levelScale,0,(y*self.levelScale),offsetX+stepX,1) - mesh:addVertex((x*self.levelScale),0,(y*self.levelScale)+self.levelScale,offsetX, 0) - mesh:addVertex((x*self.levelScale)+self.levelScale,0,(y*self.levelScale),offsetX+stepX, 1) - mesh:addVertex((x*self.levelScale),0,(y*self.levelScale),offsetX, 1) + mesh:addVertexWithUV((x*self.levelScale),0,(y*self.levelScale)+self.levelScale,offsetX, 0) + mesh:addVertexWithUV((x*self.levelScale)+self.levelScale,0,(y*self.levelScale),offsetX+stepX, 1) + mesh:addVertexWithUV((x*self.levelScale),0,(y*self.levelScale),offsetX, 1) end function Level:createHoleTile(mesh,x,y) @@ -52,39 +52,39 @@ function Level:createHoleTile(mesh,x,y) self.sheight = self.sheight * -0.5 if self.worldData[x][y-1] ~= 9 then - mesh:addVertex((x*self.levelScale),self.sheight,(y*self.levelScale),offsetX,0) - mesh:addVertex((x*self.levelScale)+self.levelScale,self.sheight,(y*self.levelScale),offsetX, 1) - mesh:addVertex((x*self.levelScale)+self.levelScale,0,(y*self.levelScale),offsetX+stepX, 0) - mesh:addVertex((x*self.levelScale),self.sheight,(y*self.levelScale),offsetX, 1) - mesh:addVertex((x*self.levelScale)+self.levelScale,0,(y*self.levelScale),offsetX+stepX,1) - mesh:addVertex((x*self.levelScale),0,(y*self.levelScale),offsetX+stepX,0) + mesh:addVertexWithUV((x*self.levelScale),self.sheight,(y*self.levelScale),offsetX,0) + mesh:addVertexWithUV((x*self.levelScale)+self.levelScale,self.sheight,(y*self.levelScale),offsetX, 1) + mesh:addVertexWithUV((x*self.levelScale)+self.levelScale,0,(y*self.levelScale),offsetX+stepX, 0) + mesh:addVertexWithUV((x*self.levelScale),self.sheight,(y*self.levelScale),offsetX, 1) + mesh:addVertexWithUV((x*self.levelScale)+self.levelScale,0,(y*self.levelScale),offsetX+stepX,1) + mesh:addVertexWithUV((x*self.levelScale),0,(y*self.levelScale),offsetX+stepX,0) end if self.worldData[x][y+1] ~= 9 then - mesh:addVertex((x*self.levelScale)+self.levelScale,0,(y*self.levelScale)+self.levelScale,offsetX, 1) - mesh:addVertex((x*self.levelScale)+self.levelScale,self.sheight,(y*self.levelScale)+self.levelScale,offsetX+stepX, 1) - mesh:addVertex((x*self.levelScale),self.sheight,(y*self.levelScale)+self.levelScale,offsetX+stepX, 0) - mesh:addVertex((x*self.levelScale),self.sheight,(y*self.levelScale)+self.levelScale,offsetX+stepX, 0) - mesh:addVertex((x*self.levelScale)+self.levelScale,0,(y*self.levelScale)+self.levelScale,offsetX,1) - mesh:addVertex((x*self.levelScale),0,(y*self.levelScale)+self.levelScale,offsetX, 0) + mesh:addVertexWithUV((x*self.levelScale)+self.levelScale,0,(y*self.levelScale)+self.levelScale,offsetX, 1) + mesh:addVertexWithUV((x*self.levelScale)+self.levelScale,self.sheight,(y*self.levelScale)+self.levelScale,offsetX+stepX, 1) + mesh:addVertexWithUV((x*self.levelScale),self.sheight,(y*self.levelScale)+self.levelScale,offsetX+stepX, 0) + mesh:addVertexWithUV((x*self.levelScale),self.sheight,(y*self.levelScale)+self.levelScale,offsetX+stepX, 0) + mesh:addVertexWithUV((x*self.levelScale)+self.levelScale,0,(y*self.levelScale)+self.levelScale,offsetX,1) + mesh:addVertexWithUV((x*self.levelScale),0,(y*self.levelScale)+self.levelScale,offsetX, 0) end if self.worldData[x-1][y] ~= 9 then - mesh:addVertex((x*self.levelScale),0,(y*self.levelScale)+self.levelScale,offsetX, 1) - mesh:addVertex((x*self.levelScale),self.sheight,(y*self.levelScale)+self.levelScale,offsetX+stepX, 1) - mesh:addVertex((x*self.levelScale),self.sheight,(y*self.levelScale),offsetX+stepX, 0) - mesh:addVertex((x*self.levelScale),0,(y*self.levelScale),offsetX, 0) - mesh:addVertex((x*self.levelScale),0,(y*self.levelScale)+self.levelScale,offsetX,1) - mesh:addVertex((x*self.levelScale),self.sheight,(y*self.levelScale),offsetX+stepX, 0) + mesh:addVertexWithUV((x*self.levelScale),0,(y*self.levelScale)+self.levelScale,offsetX, 1) + mesh:addVertexWithUV((x*self.levelScale),self.sheight,(y*self.levelScale)+self.levelScale,offsetX+stepX, 1) + mesh:addVertexWithUV((x*self.levelScale),self.sheight,(y*self.levelScale),offsetX+stepX, 0) + mesh:addVertexWithUV((x*self.levelScale),0,(y*self.levelScale),offsetX, 0) + mesh:addVertexWithUV((x*self.levelScale),0,(y*self.levelScale)+self.levelScale,offsetX,1) + mesh:addVertexWithUV((x*self.levelScale),self.sheight,(y*self.levelScale),offsetX+stepX, 0) end if self.worldData[x+1][y] ~= 9 then - mesh:addVertex((x*self.levelScale)+self.levelScale,self.sheight,(y*self.levelScale),offsetX+stepX,0) - mesh:addVertex((x*self.levelScale)+self.levelScale,self.sheight,(y*self.levelScale)+self.levelScale,offsetX+stepX,1) - mesh:addVertex((x*self.levelScale)+self.levelScale,0,(y*self.levelScale)+self.levelScale,offsetX,1) - mesh:addVertex((x*self.levelScale)+self.levelScale,self.sheight,(y*self.levelScale),offsetX+stepX,0) - mesh:addVertex((x*self.levelScale)+self.levelScale,0,(y*self.levelScale)+self.levelScale,offsetX,1) - mesh:addVertex((x*self.levelScale)+self.levelScale,0,(y*self.levelScale),offsetX,0) + mesh:addVertexWithUV((x*self.levelScale)+self.levelScale,self.sheight,(y*self.levelScale),offsetX+stepX,0) + mesh:addVertexWithUV((x*self.levelScale)+self.levelScale,self.sheight,(y*self.levelScale)+self.levelScale,offsetX+stepX,1) + mesh:addVertexWithUV((x*self.levelScale)+self.levelScale,0,(y*self.levelScale)+self.levelScale,offsetX,1) + mesh:addVertexWithUV((x*self.levelScale)+self.levelScale,self.sheight,(y*self.levelScale),offsetX+stepX,0) + mesh:addVertexWithUV((x*self.levelScale)+self.levelScale,0,(y*self.levelScale)+self.levelScale,offsetX,1) + mesh:addVertexWithUV((x*self.levelScale)+self.levelScale,0,(y*self.levelScale),offsetX,0) end self.sheight = oldheight @@ -95,43 +95,43 @@ function Level:createWallTile(mesh,x,y,textureID) local stepX = 0.0625 local offsetX = 1 * stepX - mesh:addVertex((x*self.levelScale),self.sheight,(y*self.levelScale)+self.levelScale,offsetX,0) - mesh:addVertex((x*self.levelScale)+self.levelScale,self.sheight,(y*self.levelScale)+self.levelScale,offsetX+stepX,0) - mesh:addVertex((x*self.levelScale)+self.levelScale,self.sheight,(y*self.levelScale),offsetX+stepX,1) + mesh:addVertexWithUV((x*self.levelScale),self.sheight,(y*self.levelScale)+self.levelScale,offsetX,0) + mesh:addVertexWithUV((x*self.levelScale)+self.levelScale,self.sheight,(y*self.levelScale)+self.levelScale,offsetX+stepX,0) + mesh:addVertexWithUV((x*self.levelScale)+self.levelScale,self.sheight,(y*self.levelScale),offsetX+stepX,1) - mesh:addVertex((x*self.levelScale),self.sheight,(y*self.levelScale)+self.levelScale, offsetX, 0) - mesh:addVertex((x*self.levelScale)+self.levelScale,self.sheight,(y*self.levelScale),offsetX+stepX, 1) - mesh:addVertex((x*self.levelScale),self.sheight,(y*self.levelScale),offsetX, 1) + mesh:addVertexWithUV((x*self.levelScale),self.sheight,(y*self.levelScale)+self.levelScale, offsetX, 0) + mesh:addVertexWithUV((x*self.levelScale)+self.levelScale,self.sheight,(y*self.levelScale),offsetX+stepX, 1) + mesh:addVertexWithUV((x*self.levelScale),self.sheight,(y*self.levelScale),offsetX, 1) local offsetX = 2 * stepX - mesh:addVertex((x*self.levelScale),self.sheight,(y*self.levelScale),offsetX,0) - mesh:addVertex((x*self.levelScale)+self.levelScale,self.sheight,(y*self.levelScale),offsetX+stepX,0) - mesh:addVertex((x*self.levelScale)+self.levelScale,0,(y*self.levelScale),offsetX+stepX,0.5) - mesh:addVertex((x*self.levelScale),self.sheight,(y*self.levelScale),offsetX, 0) - mesh:addVertex((x*self.levelScale)+self.levelScale,0,(y*self.levelScale),offsetX+stepX, 0.5) - mesh:addVertex((x*self.levelScale),0,(y*self.levelScale),offsetX, 0.5) - - mesh:addVertex((x*self.levelScale)+self.levelScale,0,(y*self.levelScale)+self.levelScale, offsetX+stepX,0.5) - mesh:addVertex((x*self.levelScale)+self.levelScale,self.sheight,(y*self.levelScale)+self.levelScale, offsetX+stepX,0) - mesh:addVertex((x*self.levelScale),self.sheight,(y*self.levelScale)+self.levelScale,offsetX,0) - mesh:addVertex((x*self.levelScale),0,(y*self.levelScale)+self.levelScale,offsetX, 0.5) - mesh:addVertex((x*self.levelScale)+self.levelScale,0,(y*self.levelScale)+self.levelScale,offsetX+stepX, 0.5) - mesh:addVertex((x*self.levelScale),self.sheight,(y*self.levelScale)+self.levelScale,offsetX, 0) - - mesh:addVertex((x*self.levelScale),0,(y*self.levelScale)+self.levelScale,offsetX+stepX,0.5) - mesh:addVertex((x*self.levelScale),self.sheight,(y*self.levelScale)+self.levelScale,offsetX+stepX,0) - mesh:addVertex((x*self.levelScale),self.sheight,(y*self.levelScale),offsetX,0) - mesh:addVertex((x*self.levelScale),0,(y*self.levelScale),offsetX, 0.5) - mesh:addVertex((x*self.levelScale),0,(y*self.levelScale)+self.levelScale,offsetX+stepX, 0.5) - mesh:addVertex((x*self.levelScale),self.sheight,(y*self.levelScale),offsetX, 0) - - mesh:addVertex((x*self.levelScale)+self.levelScale,self.sheight,(y*self.levelScale),offsetX,0) - mesh:addVertex((x*self.levelScale)+self.levelScale,self.sheight,(y*self.levelScale)+self.levelScale,offsetX+stepX,0) - mesh:addVertex((x*self.levelScale)+self.levelScale,0,(y*self.levelScale)+self.levelScale,offsetX+stepX, 0.5) - mesh:addVertex((x*self.levelScale)+self.levelScale,self.sheight,(y*self.levelScale),offsetX, 0) - mesh:addVertex((x*self.levelScale)+self.levelScale,0,(y*self.levelScale)+self.levelScale,offsetX+stepX, 0.5) - mesh:addVertex((x*self.levelScale)+self.levelScale,0,(y*self.levelScale),offsetX, 0.5) + mesh:addVertexWithUV((x*self.levelScale),self.sheight,(y*self.levelScale),offsetX,0) + mesh:addVertexWithUV((x*self.levelScale)+self.levelScale,self.sheight,(y*self.levelScale),offsetX+stepX,0) + mesh:addVertexWithUV((x*self.levelScale)+self.levelScale,0,(y*self.levelScale),offsetX+stepX,0.5) + mesh:addVertexWithUV((x*self.levelScale),self.sheight,(y*self.levelScale),offsetX, 0) + mesh:addVertexWithUV((x*self.levelScale)+self.levelScale,0,(y*self.levelScale),offsetX+stepX, 0.5) + mesh:addVertexWithUV((x*self.levelScale),0,(y*self.levelScale),offsetX, 0.5) + + mesh:addVertexWithUV((x*self.levelScale)+self.levelScale,0,(y*self.levelScale)+self.levelScale, offsetX+stepX,0.5) + mesh:addVertexWithUV((x*self.levelScale)+self.levelScale,self.sheight,(y*self.levelScale)+self.levelScale, offsetX+stepX,0) + mesh:addVertexWithUV((x*self.levelScale),self.sheight,(y*self.levelScale)+self.levelScale,offsetX,0) + mesh:addVertexWithUV((x*self.levelScale),0,(y*self.levelScale)+self.levelScale,offsetX, 0.5) + mesh:addVertexWithUV((x*self.levelScale)+self.levelScale,0,(y*self.levelScale)+self.levelScale,offsetX+stepX, 0.5) + mesh:addVertexWithUV((x*self.levelScale),self.sheight,(y*self.levelScale)+self.levelScale,offsetX, 0) + + mesh:addVertexWithUV((x*self.levelScale),0,(y*self.levelScale)+self.levelScale,offsetX+stepX,0.5) + mesh:addVertexWithUV((x*self.levelScale),self.sheight,(y*self.levelScale)+self.levelScale,offsetX+stepX,0) + mesh:addVertexWithUV((x*self.levelScale),self.sheight,(y*self.levelScale),offsetX,0) + mesh:addVertexWithUV((x*self.levelScale),0,(y*self.levelScale),offsetX, 0.5) + mesh:addVertexWithUV((x*self.levelScale),0,(y*self.levelScale)+self.levelScale,offsetX+stepX, 0.5) + mesh:addVertexWithUV((x*self.levelScale),self.sheight,(y*self.levelScale),offsetX, 0) + + mesh:addVertexWithUV((x*self.levelScale)+self.levelScale,self.sheight,(y*self.levelScale),offsetX,0) + mesh:addVertexWithUV((x*self.levelScale)+self.levelScale,self.sheight,(y*self.levelScale)+self.levelScale,offsetX+stepX,0) + mesh:addVertexWithUV((x*self.levelScale)+self.levelScale,0,(y*self.levelScale)+self.levelScale,offsetX+stepX, 0.5) + mesh:addVertexWithUV((x*self.levelScale)+self.levelScale,self.sheight,(y*self.levelScale),offsetX, 0) + mesh:addVertexWithUV((x*self.levelScale)+self.levelScale,0,(y*self.levelScale)+self.levelScale,offsetX+stepX, 0.5) + mesh:addVertexWithUV((x*self.levelScale)+self.levelScale,0,(y*self.levelScale),offsetX, 0.5) end @@ -1705,7 +1705,7 @@ function Level:buildLevelGeometry() self:initBlood() - for i=0,self.numProps-1 do + for i=0,self.numProps-1 do local prop = self.props[i] self:addChild(prop) end diff --git a/Scripts/MainMenu.lua b/Scripts/MainMenu.lua index 0f8d2f6..0c5f70b 100644 --- a/Scripts/MainMenu.lua +++ b/Scripts/MainMenu.lua @@ -29,6 +29,9 @@ function MainMenu:onGameMenuSelect(event) if self.gameMenu:getSelection() == "new" then self.newGame() end + if self.gameMenu:getSelection() == "exit" then + Services.Core:Shutdown() + end end function MainMenu:Show() diff --git a/Scripts/Prop.lua b/Scripts/Prop.lua index 284d68d..1887bb7 100644 --- a/Scripts/Prop.lua +++ b/Scripts/Prop.lua @@ -27,13 +27,13 @@ function Prop:Prop(propIndex) cellSizeX = 1/16 cellSizeY = 1/2 - bodyMesh:addVertex(scale,0, 0,(indexX * cellSizeX) + cellSizeX,indexY*cellSizeY) - bodyMesh:addVertex(scale,sheight,0,(indexX * cellSizeX) + cellSizeX,(indexY * cellSizeY) + cellSizeY) - bodyMesh:addVertex(0, sheight,0,indexX*cellSizeX,(indexY * cellSizeY) + cellSizeY) + bodyMesh:addVertexWithUV(scale,0, 0,(indexX * cellSizeX) + cellSizeX,indexY*cellSizeY) + bodyMesh:addVertexWithUV(scale,sheight,0,(indexX * cellSizeX) + cellSizeX,(indexY * cellSizeY) + cellSizeY) + bodyMesh:addVertexWithUV(0, sheight,0,indexX*cellSizeX,(indexY * cellSizeY) + cellSizeY) - bodyMesh:addVertex(0,0,0,(indexX * cellSizeX),(indexY * cellSizeY)) - bodyMesh:addVertex(0+scale,0,0,(indexX * cellSizeX)+cellSizeX,(indexY * cellSizeY)) - bodyMesh:addVertex(0,sheight,0,(indexX * cellSizeX),(indexY * cellSizeY)+cellSizeY) + bodyMesh:addVertexWithUV(0,0,0,(indexX * cellSizeX),(indexY * cellSizeY)) + bodyMesh:addVertexWithUV(0+scale,0,0,(indexX * cellSizeX)+cellSizeX,(indexY * cellSizeY)) + bodyMesh:addVertexWithUV(0,sheight,0,(indexX * cellSizeX),(indexY * cellSizeY)+cellSizeY) bodyMesh:calculateNormals() self.body = SceneMesh.SceneMeshFromMesh(bodyMesh) From a5bf7b2ccc6dcffe3834fe4f1f308d0a7bace6e6 Mon Sep 17 00:00:00 2001 From: Joachim Meyer Date: Wed, 11 Mar 2015 20:04:57 +0100 Subject: [PATCH 2/4] Fix CharPicker a bit more.. the 3 chars still don't look as they should.. --- Scripts/CharPicker.lua | 31 ++++++++++++++++--------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/Scripts/CharPicker.lua b/Scripts/CharPicker.lua index 7f74479..d69231c 100644 --- a/Scripts/CharPicker.lua +++ b/Scripts/CharPicker.lua @@ -5,48 +5,49 @@ class "CharPicker" (Scene) function CharPicker:CharPicker() Scene.Scene(self, Scene.SCENE_3D) self.pickerScreen = Scene(Scene.SCENE_2D) - self.archerLabel = SceneLabel("ARCHER (HARD)", 64, "main") - self.archerLabel:setPositionX((800-self.archerLabel:getWidth())/2) - self.archerLabel:setPositionY((300-self.archerLabel:getHeight())/2) + self.pickerScreen:getDefaultCamera():setOrthoSize(Services.Core:getXRes(), Services.Core:getYRes()) + self.archerLabel = SceneLabel("ARCHER. HARD.", 64, "main") + self.archerLabel:setPositionY(150) self.pickerScreen:addChild(self.archerLabel) - self.knightLabel = SceneLabel("KNIGHT (EASY)", 64, "main") - self.knightLabel:setPositionX((800-self.knightLabel:getWidth())/2) - self.knightLabel:setPositionY((300-self.knightLabel:getHeight())/2) + self.knightLabel = SceneLabel("KNIGHT. EASY.", 64, "main") + self.knightLabel:setPositionY(150) self.pickerScreen:addChild(self.knightLabel) - self.wizardLabel = SceneLabel("WIZZARD (MEDIUM)", 64, "main") - self.wizardLabel:setPositionX((800-self.wizardLabel:getWidth())/2) - self.wizardLabel:setPositionY((300-self.wizardLabel:getHeight())/2) + self.wizardLabel = SceneLabel("WIZZARD. MEDIUM.", 64, "main") + self.wizardLabel:setPositionY(150) self.pickerScreen:addChild(self.wizardLabel) self.pickerScreen.enabled = false - self.ambientColor.r = 0.9 + self.ambientColor.r = 1 self.ambientColor.g = 1 self.ambientColor.b = 1 self.rotator = Entity() self:addChild(self.rotator) - self:getDefaultCamera():setPosition(0.005,0.05,0.3) + self:getDefaultCamera():setPosition(0,0.05,0.3) self:getDefaultCamera():setClippingPlanes(0.0, 10.0) - self:getDefaultCamera():lookAt(Vector3(0.01,0,0), Vector3(0,1,0)) + self:getDefaultCamera():lookAt(Vector3(0,0,0), Vector3(0,1,0)) self:getDefaultCamera():setFOV(30) self.wizard = Creature(2) self.rotator:addChild(self.wizard) - self.wizard:setPosition(-0,0,0.25) + self.wizard:setPosition(0,0,0.25) self.wizard.shadow.visible = false + local sin30 = sin(rad(30))*0.25 + local cos30 = cos(rad(30))*0.25 + self.archer = Creature(1) self.rotator:addChild(self.archer) - self.archer:setPosition(0.25,0,-0.25) + self.archer:setPosition(cos30,0,-sin30) self.archer.shadow.visible = false self.knight = Creature(0) self.rotator:addChild(self.knight) - self.knight:setPosition(-0.25,0,-0.25) + self.knight:setPosition(-cos30,0,-sin30) self.knight.shadow.visible = false self.choice = 1 From b55f23297b85097b19f6300c4bc567d97601d1f4 Mon Sep 17 00:00:00 2001 From: Joachim Meyer Date: Sat, 14 Mar 2015 13:03:35 +0100 Subject: [PATCH 3/4] Add an OptionsMenu: it is able to set master vol and music volume, it can be called by escape while ingame. --- Scripts/HUD.lua | 5 ++- Scripts/Main.lua | 46 ++++++++++++++++++++++++++-- Scripts/MainMenu.lua | 3 ++ Scripts/Menu.lua | 16 +++++++++- Scripts/OptionsMenu.lua | 67 +++++++++++++++++++++++++++++++++++++++++ 5 files changed, 133 insertions(+), 4 deletions(-) create mode 100644 Scripts/OptionsMenu.lua diff --git a/Scripts/HUD.lua b/Scripts/HUD.lua index f7b5904..ce070dd 100644 --- a/Scripts/HUD.lua +++ b/Scripts/HUD.lua @@ -1,5 +1,5 @@ - require "Scripts/MainMenu" +require "Scripts/OptionsMenu" class "HUD" (Scene) @@ -43,6 +43,9 @@ function HUD:HUD() self.mainMenu = MainMenu() self:addChild(self.mainMenu) + self.optionsMenu = OptionsMenu() + self:addChild(self.optionsMenu) + self.flashRect = ScenePrimitive(ScenePrimitive.TYPE_VPLANE,160*2,160) self:addChild(self.flashRect) self.flashRect:setBlendingMode(Renderer.BLEND_MODE_NORMAL) diff --git a/Scripts/Main.lua b/Scripts/Main.lua index c97f9a5..c895d57 100644 --- a/Scripts/Main.lua +++ b/Scripts/Main.lua @@ -239,6 +239,37 @@ end hud.mainMenu.newGame = pickChars +function showOpts() + hud:Clear() + hud.mainMenu:Hide() + hud.optionsMenu:Show() +end + +hud.mainMenu.options = showOpts + +function backOpts() + hud:Clear() + if player then + paused = false + hud.optionsMenu:Hide() + else + hud.optionsMenu:Hide() + hud.mainMenu:Show() + end +end + +hud.optionsMenu.back = backOpts + +function setMusicVol(val) + musics[0]:setVolume(val/100) + musics[1]:setVolume(val/100) + villageMusic:setVolume(val/100) + introMusic:setVolume(val/100) + gameoverMusic:setVolume(val/100) +end + +hud.optionsMenu.setMusicVol = setMusicVol + function initLevel() paused = false --math.randomseed(Services.Core:getTicks()) @@ -280,12 +311,13 @@ function introDone() intro.introScreen.enabled = false intro.enabled = false end - + hud.optionsMenu:Hide() hud.mainMenu:Show() showVillageLevel() hud:fadeIn() end + function showIntro() Services.Renderer:setClearColor(0,0,0) intro = Intro() @@ -496,6 +528,11 @@ function onKeyDown(key) return end + if hud.optionsMenu.visible == true then + hud.optionsMenu:onKeyDown(key) + return + end + if showingCharPicker == true then if key == KEY_LEFT then charPicker.choice = charPicker.choice + 1 @@ -522,6 +559,11 @@ function onKeyDown(key) return end + if key == KEY_ESCAPE then + paused = true + hud.optionsMenu.visible = true + end + if key == KEY_RETURN then if onExit == true then if level == villageLevel then @@ -594,7 +636,7 @@ function onKeyUp(key) if showingIntro == true then return end - if hud.mainMenu.visible == true or showingCharPicker == true then return end + if hud.mainMenu.visible == true or showingCharPicker == true or hud.optionsMenu.visible == true then return end if levelLoaded == false then return diff --git a/Scripts/MainMenu.lua b/Scripts/MainMenu.lua index 0c5f70b..2b27b73 100644 --- a/Scripts/MainMenu.lua +++ b/Scripts/MainMenu.lua @@ -29,6 +29,9 @@ function MainMenu:onGameMenuSelect(event) if self.gameMenu:getSelection() == "new" then self.newGame() end + if self.gameMenu:getSelection() == "options" then + self.options() + end if self.gameMenu:getSelection() == "exit" then Services.Core:Shutdown() end diff --git a/Scripts/Menu.lua b/Scripts/Menu.lua index 620438a..4720ac6 100644 --- a/Scripts/Menu.lua +++ b/Scripts/Menu.lua @@ -15,11 +15,15 @@ end function Menu:onKeyDown(key) if key == KEY_UP then + if(self.labels[self.selection].value) then self.labels[self.selection].value.visible = false end self.selection = self.selection - 1 if self.selection < 1 then self.selection = count(self.labels) end + if(self.labels[self.selection].value) then self.labels[self.selection].value.visible = true end elseif key == KEY_DOWN then + if(self.labels[self.selection].value) then self.labels[self.selection].value.visible = false end self.selection = self.selection + 1 if self.selection > count(self.labels) then self.selection = 1 end + if(self.labels[self.selection].value) then self.labels[self.selection].value.visible = true end elseif key == KEY_RETURN then self:dispatchEvent(Event(), Event.SELECT_EVENT) end @@ -31,17 +35,27 @@ function Menu:getSelection() return self.labels[self.selection].code end +function Menu:getSelectionLabel() + return self.labels[self.selection] +end + function Menu:updateRect() self.selectionRect:setPosition(0, self.selection * -10) end -function Menu:addOption(title, code) +function Menu:addOption(title, code, value) local label = SceneLabel(title, 8, "main") label:setColor(1.0, 1.0, 1.0, 0.6) self:addChild(label) local newLabel = {} newLabel.label = label newLabel.code = code + if (value) then + local valLabel = SceneLabel(String.IntToString(value), 8, "main") + valLabel.visible = false + self:addChild(valLabel) + newLabel.value = valLabel + end self.labels[count(self.labels)+1] = newLabel label:setPosition(0, count(self.labels) * -10) end \ No newline at end of file diff --git a/Scripts/OptionsMenu.lua b/Scripts/OptionsMenu.lua new file mode 100644 index 0000000..d14f45b --- /dev/null +++ b/Scripts/OptionsMenu.lua @@ -0,0 +1,67 @@ +require "Scripts/Menu" + +class "OptionsMenu" (Entity) + +function OptionsMenu:OptionsMenu() + Entity.Entity(self) + + self.logo = SceneImage("Resources/gfx/logo.png") + self:addChild(self.logo) + self.logo:setBlendingMode(Renderer.BLEND_MODE_NORMAL) + self.logo.depthTest = false + self.logo.depthWrite = false + self.logo:setPositionY(40) + + self.gameMenu = Menu() + self:addChild(self.gameMenu) + self.gameMenu:addOption("Volume Master", "volMaster",100) + self.gameMenu:addOption("Volume Music", "volMusic",100) + self.gameMenu:addOption("Back", "back") + self.gameMenu:setPosition(0,-10) + self.currentMenu = self.gameMenu + + self.gameMenu:addEventListener(self, OptionsMenu.onGameMenuSelect, Event.SELECT_EVENT) + + self:Hide() +end + +function OptionsMenu:onGameMenuSelect(event) + if(self.gameMenu:getSelection() == "back") then + self.back() + end +end + +function OptionsMenu:Show() + if(self.gameMenu:getSelectionLabel().value) then + self.gameMenu:getSelectionLabel().value.visible = true + end + self.visible = true +end + +function OptionsMenu:Hide() + self.visible = false +end + +function OptionsMenu:onKeyDown(key) + if(self.gameMenu:getSelectionLabel().value) then + if(key == KEY_RIGHT) then + self:volChange(1) + elseif (key == KEY_LEFT) then + self:volChange(-1) + end + end + self.currentMenu:onKeyDown(key) +end + +function OptionsMenu:volChange(dir) + local text = self.gameMenu:getSelectionLabel().value:getText() + local value = text + dir*5 + if(value <0)then value = 0 elseif (value >100) then value = 100 end + self.gameMenu:getSelectionLabel().value:setText(String.IntToString(value)) + + if(self.gameMenu:getSelection() == "volMaster") then + Services.SoundManager:setGlobalVolume(value/100) + elseif(self.gameMenu:getSelection() == "volMusic") then + self.setMusicVol(value) + end +end From eea9843a6411b2acb24f38da283177636685794b Mon Sep 17 00:00:00 2001 From: Joachim Meyer Date: Sat, 14 Mar 2015 13:04:12 +0100 Subject: [PATCH 4/4] Fix glitch trough the ends of the level. --- Scripts/Level.lua | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/Scripts/Level.lua b/Scripts/Level.lua index f9a4b0d..8e4f370 100644 --- a/Scripts/Level.lua +++ b/Scripts/Level.lua @@ -879,6 +879,15 @@ function Level:tileToPosition(x,y) end +function Level:positionToTileUnnormalized(x,y) + local ret = {} + + ret.x = math.floor(((x + (23*self.levelScale)) / self.levelScale)) + 1 + ret.y = math.floor(((y + (23*self.levelScale)) / self.levelScale)) + 1 + + return ret +end + function Level:positionToTile(x,y) local ret = {} @@ -1112,11 +1121,11 @@ end function Level:canPass(x,y) - local pos = self:positionToTile(x,y) + local pos = self:positionToTileUnnormalized(x,y) local tileValX = pos.x local tileValY = pos.y - if tileValX > 47 or tileValY > 47 or tileValX < 0 or tileValY < 0 then + if tileValX > 48 or tileValY > 48 or tileValX < 0 or tileValY < 0 then return false end @@ -1655,25 +1664,25 @@ function Level:buildLevelGeometry() local wall = ScenePrimitive(ScenePrimitive.TYPE_VPLANE, 50*self.levelScale,50*self.levelScale) self:addChild(wall) wall:setMaterialByName(self.levelSkin.."Wall", Services.ResourceManager:getGlobalPool()) - wall:Translate(0,0,(-24*self.levelScale)-(self.levelScale*0.5)) + wall:Translate(0,0,(-24*self.levelScale)-(self.levelScale*0.6)) wall = ScenePrimitive(ScenePrimitive.TYPE_VPLANE, 50*self.levelScale,50*self.levelScale,0) self:addChild(wall) wall:setYaw(180) wall:setMaterialByName(self.levelSkin.."Wall", Services.ResourceManager:getGlobalPool()) - wall:Translate(0,0,24*self.levelScale) + wall:Translate(0,0,24*self.levelScale+self.levelScale*0.6) wall = ScenePrimitive(ScenePrimitive.TYPE_VPLANE, 50*self.levelScale,50*self.levelScale,0) wall:setYaw(90) self:addChild(wall) wall:setMaterialByName(self.levelSkin.."Wall", Services.ResourceManager:getGlobalPool()) - wall:Translate((-24*self.levelScale)+(self.levelScale*0.3),0,0) + wall:Translate((-24*self.levelScale)+(self.levelScale*0.6),0,0) wall = ScenePrimitive(ScenePrimitive.TYPE_VPLANE, 50*self.levelScale,50*self.levelScale,0) wall:setYaw(-90) self:addChild(wall) wall:setMaterialByName(self.levelSkin.."Wall", Services.ResourceManager:getGlobalPool()) - wall:Translate(25*self.levelScale,0,0) + wall:Translate(25*self.levelScale-self.levelScale*0.4,0,0) local worldMesh = Mesh(Mesh.TRI_MESH)