diff --git a/Assets/Scripts/GameObjects/Units/unitData.lua b/Assets/Scripts/GameObjects/Units/unitData.lua index 4cc9115..05191cd 100644 --- a/Assets/Scripts/GameObjects/Units/unitData.lua +++ b/Assets/Scripts/GameObjects/Units/unitData.lua @@ -20,8 +20,9 @@ UnitId = { MARKET = 17, LAB = 18, POINT_DEFENSE = 19, - EXTRACTOR = 19, - REFINERY = 20 + EXTRACTOR = 20, + REFINERY = 21, + FORT = 22 } WeaponClass = {HITSCAN = 0, SHELL = 1, TORPEDO = 2, CRUISE_MISSILE = 3} UnitClass = { @@ -40,7 +41,8 @@ UnitClass = { LAB = 12, POINT_DEFENSE = 13, EXTRACTOR = 14, - REFINERY = 15 + REFINERY = 15, + FORT = 16 } UnitType = {UNDERWATER = 0, SEA_LEVEL = 1, HOVER = 2, LAND = 3, AIR = 4} ArmorType = {CAST = 0, COMBINED = 1, MECHANIC = 2, SHELL = 3, STEEL = 4} @@ -518,4 +520,19 @@ units = { selectionSfx = PATH .. 'Sounds/Units/Sample/selection.ogg', deathSfx = PATH .. 'Sounds/SFX/Explosions/explosion01.ogg', }, + { + unitClass = UnitClass.FORT, + unitType = UnitType.LAND, + isVehicle = false, + health = 1000, + cost = 1000, + size = {x = 1, y = 1.15, z = 2}, + hitboxOffset = {x = 0, y = 0, z = 0}, + lineOfSight = 5, + name = 'Fort', + basePath = PATH .. structurePrefix .. 'Forts/', + meshPath = 'fort.xml', + selectionSfx = PATH .. 'Sounds/Units/Sample/selection.ogg', + deathSfx = PATH .. 'Sounds/SFX/Explosions/explosion01.ogg', + }, } diff --git a/Assets/Scripts/Gui/engineerCommands.lua b/Assets/Scripts/Gui/engineerCommands.lua index 5555244..8fe31c5 100644 --- a/Assets/Scripts/Gui/engineerCommands.lua +++ b/Assets/Scripts/Gui/engineerCommands.lua @@ -1,4 +1,3 @@ -numGui = 5 res = graphics.resolution Size = {x = 100, y = 100} @@ -47,5 +46,14 @@ gui = { buttonType = ButtonType.BUILD, trigger = 68, structureId = UnitId.POINT_DEFENSE - } + }, + { + pos = {x = res.x - 5 * Size.x - 200, y = res.y - 200}, + size = Size, + imagePath = '', + guiType = GuiType.BUTTON, + buttonType = ButtonType.BUILD, + trigger = 70, + structureId = UnitId.FORT + }, } diff --git a/Assets/Scripts/Gui/fortCommands.lua b/Assets/Scripts/Gui/fortCommands.lua new file mode 100644 index 0000000..a9f985e --- /dev/null +++ b/Assets/Scripts/Gui/fortCommands.lua @@ -0,0 +1,14 @@ +res = graphics.resolution +Size = {x = 100, y = 100} + +gui = { + { + pos = {x = res.x - 200, y = res.y - 200}, + size = Size, + imagePath = '', + guiType = GuiType.BUTTON, + buttonType = ButtonType.FORT_TRAIN, + trigger = 82, + unitId = UnitId.ENGINEER + }, +} diff --git a/Assets/Scripts/Gui/main.lua b/Assets/Scripts/Gui/main.lua index dcc3552..c0dc13a 100644 --- a/Assets/Scripts/Gui/main.lua +++ b/Assets/Scripts/Gui/main.lua @@ -26,7 +26,8 @@ ButtonType = { BUILD = 22, LAND_FACTORY_TRAIN = 23, NAVAL_FACTORY_TRAIN = 24, - STATISTICS = 25 + FORT_TRAIN = 25, + STATISTICS = 26 } ListboxType = { diff --git a/activeGameState.cpp b/activeGameState.cpp index 0d676c5..6418dad 100755 --- a/activeGameState.cpp +++ b/activeGameState.cpp @@ -194,8 +194,10 @@ namespace battleship{ if(buttons.empty()){ if(!mainPlayer->getSelectedUnitsByClass(UnitClass::ENGINEER).empty()) guiManager->readLuaScreenScript("engineerCommands.lua", buttons, listboxes, checkboxes, sliders, textboxes, guiRects, texts); - else if(!mainPlayer->getSelectedUnitsByClass(UnitClass::LAND_FACTORY).empty()) - guiManager->readLuaScreenScript("landFactoryCommands.lua", buttons, listboxes, checkboxes, sliders, textboxes, guiRects, texts); + else if(!mainPlayer->getSelectedUnitsByClass(UnitClass::FORT).empty()) + guiManager->readLuaScreenScript("fortCommands.lua", buttons, listboxes, checkboxes, sliders, textboxes, guiRects, texts); + else if(!mainPlayer->getSelectedUnitsByClass(UnitClass::NAVAL_FACTORY).empty()) + guiManager->readLuaScreenScript("navalFactoryCommands.lua", buttons, listboxes, checkboxes, sliders, textboxes, guiRects, texts); else if(!mainPlayer->getSelectedUnitsByClass(UnitClass::NAVAL_FACTORY).empty()) guiManager->readLuaScreenScript("navalFactoryCommands.lua", buttons, listboxes, checkboxes, sliders, textboxes, guiRects, texts); } diff --git a/concreteGuiManager.cpp b/concreteGuiManager.cpp index 08db6ae..b48b393 100644 --- a/concreteGuiManager.cpp +++ b/concreteGuiManager.cpp @@ -182,6 +182,13 @@ namespace battleship{ button = new TrainButton(pos, size, buttonName, (int)guiTable["trigger"], (string)guiTable["imagePath"], (int)SOL_LUA_STATE["UnitId"]["NAVAL_FACTORY"], unitId); break; } + case FORT_TRAIN: + { + int unitId = guiTable["unitId"]; + string buttonName = SOL_LUA_STATE["units"][unitId + 1]["name"]; + button = new TrainButton(pos, size, buttonName, (int)guiTable["trigger"], (string)guiTable["imagePath"], (int)SOL_LUA_STATE["UnitId"]["FORT"], unitId); + break; + } case STATISTICS: button = new StatsButton(pos, size, name, (int)guiTable["trigger"], (string)guiTable["imagePath"]); break; diff --git a/concreteGuiManager.h b/concreteGuiManager.h index 46a107e..c141da2 100644 --- a/concreteGuiManager.h +++ b/concreteGuiManager.h @@ -40,6 +40,7 @@ namespace battleship{ BUILD, LAND_FACTORY_TRAIN, NAVAL_FACTORY_TRAIN, + FORT_TRAIN, STATISTICS }; enum ListboxType { diff --git a/gameObjectFactory.cpp b/gameObjectFactory.cpp index 4905fd6..e1dbf7b 100644 --- a/gameObjectFactory.cpp +++ b/gameObjectFactory.cpp @@ -24,6 +24,7 @@ namespace battleship{ int unitClass = SOL_LUA_VIEW["units"][id + 1]["unitClass"]; switch((UnitClass)unitClass){ + case UnitClass::FORT: case UnitClass::LAND_FACTORY: case UnitClass::NAVAL_FACTORY: return new Factory(player, id, pos, rot, buildStatus); diff --git a/unit.h b/unit.h index 861907c..e5c2b74 100755 --- a/unit.h +++ b/unit.h @@ -71,7 +71,8 @@ namespace battleship{ LAB, POINT_DEFENSE, EXTRACTOR, - REFINERY + REFINERY, + FORT }; class Unit : public GameObject{