diff --git a/Assets/Scripts/GameObjects/Units/unitData.lua b/Assets/Scripts/GameObjects/Units/unitData.lua
index d9a8972..c3058ea 100644
--- a/Assets/Scripts/GameObjects/Units/unitData.lua
+++ b/Assets/Scripts/GameObjects/Units/unitData.lua
@@ -186,6 +186,7 @@ units = {
hitboxOffset = {x = 0, y = 4.5, z = 0},
lineOfSight = 25,
name = 'Mech',
+ description = '',
basePath = PATH .. vehiclePrefix .. 'Mechs/',
meshPath = 'acsMech.xml',
albedoPath = 'mech.jpg',
@@ -261,6 +262,7 @@ units = {
hitboxOffset = {x = 0, y = 3.02, z = .16},
lineOfSight = 25,
name = 'Mech',
+ description = '',
basePath = PATH .. vehiclePrefix .. 'Mechs/',
meshPath = 'aincMech.xml',
albedoPath = 'mech.jpg',
@@ -336,6 +338,7 @@ units = {
hitboxOffset = {x = 0, y = 4.27, z = .13},
lineOfSight = 25,
name = 'Mech',
+ description = '',
basePath = PATH .. vehiclePrefix .. 'Mechs/',
meshPath = 'erMech.xml',
albedoPath = 'mech.jpg',
@@ -394,6 +397,7 @@ units = {
hitboxOffset = {x = 0, y = 5.46, z = .86},
lineOfSight = 75,
name = 'Tank',
+ description = '',
basePath = PATH .. vehiclePrefix .. 'Tanks/',
meshPath = 'acsTank.xml',
albedoPath = 'tank.jpg',
@@ -452,6 +456,7 @@ units = {
hitboxOffset = {x = 0, y = 3.31, z = 0},
lineOfSight = 75,
name = 'Tank',
+ description = '',
basePath = PATH .. vehiclePrefix .. 'Tanks/',
meshPath = 'aincTank.xml',
albedoPath = 'tank.jpg',
@@ -513,6 +518,7 @@ units = {
hitboxOffset = {x = 0, y = 5.27, z = .26},
lineOfSight = 75,
name = 'Tank',
+ description = '',
basePath = PATH .. vehiclePrefix .. 'Tanks/',
meshPath = 'erTank.xml',
albedoPath = 'tank.jpg',
@@ -572,6 +578,7 @@ units = {
hitboxOffset = {x = 0, y = 7.69, z = .71},
lineOfSight = 90,
name = 'Artillery',
+ description = '',
basePath = PATH .. vehiclePrefix .. 'Artillery/',
meshPath = 'acsArtillery.xml',
albedoPath = 'artillery.jpg',
@@ -630,6 +637,7 @@ units = {
hitboxOffset = {x = 0, y = 7, z = 1.3},
lineOfSight = 90,
name = 'Artillery',
+ description = '',
basePath = PATH .. vehiclePrefix .. 'Artillery/',
meshPath = 'aincArtillery.xml',
albedoPath = 'artillery.jpg',
@@ -689,6 +697,7 @@ units = {
hitboxOffset = {x = 0, y = 1, z = 0},
lineOfSight = 30,
name = 'Artillery',
+ description = '',
basePath = PATH .. vehiclePrefix .. 'Artillery/',
meshPath = 'artillery.xml',
albedoPath = 'artillery.jpg',
@@ -725,6 +734,7 @@ units = {
hitboxOffset = {x = 0, y = 1.21, z = 0},
lineOfSight = 200,
name = 'Engineer',
+ description = '',
basePath = PATH .. vehiclePrefix .. 'Engineers/',
albedoPath = 'engineer.jpg',
colorNodes = {'Cube'},
@@ -755,7 +765,20 @@ units = {
{id = UnitId.POINT_DEFENSE, iconPath = 'Icons/Buttons/GameObjects/pointDefense.png', buildable = true, trigger = 80},
{id = UnitId.EXTRACTOR, iconPath = 'Icons/Buttons/GameObjects/extractor.png', buildable = true, trigger = 69},
},
- abilityButtons = {{buttonType = ButtonType.ORDER, name = 'Hack', orderType = OrderType.HACK}},
+ abilityButtons = {
+ {
+ buttonType = ButtonType.ORDER,
+ name = 'Hack',
+ orderType = OrderType.HACK,
+ tooltip = {
+ size = {x = 200, y = 40},
+ lines = {
+ {entry = {text = 'Eject'}},
+ {entry = {text = 'Eject all garrisoned units'}},
+ }
+ }
+ }
+ },
unitClass = UnitClass.CYBORG_ENGINEER,
unitType = UnitType.LAND,
armor = {ArmorType.MECHANIC},
@@ -770,6 +793,7 @@ units = {
hitboxOffset = {x = .178, y = 3.27, z = 0},
lineOfSight = 150,
name = 'Engineer',
+ description = '',
basePath = PATH .. vehiclePrefix .. 'Engineers/',
albedoPath = 'engineer.jpg',
colorNodes = {'Engineer_Asia.001'},
@@ -806,6 +830,7 @@ units = {
hitboxOffset = {x = 0, y = 1.02, z = .19},
lineOfSight = 200,
name = 'Engineer',
+ description = '',
basePath = PATH .. vehiclePrefix .. 'Engineers/',
albedoPath = 'engineer.jpg',
colorNodes = {'EngineerAM.001'},
@@ -836,7 +861,20 @@ units = {
{id = UnitId.POINT_DEFENSE, iconPath = 'Icons/Buttons/GameObjects/pointDefense.png', buildable = true, trigger = 80},
{id = UnitId.EXTRACTOR, iconPath = 'Icons/Buttons/GameObjects/extractor.png', buildable = true, trigger = 69},
},
- abilityButtons = {{buttonType = ButtonType.ORDER, name = 'Hack', orderType = OrderType.HACK}},
+ abilityButtons = {
+ {
+ buttonType = ButtonType.ORDER,
+ name = 'Hack',
+ orderType = OrderType.HACK,
+ tooltip = {
+ size = {x = 200, y = 40},
+ lines = {
+ {entry = {text = 'Eject'}},
+ {entry = {text = 'Eject all garrisoned units'}},
+ }
+ }
+ }
+ },
unitClass = UnitClass.CYBORG_ENGINEER,
unitType = UnitType.LAND,
armor = {ArmorType.MECHANIC},
@@ -851,6 +889,7 @@ units = {
hitboxOffset = {x = 0, y = 2.83, z = .4},
lineOfSight = 150,
name = 'Engineer',
+ description = '',
basePath = PATH .. vehiclePrefix .. 'Engineers/',
albedoPath = 'engineer.jpg',
colorNodes = {'Cube.001'},
@@ -887,6 +926,7 @@ units = {
hitboxOffset = {x = 0, y = 1.41, z = 1},
lineOfSight = 200,
name = 'Engineer',
+ description = '',
basePath = PATH .. vehiclePrefix .. 'Engineers/',
albedoPath = 'engineer.jpg',
colorNodes = {'Cube.001'},
@@ -917,7 +957,20 @@ units = {
{id = UnitId.POINT_DEFENSE, iconPath = 'Icons/Buttons/GameObjects/pointDefense.png', buildable = true, trigger = 80},
{id = UnitId.EXTRACTOR, iconPath = 'Icons/Buttons/GameObjects/extractor.png', buildable = true, trigger = 69},
},
- abilityButtons = {{buttonType = ButtonType.ORDER, name = 'Hack', orderType = OrderType.HACK}},
+ abilityButtons = {
+ {
+ buttonType = ButtonType.ORDER,
+ name = 'Hack',
+ orderType = OrderType.HACK,
+ tooltip = {
+ size = {x = 200, y = 40},
+ lines = {
+ {entry = {text = 'Eject'}},
+ {entry = {text = 'Eject all garrisoned units'}},
+ }
+ }
+ }
+ },
unitClass = UnitClass.CYBORG_ENGINEER,
unitType = UnitType.LAND,
armor = {ArmorType.MECHANIC},
@@ -932,6 +985,7 @@ units = {
hitboxOffset = {x = 0, y = 2.9, z = .55},
lineOfSight = 150,
name = 'Engineer',
+ description = '',
basePath = PATH .. vehiclePrefix .. 'Engineers/',
albedoPath = 'engineer.jpg',
colorNodes = {'Rig.001'},
@@ -1024,6 +1078,7 @@ units = {
lineOfSight = 5,
colorNodes = {'Cube.002'},
name = 'Transport',
+ description = '',
basePath = PATH .. vehiclePrefix .. 'Transports/',
meshPath = 'acsTransport.xml',
albedoPath = 'transport.jpg',
@@ -1103,6 +1158,7 @@ units = {
lineOfSight = 5,
colorNodes = {'turret'},
name = 'Transport',
+ description = '',
basePath = PATH .. vehiclePrefix .. 'Transports/',
meshPath = 'aincTransport.xml',
albedoPath = 'transport.jpg',
@@ -1196,9 +1252,51 @@ units = {
{
weapons = {},
abilityButtons = {
- {buttonType = ButtonType.ORDER, name = 'Supply', orderType = OrderType.SUPPLY},
- {buttonType = ButtonType.ORDER, name = 'Load', orderType = OrderType.LOAD},
- {buttonType = ButtonType.ORDER, name = 'Unload', orderType = OrderType.UNLOAD},
+ {
+ buttonType = ButtonType.ORDER,
+ name = 'Supply',
+ orderType = OrderType.SUPPLY,
+ tooltip = {
+ size = {x = 210, y = 60},
+ lines = {
+ {entry = {text = 'Supply'}},
+ {entry = {text = 'Begin collecting refineds'}},
+ {entry = {text = 'from an extractor'}},
+ }
+ }
+ },
+ {
+ buttonType = ButtonType.ORDER,
+ name = 'Load',
+ orderType = OrderType.LOAD,
+ tooltip = {
+ size = {x = 290, y = 120},
+ lines = {
+ {entry = {text = 'Load'}},
+ {entry = {text = 'Load the cargo ship with the'}},
+ {entry = {text = 'corresponding resource. Can load:'}},
+ {entry = {text = 'from refineries'}, icons = {{charId = 0, path = 'Resources/refineds.png'}}},
+ {entry = {text = 'from trade centers'}, icons = {{charId = 0, path = 'Resources/wealth.png'}}},
+ {entry = {text = 'from labs'}, icons = {{charId = 0, path = 'Resources/research.png'}}},
+ }
+ }
+ },
+ {
+ buttonType = ButtonType.ORDER,
+ name = 'Unload',
+ orderType = OrderType.UNLOAD,
+ tooltip = {
+ size = {x = 320, y = 120},
+ lines = {
+ {entry = {text = 'Unload'}},
+ {entry = {text = 'Unload the cargo ship with the'}},
+ {entry = {text = 'corresponding resource. Can unload:'}},
+ {entry = {text = 'to refineries'}, icons = {{charId = 0, path = 'Resources/refineds.png'}}},
+ {entry = {text = 'to trade centers'}, icons = {{charId = 0, path = 'Resources/wealth.png'}}},
+ {entry = {text = 'to labs'}, icons = {{charId = 0, path = 'Resources/research.png'}}},
+ }
+ }
+ }
},
unitClass = UnitClass.RESOURCE_ROVER,
unitType = UnitType.HOVER,
@@ -1216,6 +1314,7 @@ units = {
hitboxOffset = {x = 0, y = 2.65, z = 0},
lineOfSight = 5,
name = 'Cargo ship',
+ description = '',
colorNodes = {'Cargo'},
basePath = PATH .. vehiclePrefix .. 'Cargoships/',
meshPath = 'acsCargoShip.xml',
@@ -1231,9 +1330,51 @@ units = {
{
weapons = {},
abilityButtons = {
- {buttonType = ButtonType.ORDER, name = 'Supply', orderType = OrderType.SUPPLY},
- {buttonType = ButtonType.ORDER, name = 'Load', orderType = OrderType.LOAD},
- {buttonType = ButtonType.ORDER, name = 'Unload', orderType = OrderType.UNLOAD},
+ {
+ buttonType = ButtonType.ORDER,
+ name = 'Supply',
+ orderType = OrderType.SUPPLY,
+ tooltip = {
+ size = {x = 210, y = 60},
+ lines = {
+ {entry = {text = 'Supply'}},
+ {entry = {text = 'Begin collecting refineds'}},
+ {entry = {text = 'from an extractor'}},
+ }
+ }
+ },
+ {
+ buttonType = ButtonType.ORDER,
+ name = 'Load',
+ orderType = OrderType.LOAD,
+ tooltip = {
+ size = {x = 290, y = 120},
+ lines = {
+ {entry = {text = 'Load'}},
+ {entry = {text = 'Load the cargo ship with the'}},
+ {entry = {text = 'corresponding resource. Can load:'}},
+ {entry = {text = 'from refineries'}, icons = {{charId = 0, path = 'Resources/refineds.png'}}},
+ {entry = {text = 'from trade centers'}, icons = {{charId = 0, path = 'Resources/wealth.png'}}},
+ {entry = {text = 'from labs'}, icons = {{charId = 0, path = 'Resources/research.png'}}},
+ }
+ }
+ },
+ {
+ buttonType = ButtonType.ORDER,
+ name = 'Unload',
+ orderType = OrderType.UNLOAD,
+ tooltip = {
+ size = {x = 320, y = 120},
+ lines = {
+ {entry = {text = 'Unload'}},
+ {entry = {text = 'Unload the cargo ship with the'}},
+ {entry = {text = 'corresponding resource. Can unload:'}},
+ {entry = {text = 'to refineries'}, icons = {{charId = 0, path = 'Resources/refineds.png'}}},
+ {entry = {text = 'to trade centers'}, icons = {{charId = 0, path = 'Resources/wealth.png'}}},
+ {entry = {text = 'to labs'}, icons = {{charId = 0, path = 'Resources/research.png'}}},
+ }
+ }
+ }
},
unitClass = UnitClass.RESOURCE_ROVER,
unitType = UnitType.HOVER,
@@ -1251,6 +1392,7 @@ units = {
hitboxOffset = {x = 0, y = 2.65, z = 0},
lineOfSight = 5,
name = 'Cargo ship',
+ description = '',
colorNodes = {'Cargo'},
basePath = PATH .. vehiclePrefix .. 'Cargoships/',
meshPath = 'aincCargoShip.xml',
@@ -1266,9 +1408,51 @@ units = {
{
weapons = {},
abilityButtons = {
- {buttonType = ButtonType.ORDER, name = 'Supply', orderType = OrderType.SUPPLY},
- {buttonType = ButtonType.ORDER, name = 'Load', orderType = OrderType.LOAD},
- {buttonType = ButtonType.ORDER, name = 'Unload', orderType = OrderType.UNLOAD},
+ {
+ buttonType = ButtonType.ORDER,
+ name = 'Supply',
+ orderType = OrderType.SUPPLY,
+ tooltip = {
+ size = {x = 210, y = 60},
+ lines = {
+ {entry = {text = 'Supply'}},
+ {entry = {text = 'Begin collecting refineds'}},
+ {entry = {text = 'from an extractor'}},
+ }
+ }
+ },
+ {
+ buttonType = ButtonType.ORDER,
+ name = 'Load',
+ orderType = OrderType.LOAD,
+ tooltip = {
+ size = {x = 290, y = 120},
+ lines = {
+ {entry = {text = 'Load'}},
+ {entry = {text = 'Load the cargo ship with the'}},
+ {entry = {text = 'corresponding resource. Can load:'}},
+ {entry = {text = 'from refineries'}, icons = {{charId = 0, path = 'Resources/refineds.png'}}},
+ {entry = {text = 'from trade centers'}, icons = {{charId = 0, path = 'Resources/wealth.png'}}},
+ {entry = {text = 'from labs'}, icons = {{charId = 0, path = 'Resources/research.png'}}},
+ }
+ }
+ },
+ {
+ buttonType = ButtonType.ORDER,
+ name = 'Unload',
+ orderType = OrderType.UNLOAD,
+ tooltip = {
+ size = {x = 320, y = 120},
+ lines = {
+ {entry = {text = 'Unload'}},
+ {entry = {text = 'Unload the cargo ship with the'}},
+ {entry = {text = 'corresponding resource. Can unload:'}},
+ {entry = {text = 'to refineries'}, icons = {{charId = 0, path = 'Resources/refineds.png'}}},
+ {entry = {text = 'to trade centers'}, icons = {{charId = 0, path = 'Resources/wealth.png'}}},
+ {entry = {text = 'to labs'}, icons = {{charId = 0, path = 'Resources/research.png'}}},
+ }
+ }
+ }
},
unitClass = UnitClass.RESOURCE_ROVER,
unitType = UnitType.HOVER,
@@ -1286,6 +1470,7 @@ units = {
hitboxOffset = {x = 0, y = 2.65, z = 0},
lineOfSight = 5,
name = 'Cargo ship',
+ description = '',
colorNodes = {'Cargo'},
basePath = PATH .. vehiclePrefix .. 'Cargoships/',
meshPath = 'erCargoShip.xml',
@@ -1394,6 +1579,7 @@ units = {
lineOfSight = 50,
colorNodes = {'AATuret'},
name = 'Assault cruiser',
+ description = '',
basePath = PATH .. vehiclePrefix .. 'Cruisers/',
meshPath = 'heavyAssaultCruiser.xml',
albedoPath = 'cruiser.jpg',
@@ -1506,6 +1692,7 @@ units = {
lineOfSight = 5,
colorNodes = {'frontAATurret', 'rearAATurret'},
name = 'Assault cruiser',
+ description = '',
basePath = PATH .. vehiclePrefix .. 'Cruisers/',
meshPath = 'mediumAssaultCruiser.xml',
albedoPath = 'cruiser.jpg',
@@ -1616,6 +1803,7 @@ units = {
lineOfSight = 5,
colorNodes = {'aaTurret'},
name = 'Assault cruiser',
+ description = '',
basePath = PATH .. vehiclePrefix .. 'Cruisers/',
meshPath = 'lightAssaultCruiser.xml',
albedoPath = 'cruiser.jpg',
@@ -1706,6 +1894,7 @@ units = {
lineOfSight = 100,
colorNodes = {'FrontTurret', 'RearTurret'},
name = 'Anti sub cruiser',
+ description = '',
basePath = PATH .. vehiclePrefix .. 'Cruisers/',
meshPath = 'acsAntiSubCruiser.xml',
albedoPath = 'cruiser.jpg',
@@ -1832,6 +2021,7 @@ units = {
lineOfSight = 100,
colorNodes = {'sides'},
name = 'Anti sub cruiser',
+ description = '',
basePath = PATH .. vehiclePrefix .. 'Cruisers/',
meshPath = 'aincAntiSubCruiser.xml',
albedoPath = 'cruiser.jpg',
@@ -1987,6 +2177,7 @@ units = {
lineOfSight = 100,
colorNodes = {'Gunship.001'},
name = 'Anti sub cruiser',
+ description = '',
basePath = PATH .. vehiclePrefix .. 'Cruisers/',
meshPath = 'erAntiSubCruiser.xml',
albedoPath = 'cruiser.jpg',
@@ -2038,6 +2229,7 @@ units = {
hitboxOffset = {x = 0, y = 1.8, z = -1.3},
lineOfSight = 50,
name = 'Missile submarine',
+ description = '',
basePath = PATH .. vehiclePrefix .. 'Submarines/',
meshPath = 'acsMissileSubmarine.xml',
albedoPath = 'submarine.jpg',
@@ -2142,6 +2334,7 @@ units = {
hitboxOffset = {x = 0, y = 2.29, z = -1.09},
lineOfSight = 500,
name = 'Missile submarine',
+ description = '',
basePath = PATH .. vehiclePrefix .. 'Submarines/',
meshPath = 'erMissileSubmarine.xml',
albedoPath = 'submarine.jpg',
@@ -2181,6 +2374,7 @@ units = {
hitboxOffset = {x = 0, y = 1.8, z = -1.3},
lineOfSight = 0,
name = 'Stealth submarine',
+ description = '',
colorNodes = {'Cube.001'},
basePath = PATH .. vehiclePrefix .. 'Submarines/',
meshPath = 'acsSubmarine.xml',
@@ -2220,6 +2414,7 @@ units = {
size = {x = 8.32, y = 12.1, z = 57.4},
lineOfSight = 0,
name = 'Stealth submarine',
+ description = '',
colorNodes = {'Cube.001'},
basePath = PATH .. vehiclePrefix .. 'Submarines/',
meshPath = 'aincSubmarine.xml',
@@ -2259,6 +2454,7 @@ units = {
size = {x = 5.37, y = 7.66, z = 43},
lineOfSight = 0,
name = 'Stealth submarine',
+ description = '',
colorNodes = {'Sphere.001'},
basePath = PATH .. vehiclePrefix .. 'Submarines/',
meshPath = 'erSubmarine.xml',
@@ -2282,6 +2478,7 @@ units = {
hitboxOffset = {x = 0, y = 6.7, z = 0},
lineOfSight = 25,
name = 'Icebreaker',
+ description = '',
colorNodes = {'Cube.001'},
basePath = PATH .. vehiclePrefix .. 'Icebreakers/',
meshPath = 'acsIcebreaker.xml',
@@ -2305,6 +2502,7 @@ units = {
hitboxOffset = {x = 0, y = 7.6, z = 5.88},
lineOfSight = 25,
name = 'Icebreaker',
+ description = '',
colorNodes = {'Cube.001'},
basePath = PATH .. vehiclePrefix .. 'Icebreakers/',
meshPath = 'aincIcebreaker.xml',
@@ -2328,6 +2526,7 @@ units = {
hitboxOffset = {x = 0, y = 6.71, z = 5.95},
lineOfSight = 25,
name = 'Icebreaker',
+ description = '',
colorNodes = {'Cube.001'},
basePath = PATH .. vehiclePrefix .. 'Icebreakers/',
meshPath = 'erIcebreaker.xml',
@@ -2375,6 +2574,7 @@ units = {
hitboxOffset = {x = 0, y = 4.7, z = 0},
lineOfSight = 25,
name = 'Freezer',
+ description = '',
colorNodes = {'CryoGun'},
basePath = PATH .. vehiclePrefix .. 'Freezers/',
meshPath = 'freezer.xml',
@@ -2416,6 +2616,7 @@ units = {
hitboxOffset = {x = 0, y = 1.13, z = 1.83},
lineOfSight = 25,
name = 'EMP boat',
+ description = '',
colorNodes = {'turret'},
basePath = PATH .. vehiclePrefix .. 'EMPShips/',
meshPath = 'empShip.xml',
@@ -2449,6 +2650,7 @@ units = {
lineOfSight = 5,
colorNodes = {'ring'},
name = 'Land factory',
+ description = '',
albedoPath = 'factory.jpg',
basePath = PATH .. structurePrefix .. 'LandFactories/',
meshPath = 'acsFactory.xml',
@@ -2476,6 +2678,7 @@ units = {
lineOfSight = 5,
colorNodes = {'Cube.002'},
name = 'Land factory',
+ description = '',
albedoPath = 'factory.jpg',
basePath = PATH .. structurePrefix .. 'LandFactories/',
meshPath = 'aincFactory.xml',
@@ -2503,6 +2706,7 @@ units = {
lineOfSight = 5,
colorNodes = {'Sphere.001'},
name = 'Land factory',
+ description = '',
albedoPath = 'factory.jpg',
basePath = PATH .. structurePrefix .. 'LandFactories/',
meshPath = 'erFactory.xml',
@@ -2530,6 +2734,7 @@ units = {
hitboxOffset = {x = 0, y = 28.4, z = -29},
lineOfSight = 5,
name = 'Naval factory',
+ description = '',
basePath = PATH .. structurePrefix .. 'NavalFactories/',
meshPath = 'acsFactory.xml',
colorNodes = {'stripes'},
@@ -2558,6 +2763,7 @@ units = {
hitboxOffset = {x = 0, y = 18, z = 0},
lineOfSight = 5,
name = 'Naval factory',
+ description = '',
colorNodes = {'roof'},
basePath = PATH .. structurePrefix .. 'NavalFactories/',
meshPath = 'aincFactory.xml',
@@ -2588,6 +2794,7 @@ units = {
hitboxOffset = {x = 0, y = 10, z = -14},
lineOfSight = 5,
name = 'Naval factory',
+ description = '',
colorNodes = {'building'},
basePath = PATH .. structurePrefix .. 'NavalFactories/',
meshPath = 'erFactory.xml',
@@ -2599,10 +2806,46 @@ units = {
unitClass = UnitClass.TRADE_CENTER,
unitType = UnitType.LAND,
abilityButtons = {
- {buttonType = ButtonType.BUY_REFINEDS, name = 'Buy ref', trigger = 73},
- {buttonType = ButtonType.SELL_REFINEDS, name = 'Sell ref', trigger = 79},
- {buttonType = ButtonType.BUY_RESEARCH, name = 'Buy rsch', trigger = 75},
- {buttonType = ButtonType.SELL_RESEARCH, name = 'Sell rsch', trigger = 76}
+ {
+ buttonType = ButtonType.BUY_REFINEDS,
+ name = 'Buy ref',
+ trigger = 73,
+ amount = 10,
+ tooltip = {
+ size = {x = 200, y = 40},
+ lines = {{entry = {text = 'Buy _ refineds for _ wealth'}}}
+ }
+ },
+ {
+ buttonType = ButtonType.SELL_REFINEDS,
+ name = 'Sell ref',
+ trigger = 79,
+ amount = 10,
+ tooltip = {
+ size = {x = 200, y = 40},
+ lines = {{entry = {text = 'Sell _ refineds for _ wealth'}}}
+ }
+ },
+ {
+ buttonType = ButtonType.BUY_RESEARCH,
+ name = 'Buy rsch',
+ trigger = 75,
+ amount = 10,
+ tooltip = {
+ size = {x = 200, y = 40},
+ lines = {{entry = {text = 'Buy _ research for _ wealth'}}}
+ }
+ },
+ {
+ buttonType = ButtonType.SELL_RESEARCH,
+ name = 'Sell rsch',
+ trigger = 76,
+ amount = 10,
+ tooltip = {
+ size = {x = 200, y = 40},
+ lines = {{entry = {text = 'Sell _ research for _ wealth'}}}
+ }
+ }
},
maxUnevenness = .5,
isVehicle = false,
@@ -2614,6 +2857,7 @@ units = {
lineOfSight = 5,
colorNodes = {'wall'},
name = 'Trade center',
+ description = '',
basePath = PATH .. structurePrefix .. 'TradeCenters/',
meshPath = 'acsTradeCenter.xml',
albedoPath = 'tradeCenter.jpg',
@@ -2624,10 +2868,46 @@ units = {
unitClass = UnitClass.TRADE_CENTER,
unitType = UnitType.LAND,
abilityButtons = {
- {buttonType = ButtonType.BUY_REFINEDS, name = 'Buy ref', trigger = 73},
- {buttonType = ButtonType.SELL_REFINEDS, name = 'Sell ref', trigger = 79},
- {buttonType = ButtonType.BUY_RESEARCH, name = 'Buy rsch', trigger = 75},
- {buttonType = ButtonType.SELL_RESEARCH, name = 'Sell rsch', trigger = 76}
+ {
+ buttonType = ButtonType.BUY_REFINEDS,
+ name = 'Buy ref',
+ trigger = 73,
+ amount = 10,
+ tooltip = {
+ size = {x = 200, y = 40},
+ lines = {{entry = {text = 'Buy _ refineds for _ wealth'}}}
+ }
+ },
+ {
+ buttonType = ButtonType.SELL_REFINEDS,
+ name = 'Sell ref',
+ trigger = 79,
+ amount = 10,
+ tooltip = {
+ size = {x = 200, y = 40},
+ lines = {{entry = {text = 'Sell _ refineds for _ wealth'}}}
+ }
+ },
+ {
+ buttonType = ButtonType.BUY_RESEARCH,
+ name = 'Buy rsch',
+ trigger = 75,
+ amount = 10,
+ tooltip = {
+ size = {x = 200, y = 40},
+ lines = {{entry = {text = 'Buy _ research for _ wealth'}}}
+ }
+ },
+ {
+ buttonType = ButtonType.SELL_RESEARCH,
+ name = 'Sell rsch',
+ trigger = 76,
+ amount = 10,
+ tooltip = {
+ size = {x = 200, y = 40},
+ lines = {{entry = {text = 'Sell _ research for _ wealth'}}}
+ }
+ }
},
maxUnevenness = .5,
isVehicle = false,
@@ -2639,6 +2919,7 @@ units = {
lineOfSight = 5,
colorNodes = {'Cube.001'},
name = 'Trade center',
+ description = '',
basePath = PATH .. structurePrefix .. 'TradeCenters/',
meshPath = 'aincTradeCenter.xml',
albedoPath = 'tradeCenter.jpg',
@@ -2649,10 +2930,46 @@ units = {
unitClass = UnitClass.TRADE_CENTER,
unitType = UnitType.LAND,
abilityButtons = {
- {buttonType = ButtonType.BUY_REFINEDS, name = 'Buy ref', trigger = 73},
- {buttonType = ButtonType.SELL_REFINEDS, name = 'Sell ref', trigger = 79},
- {buttonType = ButtonType.BUY_RESEARCH, name = 'Buy rsch', trigger = 75},
- {buttonType = ButtonType.SELL_RESEARCH, name = 'Sell rsch', trigger = 76}
+ {
+ buttonType = ButtonType.BUY_REFINEDS,
+ name = 'Buy ref',
+ trigger = 73,
+ amount = 10,
+ tooltip = {
+ size = {x = 200, y = 40},
+ lines = {{entry = {text = 'Buy _ refineds for _ wealth'}}}
+ }
+ },
+ {
+ buttonType = ButtonType.SELL_REFINEDS,
+ name = 'Sell ref',
+ trigger = 79,
+ amount = 10,
+ tooltip = {
+ size = {x = 200, y = 40},
+ lines = {{entry = {text = 'Sell _ refineds for _ wealth'}}}
+ }
+ },
+ {
+ buttonType = ButtonType.BUY_RESEARCH,
+ name = 'Buy rsch',
+ trigger = 75,
+ amount = 10,
+ tooltip = {
+ size = {x = 200, y = 40},
+ lines = {{entry = {text = 'Buy _ research for _ wealth'}}}
+ }
+ },
+ {
+ buttonType = ButtonType.SELL_RESEARCH,
+ name = 'Sell rsch',
+ trigger = 76,
+ amount = 10,
+ tooltip = {
+ size = {x = 200, y = 40},
+ lines = {{entry = {text = 'Sell _ research for _ wealth'}}}
+ }
+ }
},
maxUnevenness = .5,
isVehicle = false,
@@ -2664,6 +2981,7 @@ units = {
lineOfSight = 5,
colorNodes = {'sphere'},
name = 'Trade center',
+ description = '',
basePath = PATH .. structurePrefix .. 'TradeCenters/',
meshPath = 'erTradeCenter.xml',
albedoPath = 'tradeCenter.jpg',
@@ -2674,7 +2992,20 @@ units = {
unitClass = UnitClass.LAB,
unitType = UnitType.LAND,
maxUnevenness = .5,
- abilityButtons = {{buttonType = ButtonType.ACTIVE_STATE, name = 'Tech tree', guiScreen = 'acsTechTree.lua'}},
+ abilityButtons = {
+ {
+ buttonType = ButtonType.ACTIVE_STATE,
+ name = 'Tech tree',
+ guiScreen = 'acsTechTree.lua',
+ tooltip = {
+ size = {x = 200, y = 40},
+ lines = {
+ {entry = {text = 'Tech tree'}},
+ {entry = {text = 'Access the Asian technology tree'}},
+ }
+ }
+ }
+ },
isVehicle = false,
health = 500,
buildTime = 1000,
@@ -2686,6 +3017,7 @@ units = {
generationSpeed = 10,
researchCost = 1,
name = 'Lab',
+ description = '',
colorNodes = {'stripes'},
basePath = PATH .. structurePrefix .. 'Labs/',
meshPath = 'acsLab.xml',
@@ -2697,7 +3029,20 @@ units = {
unitClass = UnitClass.LAB,
unitType = UnitType.LAND,
maxUnevenness = .5,
- abilityButtons = {{buttonType = ButtonType.ACTIVE_STATE, name = 'Tech tree', guiScreen = 'aincTechTree.lua'}},
+ abilityButtons = {
+ {
+ buttonType = ButtonType.ACTIVE_STATE,
+ name = 'Tech tree',
+ guiScreen = 'aincTechTree.lua',
+ tooltip = {
+ size = {x = 200, y = 40},
+ lines = {
+ {entry = {text = 'Tech tree'}},
+ {entry = {text = 'Access the American technology tree'}},
+ }
+ }
+ }
+ },
isVehicle = false,
health = 500,
buildTime = 1000,
@@ -2709,6 +3054,7 @@ units = {
generationSpeed = 10,
researchCost = 1,
name = 'Lab',
+ description = '',
colorNodes = {'stripe'},
basePath = PATH .. structurePrefix .. 'Labs/',
meshPath = 'aincLab.xml',
@@ -2720,7 +3066,20 @@ units = {
unitClass = UnitClass.LAB,
unitType = UnitType.LAND,
maxUnevenness = .5,
- abilityButtons = {{buttonType = ButtonType.ACTIVE_STATE, name = 'Tech tree', guiScreen = 'erTechTree.lua'}},
+ abilityButtons = {
+ {
+ buttonType = ButtonType.ACTIVE_STATE,
+ name = 'Tech tree',
+ guiScreen = 'erTechTree.lua',
+ tooltip = {
+ size = {x = 200, y = 40},
+ lines = {
+ {entry = {text = 'Tech tree'}},
+ {entry = {text = 'Access the European technology tree'}},
+ }
+ }
+ }
+ },
isVehicle = false,
health = 500,
buildTime = 1000,
@@ -2732,6 +3091,7 @@ units = {
generationSpeed = 10,
researchCost = 1,
name = 'Lab',
+ description = '',
colorNodes = {'stripes'},
basePath = PATH .. structurePrefix .. 'Labs/',
meshPath = 'erLab.xml',
@@ -2796,6 +3156,7 @@ units = {
hitboxOffset = {x = 0, y = 4, z = 0},
lineOfSight = 55,
name = 'Point defense',
+ description = '',
colorNodes = {'Hoses', 'Hoses.001'},
turretNode = 'TurretBody',
basePath = PATH .. structurePrefix .. 'PointDefenses/',
@@ -2819,6 +3180,7 @@ units = {
size = {x = 9.72, y = 10.14, z = 9.72},
lineOfSight = 5,
name = 'Extractor',
+ description = 'Collects refineds from resource deposits',
basePath = PATH .. structurePrefix .. 'Extractors/',
meshPath = 'extractor.xml',
albedoPath = 'extractor.jpg',
@@ -2857,6 +3219,7 @@ units = {
hitboxOffset = {x = 0, y = 15.2, z = 0},
lineOfSight = 5,
name = 'Refinery',
+ description = '',
basePath = PATH .. structurePrefix .. 'Refineries/',
meshPath = 'aincRefinery.xml',
albedoPath = 'refinery.jpg',
@@ -2876,6 +3239,7 @@ units = {
hitboxOffset = {x = 0, y = 13.95, z = 3.23},
lineOfSight = 5,
name = 'Refinery',
+ description = '',
basePath = PATH .. structurePrefix .. 'Refineries/',
meshPath = 'erRefinery.xml',
albedoPath = 'refinery.jpg',
@@ -2891,6 +3255,7 @@ units = {
hitboxOffset = {x = 0, y = 0, z = 0},
lineOfSight = 5,
name = 'Ice sheet',
+ description = '',
basePath = PATH .. structurePrefix .. 'IceSheets/',
meshPath = 'iceSheet.xml',
albedoPath = 'iceSheet.jpg',
diff --git a/Assets/Scripts/Gui/activeGameState.lua b/Assets/Scripts/Gui/activeGameState.lua
index cda4cd6..e7fa7da 100644
--- a/Assets/Scripts/Gui/activeGameState.lua
+++ b/Assets/Scripts/Gui/activeGameState.lua
@@ -118,7 +118,14 @@ gui = {
guiScreen = 'tradingHub.lua',
pos = {x = minimapSize.x, y = res.y - minimapSize.y, z = -.2},
size = {x = Size.x, y = minimapSize.y - .75 * sz},
- trigger = 10
+ trigger = 10,
+ tooltip = {
+ offset = {x = Size.x, y = -(minimapSize.y - .75 * sz), z = .1},
+ size = {x = 310, y = 20},
+ lines = {
+ {entry = {text = 'Trade resources with other players'}},
+ }
+ }
},
{
guiType = GuiType.GUI_RECTANGLE,
diff --git a/Assets/Scripts/Gui/mainMenu.lua b/Assets/Scripts/Gui/mainMenu.lua
index f3243f8..78fef46 100644
--- a/Assets/Scripts/Gui/mainMenu.lua
+++ b/Assets/Scripts/Gui/mainMenu.lua
@@ -30,27 +30,60 @@ gui = {
size = Size,
guiType = GuiType.BUTTON,
name = 'Single player',
- buttonType = ButtonType.SINGLE_PLAYER
+ buttonType = ButtonType.SINGLE_PLAYER,
+ baseColor = {x = .6, y = .6, z = .6, w = 1},
+ hoveredOnColor = {x = .8, y = .8, z = .8, w = 1},
+ tooltip = {
+ offset = {x = 100, y = -25, z = .1},
+ size = {x = 270, y = 20},
+ lines = {
+ {
+ entry = {text = 'Play with computer opponents'},
+ },
+
+ }
+ }
},
{
pos = {x = 20, y = 160, z = 0},
size = Size,
guiType = GuiType.BUTTON,
name = 'Map editor',
- buttonType = ButtonType.MAP_EDITOR
+ buttonType = ButtonType.MAP_EDITOR,
+ tooltip = {
+ offset = {x = 100, y = -25, z = .1},
+ size = {x = 340, y = 20},
+ lines = {
+ {entry = {text = 'Create new maps or edit existing ones'}},
+ }
+ }
},
{
pos = {x = 20, y = 220, z = 0},
size = Size,
guiType = GuiType.BUTTON,
name = 'Options',
- buttonType = ButtonType.OPTIONS
+ buttonType = ButtonType.OPTIONS,
+ tooltip = {
+ offset = {x = 100, y = -25, z = .1},
+ size = {x = 200, y = 20},
+ lines = {
+ {entry = {text = 'Configure Planet Fleet'}},
+ }
+ }
},
{
pos = {x = 20, y = 280, z = 0},
size = Size,
guiType = GuiType.BUTTON,
name = 'Exit',
- buttonType = ButtonType.EXIT
+ buttonType = ButtonType.EXIT,
+ tooltip = {
+ offset = {x = 100, y = -25, z = .1},
+ size = {x = 150, y = 20},
+ lines = {
+ {entry = {text = 'Exit Planet Fleet'}},
+ }
+ }
}
}
diff --git a/Assets/Scripts/Gui/tradingScreen.lua b/Assets/Scripts/Gui/tradingScreen.lua
index 937e83b..d1da4ec 100644
--- a/Assets/Scripts/Gui/tradingScreen.lua
+++ b/Assets/Scripts/Gui/tradingScreen.lua
@@ -12,6 +12,9 @@ IconPath = {WEALTH = 'Icons/Resources/wealth.png', RESEARCH = 'Icons/Resources/r
function createResourceTrayGui(cpuPlayer, lineId, guiId, imgPath)
height = HubMargin.top + lineId * iconSize.y
+ tooltipOffset = {x = iconSize.x * (cpuPlayer and 1 or -1), y = -iconSize.y, z = .1}
+ tooltipSize = {x = 190, y = 20}
+ resourceAmountDelta = 10
if guiId == ResourceTrayGuiId.ICON then
guiElPos = {x = HubPos.x + (cpuPlayer and HubMargin.left or HubSize.x -(HubMargin.right + 3 * iconSize.x + textboxSize.x)), y = height, z = .2}
@@ -36,11 +39,18 @@ function createResourceTrayGui(cpuPlayer, lineId, guiId, imgPath)
return {
guiType = GuiType.BUTTON,
buttonType = ButtonType.RESOURCE_AMMOUNT,
- ammount = 10,
+ ammount = resourceAmountDelta,
name = '+',
pos = guiElPos,
size = iconSize,
- trigger = 10
+ trigger = 10,
+ tooltip = {
+ offset = tooltipOffset,
+ size = tooltipSize,
+ lines = {
+ {entry = {text = 'Increase value by ' .. resourceAmountDelta}},
+ }
+ }
}
elseif guiId == ResourceTrayGuiId.DECREMENT then
guiElPos = {x = HubPos.x + (cpuPlayer and HubMargin.left + 2 * iconSize.x + textboxSize.x or HubSize.x -(HubMargin.right + iconSize.x)), y = height, z = .2}
@@ -48,11 +58,18 @@ function createResourceTrayGui(cpuPlayer, lineId, guiId, imgPath)
return {
guiType = GuiType.BUTTON,
buttonType = ButtonType.RESOURCE_AMMOUNT,
- ammount = -10,
+ ammount = -resourceAmountDelta,
name = '-',
pos = guiElPos,
size = iconSize,
- trigger = 10
+ trigger = 10,
+ tooltip = {
+ offset = tooltipOffset,
+ size = tooltipSize,
+ lines = {
+ {entry = {text = 'Decrease value by ' .. resourceAmountDelta}},
+ }
+ }
}
end
end
diff --git a/Assets/Scripts/Gui/unitGui.lua b/Assets/Scripts/Gui/unitGui.lua
index 8890486..e659db7 100644
--- a/Assets/Scripts/Gui/unitGui.lua
+++ b/Assets/Scripts/Gui/unitGui.lua
@@ -11,7 +11,7 @@ function generateButton(numGui, buttonData)
yOffset = (numGui + 1) % 2 == 0 and (buttonSize.y + buttonSpace.y) or 0
button = {
- pos = {x = buttonInitPos.x + xOffset, y = buttonInitPos.y + yOffset, z = .5},
+ pos = {x = buttonInitPos.x + xOffset, y = buttonInitPos.y + yOffset, z = buttonInitPos.z},
size = buttonSize,
guiType = GuiType.BUTTON,
name = buttonData.name,
@@ -22,6 +22,8 @@ function generateButton(numGui, buttonData)
factoryId = buttonData.factoryId,
engineerId = buttonData.engineerId,
guiScreen = buttonData.guiScreen,
+ tooltip = buttonData.tooltip,
+ amount = buttonData.amount,
slotId = buttonData.slotId
}
@@ -30,15 +32,50 @@ end
function generateGui(unitId)
local gui = {}
+ haltOrder = {
+ buttonType = ButtonType.ORDER,
+ orderType = OrderType.HALT,
+ name = 'Halt',
+ tooltip = {
+ offset = {x = buttonSize.x, y = -buttonSize.y, z = .1},
+ size = {x = 210, y = 20},
+ lines = {{entry = {text = "Cancel all unit\'s orders"}}}
+ }
+ }
vehicleButtonData = {
- {buttonType = ButtonType.UNIT_STATE, imagePath = 'Icons/Buttons/chase.png'},
- {buttonType = ButtonType.ORDER, orderType = OrderType.GARRISON, name = 'Garrison'},
- {buttonType = ButtonType.ORDER, orderType = OrderType.PATROL, name = 'Patrol'},
- {buttonType = ButtonType.ORDER, orderType = OrderType.HALT, name = 'Halt'},
- }
- structureButtonData = {
- {buttonType = ButtonType.ORDER, orderType = OrderType.HALT, name = 'Halt'}
+ {
+ buttonType = ButtonType.UNIT_STATE,
+ imagePath = 'Icons/Buttons/chase.png',
+ tooltip = {
+ offset = {x = buttonSize.x, y = -buttonSize.y, z = .1},
+ size = {x = 340, y = 120},
+ lines = {
+ {entry = {text = 'Toggle unit state'}},
+ {entry = {text = '(C)hase: automatically attacks and'}},
+ {entry = {text = 'pursues enemies'}},
+ {entry = {text = '(S)tand ground: automatically fires on'}},
+ {entry = {text = 'enemies but does not move'}},
+ {entry = {text = '(H)old fire: does not react to enemies'}},
+ }
+ }
+ },
+ {
+ buttonType = ButtonType.ORDER,
+ orderType = OrderType.GARRISON,
+ name = 'Garrison',
+ tooltip = {
+ offset = {x = buttonSize.x, y = -buttonSize.y, z = .1},
+ size = {x = 300, y = 60},
+ lines = {
+ {entry = {text = 'Garrison'}},
+ {entry = {text = 'Enter a garrisonable unit, such as a'}},
+ {entry = {text = 'transport ship'}},
+ }
+ }
+ },
+ haltOrder
}
+ structureButtonData = {haltOrder}
mainUnit = units[unitId + 1]
unitButtonData = mainUnit.isVehicle and vehicleButtonData or structureButtonData
@@ -47,7 +84,15 @@ function generateGui(unitId)
unitButtonData[#unitButtonData + 1] = {
buttonType = ButtonType.ORDER,
orderType = OrderType.EJECT,
- name = 'Eject'
+ name = 'Eject',
+ tooltip = {
+ offset = {x = buttonSize.x, y = -buttonSize.y, z = .1},
+ size = {x = 220, y = 40},
+ lines = {
+ {entry = {text = 'Eject'}},
+ {entry = {text = 'Eject all garrisoned units'}},
+ }
+ }
}
end
@@ -64,7 +109,13 @@ function generateGui(unitId)
name = abilButton.name,
buttonType = abilButton.buttonType,
guiScreen = abilButton.guiScreen,
- orderType = abilButton.orderType
+ orderType = abilButton.orderType,
+ amount = abilButton.amount,
+ tooltip = {
+ offset = {x = buttonSize.x, y = -buttonSize.y, z = .1},
+ size = abilButton.tooltip.size,
+ lines = abilButton.tooltip.lines
+ }
}
gui[#gui + 1] = generateButton(#gui, buttonData)
end
@@ -86,6 +137,8 @@ function generateGui(unitId)
mainUnit.unitClass == UnitClass.ENGINEER or
mainUnit.unitClass == UnitClass.FREEZER
)
+ costStr = '' .. units[buildUnit.id + 1].cost
+ buildTimeStr = '' .. units[buildUnit.id + 1].buildTime
buttonData = {
trigger = buildUnit.trigger,
@@ -94,7 +147,21 @@ function generateGui(unitId)
factoryId = (isFactory and unitId or nil),
engineerId = (isEng and unitId or nil),
imagePath = buildUnit.iconPath,
- slotId = (ButtonType.BUILD and i - 1 or nil)
+ slotId = (ButtonType.BUILD and i - 1 or nil),
+ tooltip = {
+ offset = {x = buttonSize.x, y = -buttonSize.y, z = .1},
+ size = {x = 220, y = 60},
+ lines = {
+ {entry = {text = units[buildUnit.id + 1].name}},
+ {
+ entry = {text = 'Cost: ' .. costStr .. ' ' .. buildTimeStr},
+ icons = {
+ {charId = 0, path = 'Resources/refineds.png'},
+ {charId = 9 + #costStr, path = 'Resources/time.png'}
+ }
+ },
+ }
+ }
}
gui[#gui + 1] = generateButton(#gui, buttonData)
diff --git a/Assets/Textures/Icons/Resources/time.png b/Assets/Textures/Icons/Resources/time.png
index ae1ba7c..a671a83 100644
Binary files a/Assets/Textures/Icons/Resources/time.png and b/Assets/Textures/Icons/Resources/time.png differ
diff --git a/Assets/Textures/Icons/Resources/time.svg b/Assets/Textures/Icons/Resources/time.svg
index 8462ec8..0de6591 100644
--- a/Assets/Textures/Icons/Resources/time.svg
+++ b/Assets/Textures/Icons/Resources/time.svg
@@ -7,7 +7,7 @@
viewBox="0 0 210 297"
version="1.1"
id="svg1"
- inkscape:version="1.3.2 (091e20ef0f, 2023-11-25, custom)"
+ inkscape:version="1.4.4 (dcaf3e7d9e, 2026-05-05)"
sodipodi:docname="time.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
@@ -23,9 +23,9 @@
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
- inkscape:zoom="1.0733976"
- inkscape:cx="429.47738"
- inkscape:cy="417.36631"
+ inkscape:zoom="0.75900672"
+ inkscape:cx="334.64789"
+ inkscape:cy="388.0071"
inkscape:window-width="1918"
inkscape:window-height="1058"
inkscape:window-x="0"
@@ -39,23 +39,24 @@
inkscape:groupmode="layer"
id="layer1">
+ inkscape:export-xdpi="46.181816"
+ inkscape:export-ydpi="46.181816" />
+ x="21.99954"
+ y="144.25369"
+ transform="rotate(-50.109638)" />
getStateManager();
diff --git a/activeStateButton.h b/activeStateButton.h
index 48a7c14..7433673 100644
--- a/activeStateButton.h
+++ b/activeStateButton.h
@@ -1,10 +1,10 @@
#ifndef ACTIVE_STATE_BUTTON_H
#define ACTIVE_STATE_BUTTON_H
-#include
+#include "pfButtonBase.h"
namespace battleship{
- class ActiveStateButton : public vb01Gui::Button{
+ class ActiveStateButton : public PfButtonBase{
public:
ActiveStateButton(vb01::Vector3, vb01::Vector2, std::string, std::string, std::string, int = -1, std::string = "");
void onClick();
diff --git a/backButton.cpp b/backButton.cpp
index e221666..09cc4f6 100644
--- a/backButton.cpp
+++ b/backButton.cpp
@@ -8,7 +8,7 @@ namespace battleship{
using namespace vb01Gui;
BackButton::BackButton(Vector3 pos, Vector2 size, string name, string scr) :
- Button(pos, size, name, GameManager::getSingleton()->getPath() + "Fonts/batang.ttf", -1, true),
+ PfButtonBase(pos, size, name, GameManager::getSingleton()->getPath() + "Fonts/batang.ttf", -1, true),
screen(scr){}
void BackButton::onClick() {
diff --git a/backButton.h b/backButton.h
index 504eef7..86b3760 100644
--- a/backButton.h
+++ b/backButton.h
@@ -1,10 +1,10 @@
#ifndef BACK_BUTTON_H
#define BACK_BUTTON_H
-#include
+#include "pfButtonBase.h"
namespace battleship{
- class BackButton : public vb01Gui::Button{
+ class BackButton : public PfButtonBase{
public:
BackButton(vb01::Vector3, vb01::Vector2, std::string, std::string);
void onClick();
diff --git a/concreteGuiManager.cpp b/concreteGuiManager.cpp
index 31be54f..5df9ca3 100644
--- a/concreteGuiManager.cpp
+++ b/concreteGuiManager.cpp
@@ -1,4 +1,3 @@
-#include
#include
#include
@@ -6,6 +5,7 @@
#include "concreteGuiManager.h"
#include "unit.h"
#include "gameManager.h"
+#include "pfButtonBase.h"
#include "singlePlayerButton.h"
#include "mapEditorButton.h"
#include "optionsButton.h"
@@ -60,6 +60,56 @@ namespace battleship{
return concreteGuiManager;
}
+ Tooltip* ConcreteGuiManager::parseTooltip(sol::table &tooltipTbl, Vector3 guiPos){
+ sol::table offsetTbl = tooltipTbl["offset"], sizeTbl = tooltipTbl["size"];
+ Vector3 offset = Vector3(offsetTbl["x"], offsetTbl["y"], offsetTbl["z"]);
+ Vector2 size = Vector2(sizeTbl["x"], sizeTbl["y"]);
+
+ sol::table lineDataTbl = tooltipTbl["lines"];
+ int numLines = lineDataTbl.size();
+ vector lines;
+
+ for(int i = 0; i < numLines; i++){
+ vector> iconsData;
+ sol::optional iconsTblOpt = lineDataTbl[i + 1]["icons"];
+
+ if(iconsTblOpt != sol::nullopt){
+ sol::table iconsTbl = lineDataTbl[i + 1]["icons"];
+ int numIcons = iconsTbl.size();
+
+ for(int j = 0; j < numIcons; j++)
+ iconsData.push_back(make_pair(iconsTbl[j + 1]["charId"], iconsTbl[j + 1]["path"]));
+ }
+
+ sol::table entryTbl = lineDataTbl[i + 1]["entry"];
+ wstring entry = (wstring)entryTbl["text"];
+ Vector4 color = Vector4::VEC_IJKL;
+ sol::optional colorTblOpt = entryTbl["color"];
+
+ if(colorTblOpt != sol::nullopt)
+ color = Vector4(entryTbl["color"]["r"], entryTbl["color"]["g"], entryTbl["color"]["b"], entryTbl["color"]["a"]);
+
+ int height = 20;
+ float scale = .2;
+ Vector3 textOffset = Vector3(0, -3, .21);
+
+ lines.push_back(Tooltip::LineData(entry, color, iconsData, height, textOffset, scale));
+ }
+
+ string fontPath = GameManager::getSingleton()->getPath() + "Fonts/batang.ttf";
+ Tooltip *tooltip = new Tooltip(guiPos + offset, size, lines, fontPath);
+
+ sol::optional bgColorTblOpt = tooltipTbl["backgroundColor"];
+
+ if(bgColorTblOpt != sol::nullopt){
+ sol::table bgColorTbl = tooltipTbl["backgroundColor"];
+ Vector4 bgColor = Vector4(bgColorTbl["x"], bgColorTbl["y"], bgColorTbl["z"], bgColorTbl["w"]);
+ tooltip->getBackground()->getMaterial()->setVec4Uniform("diffuseColor", bgColor);
+ }
+
+ return tooltip;
+ }
+
//TODO refactor player difficulty and faction listbox selection
//TODO remove hardcoded font path values
//TODO use configurable map path values
@@ -91,7 +141,15 @@ namespace battleship{
bool texturingEnabled = true;
}
- Button *button = nullptr;
+ Tooltip *tooltip = nullptr;
+ sol::optional tooltipTblOpt = guiTable["tooltip"];
+
+ if(tooltipTblOpt != sol::nullopt){
+ sol::table tbl = guiTable["tooltip"];
+ tooltip = parseTooltip(tbl, pos);
+ }
+
+ PfButtonBase *button = nullptr;
string guiScreen = "";
switch(type){
@@ -198,16 +256,16 @@ namespace battleship{
button = new ResearchButton(pos, size, name, (int)guiTable["trigger"], imagePath, (int)guiTable["techId"]);
break;
case BUY_REFINEDS:
- button = new TradeButton(pos, size, name, (int)guiTable["trigger"], imagePath, TradeButton::Type::BUY_REFINEDS);
+ button = new TradeButton(pos, size, name, (int)guiTable["trigger"], imagePath, TradeButton::Type::BUY_REFINEDS, (int)guiTable["amount"]);
break;
case SELL_REFINEDS:
- button = new TradeButton(pos, size, name, (int)guiTable["trigger"], imagePath, TradeButton::Type::SELL_REFINEDS);
+ button = new TradeButton(pos, size, name, (int)guiTable["trigger"], imagePath, TradeButton::Type::SELL_REFINEDS, (int)guiTable["amount"]);
break;
case BUY_RESEARCH:
- button = new TradeButton(pos, size, name, (int)guiTable["trigger"], imagePath, TradeButton::Type::BUY_RESEARCH);
+ button = new TradeButton(pos, size, name, (int)guiTable["trigger"], imagePath, TradeButton::Type::BUY_RESEARCH, (int)guiTable["amount"]);
break;
case SELL_RESEARCH:
- button = new TradeButton(pos, size, name, (int)guiTable["trigger"], imagePath, TradeButton::Type::SELL_RESEARCH);
+ button = new TradeButton(pos, size, name, (int)guiTable["trigger"], imagePath, TradeButton::Type::SELL_RESEARCH, (int)guiTable["amount"]);
break;
case ACTIVE_STATE_BUTTON:
button = new ActiveStateButton(pos, size, guiTable["guiScreen"], name, fontBasePath + "batang.ttf", (int)guiTable["trigger"], imagePath);
@@ -246,6 +304,23 @@ namespace battleship{
}
}
+ sol::optional baseColorTblOpt = guiTable["baseColor"], hoveredColorTblOpt = guiTable["hoveredOnColor"];
+
+ if(baseColorTblOpt != sol::nullopt){
+ sol::table baseColorTbl = guiTable["baseColor"];
+ Vector4 color = Vector4(baseColorTbl["x"], baseColorTbl["y"], baseColorTbl["z"], baseColorTbl["w"]);
+ button->setBaseColor(color);
+ button->setColor(color);
+ }
+
+ if(hoveredColorTblOpt != sol::nullopt){
+ sol::table hoveredColorTbl = guiTable["hoveredOnColor"];
+ button->setHoveredOnColor(Vector4(hoveredColorTbl["x"], hoveredColorTbl["y"], hoveredColorTbl["z"], hoveredColorTbl["w"]));
+ button->setEnabledHoverdOn(true);
+ }
+
+ button->setTooltip(tooltip);
+
int typeArr[2]{(int)GuiElementType::BUTTON, (int)type};
guiElements.push_back(make_pair(typeArr, (void*)button));
diff --git a/concreteGuiManager.h b/concreteGuiManager.h
index 06ae6a2..ac23877 100644
--- a/concreteGuiManager.h
+++ b/concreteGuiManager.h
@@ -2,6 +2,7 @@
#define CONCRETE_GUI_MANAGER_H
#include
+#include
#include
#include
@@ -71,6 +72,7 @@ namespace battleship{
CONSOLE,
TRADE_OFFERS
};
+ class Tooltip;
class ConcreteGuiManager : public vb01Gui::AbstractGuiManager{
public:
@@ -99,6 +101,7 @@ namespace battleship{
void parseLuaScript(std::string, std::string = "");
private:
ConcreteGuiManager();
+ Tooltip* parseTooltip(sol::table&, vb01::Vector3);
vb01Gui::Button* parseButton(int);
vb01Gui::Listbox* parseGameObjectListbox();
vb01Gui::Listbox* parseListbox(int);
diff --git a/defaultsButton.cpp b/defaultsButton.cpp
index 8658e2c..21f91b9 100644
--- a/defaultsButton.cpp
+++ b/defaultsButton.cpp
@@ -6,7 +6,7 @@ namespace battleship{
using namespace vb01;
using namespace vb01Gui;
- DefaultsButton::DefaultsButton(Vector3 pos, Vector2 size, string name) : Button(pos, size, name, GameManager::getSingleton()->getPath() + "Fonts/batang.ttf", -1, true) {}
+ DefaultsButton::DefaultsButton(Vector3 pos, Vector2 size, string name) : PfButtonBase(pos, size, name, GameManager::getSingleton()->getPath() + "Fonts/batang.ttf", -1, true) {}
void DefaultsButton::onClick() {}
}
diff --git a/defaultsButton.h b/defaultsButton.h
index f7ac6dd..4c722ed 100644
--- a/defaultsButton.h
+++ b/defaultsButton.h
@@ -1,10 +1,10 @@
#ifndef DEFAULTS_BUTTON_H
#define DEFAULTS_BUTTON_H
-#include
+#include "pfButtonBase.h"
namespace battleship{
- class DefaultsButton : public vb01Gui::Button{
+ class DefaultsButton : public PfButtonBase{
public:
DefaultsButton(vb01::Vector3, vb01::Vector2, std::string);
void onClick();
diff --git a/exitButton.cpp b/exitButton.cpp
index b1b895c..a1684d1 100755
--- a/exitButton.cpp
+++ b/exitButton.cpp
@@ -5,7 +5,7 @@ using namespace std;
using namespace vb01;
namespace battleship{
- ExitButton::ExitButton(Vector3 pos, Vector2 size) : Button(pos, size, "Exit", GameManager::getSingleton()->getPath() + "Fonts/batang.ttf", -1, true) {}
+ ExitButton::ExitButton(Vector3 pos, Vector2 size) : PfButtonBase(pos, size, "Exit", GameManager::getSingleton()->getPath() + "Fonts/batang.ttf", -1, true) {}
void ExitButton::onClick() {
GameManager::getSingleton()->setRunning(false);
diff --git a/exitButton.h b/exitButton.h
index c845342..54d17f2 100755
--- a/exitButton.h
+++ b/exitButton.h
@@ -1,11 +1,12 @@
#ifndef EXIT_BUTTON_H
#define EXIT_BUTTON_H
-#include
+#include "pfButtonBase.h"
+
#include
namespace battleship {
- class ExitButton : public vb01Gui::Button {
+ class ExitButton : public PfButtonBase {
public:
ExitButton(vb01::Vector3, vb01::Vector2);
void onClick();
diff --git a/exportButton.cpp b/exportButton.cpp
index f38eea6..debb69a 100644
--- a/exportButton.cpp
+++ b/exportButton.cpp
@@ -10,7 +10,7 @@ namespace battleship{
using namespace vb01Gui;
using namespace gameBase;
- ExportButton::ExportButton(Vector3 pos, Vector2 size) : Button(pos, size, "Export", GameManager::getSingleton()->getPath() + "Fonts/batang.ttf"){}
+ ExportButton::ExportButton(Vector3 pos, Vector2 size) : PfButtonBase(pos, size, "Export", GameManager::getSingleton()->getPath() + "Fonts/batang.ttf", -1, true){}
void ExportButton::onClick(){
StateManager *sm = GameManager::getSingleton()->getStateManager();
diff --git a/exportButton.h b/exportButton.h
index 6066051..20db0e1 100644
--- a/exportButton.h
+++ b/exportButton.h
@@ -1,10 +1,10 @@
#ifndef EXPORT_BUTTON_H
#define EXPORT_BUTTON_H
-#include
+#include "pfButtonBase.h"
namespace battleship{
- class ExportButton : public vb01Gui::Button{
+ class ExportButton : public PfButtonBase{
public:
ExportButton(vb01::Vector3 pos, vb01::Vector2 size);
void onClick();
diff --git a/inGameAppState.cpp b/inGameAppState.cpp
index 3212658..76a610f 100755
--- a/inGameAppState.cpp
+++ b/inGameAppState.cpp
@@ -1,6 +1,5 @@
#include
-#include
#include
#include
@@ -11,6 +10,7 @@
#include "defConfigs.h"
#include "inGameAppState.h"
+#include "pfButtonBase.h"
#include "game.h"
#include "console.h"
#include "gameObjectFrameController.h"
@@ -27,22 +27,23 @@ namespace battleship{
using namespace configData;
using namespace gameBase;
- InGameAppState::ResumeButton::ResumeButton(Vector3 pos, Vector2 size) : Button(pos, size, "Resume", GameManager::getSingleton()->getPath() + "Fonts/batang.ttf", -1, true) {}
+ InGameAppState::ResumeButton::ResumeButton(Vector3 pos, Vector2 size) : PfButtonBase(pos, size, "Resume", GameManager::getSingleton()->getPath() + "Fonts/batang.ttf", -1, true) {}
void InGameAppState::ResumeButton::onClick() {
Game::getSingleton()->togglePause();
}
- InGameAppState::ConsoleButton::ConsoleButton(Vector3 pos, Vector2 size) : Button(pos, size, "Console", GameManager::getSingleton()->getPath() + "Fonts/batang.ttf", -1, true) { }
+ InGameAppState::ConsoleButton::ConsoleButton(Vector3 pos, Vector2 size) : PfButtonBase(pos, size, "Console", GameManager::getSingleton()->getPath() + "Fonts/batang.ttf", -1, true) {}
void InGameAppState::ConsoleButton::onClick() {
ConcreteGuiManager::getSingleton()->readLuaScreenScript("console.lua");
}
- InGameAppState::ConsoleButton::ConsoleButton::ConsoleCommandEntryButton::ConsoleCommandEntryButton(Textbox *t, Listbox *l, Vector3 pos, Vector2 size, string name) : Button(pos, size, name, GameManager::getSingleton()->getPath() + "Fonts/batang.ttf", 257, true) {
- textbox = t;
- listbox = l;
- }
+ InGameAppState::ConsoleButton::ConsoleButton::ConsoleCommandEntryButton::ConsoleCommandEntryButton(Textbox *t, Listbox *l, Vector3 pos, Vector2 size, string name) :
+ PfButtonBase(pos, size, name, GameManager::getSingleton()->getPath() + "Fonts/batang.ttf", 257, true),
+ textbox(t),
+ listbox(l)
+ {}
void InGameAppState::ConsoleButton::ConsoleButton::ConsoleCommandEntryButton::onClick() {
Console::execute(wstringToString(textbox->getText()));
diff --git a/inGameAppState.h b/inGameAppState.h
index 14172d5..04a15fb 100755
--- a/inGameAppState.h
+++ b/inGameAppState.h
@@ -16,16 +16,16 @@
namespace battleship{
class InGameAppState : public gameBase::AbstractAppState {
public:
- class ResumeButton : public vb01Gui::Button {
+ class ResumeButton : public PfButtonBase {
public:
ResumeButton(vb01::Vector3, vb01::Vector2);
void onClick();
private:
};
- class ConsoleButton : public vb01Gui::Button {
+ class ConsoleButton : public PfButtonBase {
public:
- class ConsoleCommandEntryButton : public Button {
+ class ConsoleCommandEntryButton : public PfButtonBase {
public:
ConsoleCommandEntryButton(vb01Gui::Textbox*, vb01Gui::Listbox*, vb01::Vector3, vb01::Vector2, std::string);
void onClick();
diff --git a/loadMapButton.cpp b/loadMapButton.cpp
index 9d16784..6c5d6de 100644
--- a/loadMapButton.cpp
+++ b/loadMapButton.cpp
@@ -12,7 +12,10 @@ namespace battleship{
using namespace vb01Gui;
using namespace gameBase;
- LoadMapButton::OkButton::OkButton(vb01::Vector3 pos, vb01::Vector2 size, vb01Gui::Listbox *listbox) : Button(pos, size, "Ok", GameManager::getSingleton()->getPath() + "Fonts/batang.ttf"){ this->listbox = listbox; }
+ LoadMapButton::OkButton::OkButton(Vector3 pos, Vector2 size, Listbox *lb) :
+ PfButtonBase(pos, size, "Ok", GameManager::getSingleton()->getPath() + "Fonts/batang.ttf", -1, true),
+ listbox(lb)
+ {}
void LoadMapButton::OkButton::onClick(){
StateManager *sm = GameManager::getSingleton()->getStateManager();
@@ -20,7 +23,7 @@ namespace battleship{
handleLoadingGui(new LoadingAppState(new MapEditorAppState(name, Vector2::VEC_ZERO, false), "mapEditor.lua"));
}
- LoadMapButton::LoadMapButton(Vector3 pos, Vector2 size) : Button(pos, size, "Load map", GameManager::getSingleton()->getPath() + "Fonts/batang.ttf"){}
+ LoadMapButton::LoadMapButton(Vector3 pos, Vector2 size) : PfButtonBase(pos, size, "Load map", GameManager::getSingleton()->getPath() + "Fonts/batang.ttf", -1, true){}
void LoadMapButton::onClick(){
ConcreteGuiManager::getSingleton()->readLuaScreenScript("loadMap.lua");
diff --git a/loadMapButton.h b/loadMapButton.h
index 997fea3..3a8f2fa 100644
--- a/loadMapButton.h
+++ b/loadMapButton.h
@@ -1,16 +1,16 @@
#ifndef LOAD_MAP_BUTTON_H
#define LOAD_MAP_BUTTON_H
-#include
+#include "pfButtonBase.h"
namespace vb01Gui{
class Listbox;
}
namespace battleship{
- class LoadMapButton : public vb01Gui::Button{
+ class LoadMapButton : public PfButtonBase{
public:
- class OkButton : public vb01Gui::Button{
+ class OkButton : public PfButtonBase{
public:
OkButton(vb01::Vector3, vb01::Vector2, vb01Gui::Listbox*);
void onClick();
diff --git a/mainMenuButton.cpp b/mainMenuButton.cpp
index f7516c9..5ec3615 100644
--- a/mainMenuButton.cpp
+++ b/mainMenuButton.cpp
@@ -7,7 +7,7 @@ namespace battleship{
using namespace vb01;
using namespace vb01Gui;
- MainMenuButton::MainMenuButton(Vector3 pos, Vector2 size, string name) : Button(pos, size, name, GameManager::getSingleton()->getPath() + "Fonts/batang.ttf", -1, true){}
+ MainMenuButton::MainMenuButton(Vector3 pos, Vector2 size, string name) : PfButtonBase(pos, size, name, GameManager::getSingleton()->getPath() + "Fonts/batang.ttf", -1, true){}
void MainMenuButton::onClick(){
}
diff --git a/mainMenuButton.h b/mainMenuButton.h
index dff8db3..3ed0aa7 100644
--- a/mainMenuButton.h
+++ b/mainMenuButton.h
@@ -1,10 +1,10 @@
#ifndef MAIN_MENU_BUTTON_H
#define MAIN_MENU_BUTTON_H
-#include
+#include "pfButtonBase.h"
namespace battleship{
- class MainMenuButton : public vb01Gui::Button{
+ class MainMenuButton : public PfButtonBase{
public:
MainMenuButton(vb01::Vector3, vb01::Vector2, std::string);
void onClick();
diff --git a/mapEditorButton.h b/mapEditorButton.h
index 5c3be9d..1d63cdd 100644
--- a/mapEditorButton.h
+++ b/mapEditorButton.h
@@ -1,14 +1,13 @@
#ifndef MAP_EDITOR_BUTTON_H
#define MAP_EDITOR_BUTTON_H
-#include
-
+#include "pfButtonBase.h"
#include "gameManager.h"
namespace battleship{
- class MapEditorButton : public vb01Gui::Button{
+ class MapEditorButton : public PfButtonBase{
public:
- MapEditorButton(vb01::Vector3 pos, vb01::Vector2 size) : vb01Gui::Button(pos, size, "Map editor", GameManager::getSingleton()->getPath() + "Fonts/batang.ttf"){}
+ MapEditorButton(vb01::Vector3 pos, vb01::Vector2 size) : PfButtonBase(pos, size, "Map editor", GameManager::getSingleton()->getPath() + "Fonts/batang.ttf", -1, true){}
void onClick();
private:
};
diff --git a/newMapButton.cpp b/newMapButton.cpp
index f85fee5..754aa0d 100644
--- a/newMapButton.cpp
+++ b/newMapButton.cpp
@@ -15,11 +15,12 @@ namespace battleship{
using namespace vb01Gui;
using namespace gameBase;
- NewMapButton::OkButton::OkButton(vb01::Vector3 pos, vb01::Vector2 size, vb01Gui::Textbox *name, vb01Gui::Textbox *sx, vb01Gui::Textbox *sy) : Button(pos, size, "Ok", GameManager::getSingleton()->getPath() + "Fonts/batang.ttf", -1, true){
- this->name = name;
- this->sizeX = sx;
- this->sizeY = sy;
- }
+ NewMapButton::OkButton::OkButton(Vector3 pos, Vector2 size, Textbox *nm, Textbox *sx, Textbox *sy) :
+ PfButtonBase(pos, size, "Ok", GameManager::getSingleton()->getPath() + "Fonts/batang.ttf", -1, true),
+ name(nm),
+ sizeX(sx),
+ sizeY(sy)
+ {}
void NewMapButton::OkButton::onClick(){
Vector2 size = Vector2(
@@ -29,7 +30,7 @@ namespace battleship{
handleLoadingGui(new LoadingAppState(new MapEditorAppState(wstringToString(name->getText()), size, true), "mapEditor.lua"));
}
- NewMapButton::NewMapButton(Vector3 pos, Vector2 size) : Button(pos, size, "New map", GameManager::getSingleton()->getPath() + "Fonts/batang.ttf"){}
+ NewMapButton::NewMapButton(Vector3 pos, Vector2 size) : PfButtonBase(pos, size, "New map", GameManager::getSingleton()->getPath() + "Fonts/batang.ttf", -1, true){}
void NewMapButton::onClick(){
ConcreteGuiManager::getSingleton()->readLuaScreenScript("newMap.lua");
diff --git a/newMapButton.h b/newMapButton.h
index fd48fb0..300ff7d 100644
--- a/newMapButton.h
+++ b/newMapButton.h
@@ -1,16 +1,16 @@
#ifndef NEW_MAP_BUTTON_H
#define NEW_MAP_BUTTON_H
-#include
+#include "pfButtonBase.h"
namespace vb01Gui{
class Textbox;
}
namespace battleship{
- class NewMapButton : public vb01Gui::Button{
+ class NewMapButton : public PfButtonBase{
public:
- class OkButton : public vb01Gui::Button{
+ class OkButton : public PfButtonBase{
public:
OkButton(vb01::Vector3, vb01::Vector2, vb01Gui::Textbox*, vb01Gui::Textbox*, vb01Gui::Textbox*);
void onClick();
diff --git a/offerButton.cpp b/offerButton.cpp
index c9bf9f7..b3f2c81 100644
--- a/offerButton.cpp
+++ b/offerButton.cpp
@@ -17,7 +17,7 @@ namespace battleship{
using namespace gameBase;
OfferButton::OfferButton(Vector3 pos, Vector2 size, int plId, string name, int trigger, string imagePath) :
- Button(pos, size, name, GameManager::getSingleton()->getPath() + "Fonts/batang.ttf", trigger, true, imagePath),
+ PfButtonBase(pos, size, name, GameManager::getSingleton()->getPath() + "Fonts/batang.ttf", trigger, true, imagePath),
playerId(plId){}
void OfferButton::onClick(){
diff --git a/offerButton.h b/offerButton.h
index 6de5592..07b3d08 100644
--- a/offerButton.h
+++ b/offerButton.h
@@ -1,10 +1,10 @@
#ifndef OFFER_BUTTON_H
#define OFFER_BUTTON_H
-#include
+#include "pfButtonBase.h"
namespace battleship{
- class OfferButton : public vb01Gui::Button{
+ class OfferButton : public PfButtonBase{
public:
OfferButton(vb01::Vector3, vb01::Vector2, int, std::string, int, std::string);
void onClick();
diff --git a/okButton.cpp b/okButton.cpp
index 91aa580..12bf6af 100644
--- a/okButton.cpp
+++ b/okButton.cpp
@@ -6,7 +6,7 @@ namespace battleship{
using namespace vb01;
using namespace vb01Gui;
- OkButton::OkButton(Vector3 pos, Vector2 size, string name) : Button(pos, size, name, GameManager::getSingleton()->getPath() + "Fonts/batang.ttf", -1, true) {}
+ OkButton::OkButton(Vector3 pos, Vector2 size, string name) : PfButtonBase(pos, size, name, GameManager::getSingleton()->getPath() + "Fonts/batang.ttf", -1, true) {}
void OkButton::onClick() {}
}
diff --git a/okButton.h b/okButton.h
index 9aedbd7..4b130cb 100644
--- a/okButton.h
+++ b/okButton.h
@@ -1,10 +1,10 @@
#ifndef OK_BUTTON_H
#define OK_BUTTON_H
-#include
+#include "pfButtonBase.h"
namespace battleship{
- class OkButton : public vb01Gui::Button{
+ class OkButton : public PfButtonBase{
public:
OkButton(vb01::Vector3, vb01::Vector2, std::string);
void onClick();
diff --git a/optionsButton.cpp b/optionsButton.cpp
index d7297c7..151c49b 100755
--- a/optionsButton.cpp
+++ b/optionsButton.cpp
@@ -7,7 +7,7 @@ using namespace vb01;
using namespace std;
namespace battleship{
- OptionsButton::OptionsButton(Vector3 pos, Vector2 size, string name, bool separate) : Button(pos, size, name, GameManager::getSingleton()->getPath() + "Fonts/batang.ttf", -1, separate) {}
+ OptionsButton::OptionsButton(Vector3 pos, Vector2 size, string name, bool separate) : PfButtonBase(pos, size, name, GameManager::getSingleton()->getPath() + "Fonts/batang.ttf", -1, separate) {}
void OptionsButton::onClick() {
ConcreteGuiManager::getSingleton()->readLuaScreenScript("options.lua");
diff --git a/optionsButton.h b/optionsButton.h
index 98a5681..5415806 100755
--- a/optionsButton.h
+++ b/optionsButton.h
@@ -1,11 +1,10 @@
-#pragma once
#ifndef OPTIONS_BUTTON_H
#define OPTIONS_BUTTON_H
-#include
+#include "pfButtonBase.h"
namespace battleship {
- class OptionsButton : public vb01Gui::Button {
+ class OptionsButton : public PfButtonBase {
public:
OptionsButton(vb01::Vector3, vb01::Vector2, std::string, bool);
virtual void onClick();
diff --git a/orderButton.cpp b/orderButton.cpp
index 0251c06..147e3ba 100644
--- a/orderButton.cpp
+++ b/orderButton.cpp
@@ -13,7 +13,7 @@ namespace battleship{
using namespace gameBase;
OrderButton::OrderButton(Vector3 pos, Vector2 size, string name, int trigger, string imagePath, int oid) :
- Button(pos, size, name, GameManager::getSingleton()->getPath() + "Fonts/batang.ttf", trigger, true, imagePath),
+ PfButtonBase(pos, size, name, GameManager::getSingleton()->getPath() + "Fonts/batang.ttf", trigger, true, imagePath),
orderId(oid)
{}
diff --git a/orderButton.h b/orderButton.h
index fa05fc0..015bdcb 100644
--- a/orderButton.h
+++ b/orderButton.h
@@ -1,10 +1,10 @@
#ifndef ORDER_BUTTON_H
#define ORDER_BUTTON_H
-#include
+#include "pfButtonBase.h"
namespace battleship{
- class OrderButton : public vb01Gui::Button{
+ class OrderButton : public PfButtonBase{
public:
OrderButton(vb01::Vector3, vb01::Vector2, std::string, int, std::string, int);
void onClick();
diff --git a/pfButtonBase.cpp b/pfButtonBase.cpp
new file mode 100644
index 0000000..d7504a4
--- /dev/null
+++ b/pfButtonBase.cpp
@@ -0,0 +1,23 @@
+#include "pfButtonBase.h"
+#include "tooltip.h"
+
+#include
+#include
+
+namespace battleship{
+ using namespace std;
+ using namespace vb01;
+
+ PfButtonBase::PfButtonBase(Vector3 pos, Vector2 size, string name, string fontPath, int trigger, bool separate, string imagePath) : Button(pos, size, name, fontPath, trigger, separate, imagePath){}
+
+ PfButtonBase::~PfButtonBase(){
+ if(tooltip) delete tooltip;
+ }
+
+ void PfButtonBase::update() {
+ if(enabledHoveredOn)
+ setColor(mouseOver ? hoveredOnColor : baseColor);
+
+ if(tooltip) tooltip->getBackground()->getNode()->setVisible(mouseOver);
+ }
+}
diff --git a/pfButtonBase.h b/pfButtonBase.h
new file mode 100644
index 0000000..d0a5353
--- /dev/null
+++ b/pfButtonBase.h
@@ -0,0 +1,25 @@
+#ifndef PF_BUTTON_BASE_H
+#define PF_BUTTON_BASE_H
+
+#include
+
+namespace battleship{
+ class Tooltip;
+
+ class PfButtonBase : public vb01Gui::Button{
+ public:
+ PfButtonBase(vb01::Vector3, vb01::Vector2, std::string, std::string, int, bool, std::string = "");
+ ~PfButtonBase();
+ virtual void update();
+ inline void setTooltip(Tooltip *t){this->tooltip = t;}
+ inline void setEnabledHoverdOn(bool e){this->enabledHoveredOn = e;}
+ inline void setHoveredOnColor(vb01::Vector4 hc){this->hoveredOnColor = hc;}
+ inline void setBaseColor(vb01::Vector4 bc){this->baseColor = bc;}
+ protected:
+ bool enabledHoveredOn = false;
+ vb01::Vector4 baseColor, hoveredOnColor;
+ Tooltip *tooltip = nullptr;
+ };
+}
+
+#endif
diff --git a/playButton.cpp b/playButton.cpp
index 1374d72..9dc7070 100644
--- a/playButton.cpp
+++ b/playButton.cpp
@@ -15,7 +15,7 @@ namespace battleship{
using namespace vb01Gui;
using namespace gameBase;
- PlayButton::PlayButton(Listbox *ml, Vector3 pos, Vector2 size, string name, bool separate) : Button(pos, size, name, GameManager::getSingleton()->getPath() + "Fonts/batang.ttf", GLFW_KEY_P, separate), mapListbox(ml) {}
+ PlayButton::PlayButton(Listbox *ml, Vector3 pos, Vector2 size, string name, bool separate) : PfButtonBase(pos, size, name, GameManager::getSingleton()->getPath() + "Fonts/batang.ttf", GLFW_KEY_P, separate), mapListbox(ml) {}
void PlayButton::onClick() {
ConcreteGuiManager *guiManager = ConcreteGuiManager::getSingleton();
diff --git a/playButton.h b/playButton.h
index d265cdc..5eecd69 100644
--- a/playButton.h
+++ b/playButton.h
@@ -1,14 +1,14 @@
#ifndef PLAY_BUTTON_H
#define PLAY_BUTTON_H
-#include
+#include "pfButtonBase.h"
namespace vb01Gui{
class Listbox;
}
namespace battleship{
- class PlayButton : public vb01Gui::Button {
+ class PlayButton : public PfButtonBase {
public:
PlayButton(vb01Gui::Listbox*, vb01::Vector3, vb01::Vector2, std::string, bool);
void onClick();
diff --git a/resourceAmmountButton.cpp b/resourceAmmountButton.cpp
index 2d1448f..8af5cf9 100644
--- a/resourceAmmountButton.cpp
+++ b/resourceAmmountButton.cpp
@@ -9,7 +9,9 @@ namespace battleship{
using namespace vb01;
using namespace vb01Gui;
- ResourceAmmountButton::ResourceAmmountButton(Vector3 pos, Vector2 size, string name, int amm, int trigger, string imagePath) : Button(pos, size, name, GameManager::getSingleton()->getPath() + "Fonts/batang.ttf", trigger, true, imagePath), ammount(amm) {
+ ResourceAmmountButton::ResourceAmmountButton(Vector3 pos, Vector2 size, string name, int amm, int trigger, string imagePath) :
+ PfButtonBase(pos, size, name, GameManager::getSingleton()->getPath() + "Fonts/batang.ttf", trigger, true, imagePath), ammount(amm)
+ {
ConcreteGuiManager *guiManager = ConcreteGuiManager::getSingleton();
int numTextboxes = guiManager->getTextboxes().size();
textbox = guiManager->getTextboxes()[numTextboxes - 1];
diff --git a/resourceAmmountButton.h b/resourceAmmountButton.h
index 390dedd..502a88c 100644
--- a/resourceAmmountButton.h
+++ b/resourceAmmountButton.h
@@ -1,14 +1,14 @@
#ifndef RESOURCE_AMMOUNT_BUTTON_H
#define RESOURCE_AMMOUNT_BUTTON_H
-#include
+#include "pfButtonBase.h"
namespace vb01Gui{
class Textbox;
}
namespace battleship{
- class ResourceAmmountButton : public vb01Gui::Button{
+ class ResourceAmmountButton : public PfButtonBase{
public:
ResourceAmmountButton(vb01::Vector3, vb01::Vector2, std::string, int, int, std::string);
void onClick();
diff --git a/singlePlayerButton.cpp b/singlePlayerButton.cpp
index 72138f7..0d0cc62 100644
--- a/singlePlayerButton.cpp
+++ b/singlePlayerButton.cpp
@@ -1,8 +1,11 @@
#include "singlePlayerButton.h"
-#include "gameManager.h"
#include "concreteGuiManager.h"
+#include "gameManager.h"
+#include "tooltip.h"
#include
+#include
+#include
#include
#include
@@ -12,15 +15,7 @@ namespace battleship{
using namespace vb01;
using namespace vb01Gui;
- SinglePlayerButton::SinglePlayerButton(Vector3 pos, Vector2 size, string name) : Button(pos, size, name, GameManager::getSingleton()->getPath() + "Fonts/batang.ttf", GLFW_KEY_S, true) {}
-
- void SinglePlayerButton::onMouseOver(){
- setColor(Vector4(.8, .8, .8, 1));
- }
-
- void SinglePlayerButton::onMouseOff(){
- setColor(Vector4(.6, .6, .6, 1));
- }
+ SinglePlayerButton::SinglePlayerButton(Vector3 pos, Vector2 size, string name) : PfButtonBase(pos, size, name, GameManager::getSingleton()->getPath() + "Fonts/batang.ttf", GLFW_KEY_S, true) {}
void SinglePlayerButton::onClick() {
ConcreteGuiManager *guiManager = ConcreteGuiManager::getSingleton();
diff --git a/singlePlayerButton.h b/singlePlayerButton.h
index 09e0224..0fde367 100644
--- a/singlePlayerButton.h
+++ b/singlePlayerButton.h
@@ -3,16 +3,16 @@
#include
-#include
+#include "pfButtonBase.h"
namespace battleship{
- class SinglePlayerButton : public vb01Gui::Button {
+ class Tooltip;
+
+ class SinglePlayerButton : public PfButtonBase {
public:
SinglePlayerButton(vb01::Vector3, vb01::Vector2, std::string);
+ ~SinglePlayerButton(){}
void onClick();
- void onMouseOver();
- void onMouseOff();
- private:
};
}
diff --git a/stateToggleButton.cpp b/stateToggleButton.cpp
index 52b09af..580c58f 100644
--- a/stateToggleButton.cpp
+++ b/stateToggleButton.cpp
@@ -12,7 +12,7 @@ namespace battleship{
using namespace vb01Gui;
using namespace gameBase;
- StateToggleButton::StateToggleButton(Vector3 pos, Vector2 size, string name, int trigger, string imagePath) : Button(pos, size, name, GameManager::getSingleton()->getPath() + "Fonts/batang.ttf", trigger, true, imagePath) {
+ StateToggleButton::StateToggleButton(Vector3 pos, Vector2 size, string name, int trigger, string imagePath) : PfButtonBase(pos, size, name, GameManager::getSingleton()->getPath() + "Fonts/batang.ttf", trigger, true, imagePath) {
updateStateId();
toggleImage();
}
diff --git a/stateToggleButton.h b/stateToggleButton.h
index 774e087..a3cf846 100644
--- a/stateToggleButton.h
+++ b/stateToggleButton.h
@@ -1,10 +1,10 @@
#ifndef STATE_TOGGLE_BUTTON_H
#define STATE_TOGGLE_BUTTON_H
-#include
+#include "pfButtonBase.h"
namespace battleship{
- class StateToggleButton : public vb01Gui::Button{
+ class StateToggleButton : public PfButtonBase{
public:
StateToggleButton(vb01::Vector3, vb01::Vector2, std::string, int, std::string);
void onClick();
diff --git a/statsButton.cpp b/statsButton.cpp
index 3495f1f..f1aa455 100644
--- a/statsButton.cpp
+++ b/statsButton.cpp
@@ -13,7 +13,7 @@ namespace battleship{
using namespace vb01;
using namespace gameBase;
- StatsButton::StatsButton(Vector3 pos, Vector2 size, string name, int trigger, string imagePath) : Button(pos, size, name, GameManager::getSingleton()->getPath() + "Fonts/batang.ttf", trigger, true, imagePath){}
+ StatsButton::StatsButton(Vector3 pos, Vector2 size, string name, int trigger, string imagePath) : PfButtonBase(pos, size, name, GameManager::getSingleton()->getPath() + "Fonts/batang.ttf", trigger, true, imagePath){}
void StatsButton::addPlayerDataGuiElements(int playerId){
const int numPairs = 7;
diff --git a/statsButton.h b/statsButton.h
index 57e73cf..f593319 100644
--- a/statsButton.h
+++ b/statsButton.h
@@ -1,10 +1,10 @@
#ifndef STATS_BUTTON_H
#define STATS_BUTTON_H
-#include
+#include "pfButtonBase.h"
namespace battleship {
- class StatsButton : public vb01Gui::Button{
+ class StatsButton : public PfButtonBase{
public:
StatsButton(vb01::Vector3, vb01::Vector2, std::string, int, std::string);
void onClick();
diff --git a/tabButton.cpp b/tabButton.cpp
index 64cf1cd..52f75a6 100644
--- a/tabButton.cpp
+++ b/tabButton.cpp
@@ -7,7 +7,7 @@ namespace battleship{
using namespace vb01;
using namespace vb01Gui;
- TabButton::TabButton(Vector3 pos, Vector2 size, string name, string screenScript) : Button(pos, size, name, GameManager::getSingleton()->getPath() + "Fonts/batang.ttf", -1, true) {
+ TabButton::TabButton(Vector3 pos, Vector2 size, string name, string screenScript) : PfButtonBase(pos, size, name, GameManager::getSingleton()->getPath() + "Fonts/batang.ttf", -1, true) {
this->screenScript = screenScript;
}
diff --git a/tabButton.h b/tabButton.h
index 5d91331..8a5f9e2 100644
--- a/tabButton.h
+++ b/tabButton.h
@@ -1,10 +1,10 @@
#ifndef TAB_BUTTON_H
#define TAB_BUTTON_H
-#include
+#include "pfButtonBase.h"
namespace battleship{
- class TabButton : public vb01Gui::Button{
+ class TabButton : public PfButtonBase{
public:
TabButton(vb01::Vector3, vb01::Vector2, std::string, std::string);
void onClick();
diff --git a/tooltip.cpp b/tooltip.cpp
index a4d2681..b1df009 100644
--- a/tooltip.cpp
+++ b/tooltip.cpp
@@ -1,14 +1,79 @@
#include "tooltip.h"
+#include "gameManager.h"
+
+#include
+#include
+#include
+#include
+#include
+#include
using namespace std;
using namespace vb01;
namespace battleship{
- Tooltip::Tooltip(Vector2 pos, string entry){
- this->pos = pos;
+ Tooltip::Tooltip(Vector3 p, Vector2 s, vector lineData, string fontPath) : pos(p), size(s){
+ Root *root = Root::getSingleton();
+ Material *bgMat = new Material(root->getLibPath() + "gui");
+ bgMat->addBoolUniform("texturingEnabled", false);
+ bgMat->addVec4Uniform("diffuseColor", Vector4(.5, .5, .5, 1));
+
+ background = new Quad(Vector3(s.x, s.y, 0), false);
+ background->setMaterial(bgMat);
+
+ Node *bgNode = new Node(p);
+ bgNode->attachMesh(background);
+ root->getGuiNode()->attachChild(bgNode);
+
+ string basePath = GameManager::getSingleton()->getPath();
+ string iconBasePath = basePath + "Textures/Icons/";
+
+ for(int i = 0; i < lineData.size(); i++){
+ LineData &ld = lineData[i];
+
+ Material *textMat = new Material(root->getLibPath() + "text");
+ textMat->addBoolUniform("texturingEnabled", false);
+ textMat->addVec4Uniform("diffuseColor", ld.textColor);
+
+ Vector3 offset = ld.getLineOffset(i);
+ Text *text = new Text(fontPath, ld.entryText);
+ text->setMaterial(textMat);
+ Node *textNode = new Node(pos + offset, Quaternion::QUAT_W, ld.scale * Vector3::VEC_IJK);
+ textNode->addText(text);
+ bgNode->attachChild(textNode);
+
+ for(pair &iconData: ld.iconsData){
+ Vector3 iconOffset = offset;
+ wstring entry = text->getText();
+
+ for(int j = 0; j < iconData.first; j++){
+ Text::Glyph *glyph = text->getGlyph(entry[j]);
+ iconOffset.x += ld.scale * (glyph->advance >> 6);
+ }
+
+ entry.insert(iconData.first, L" ");
+ text->setText(entry);
+
+ Material *iconMat = new Material(root->getLibPath() + "gui");
+ iconMat->addBoolUniform("texturingEnabled", true);
+ string ip[]{iconBasePath + iconData.second};
+ Texture *t = new Texture(ip, 1, false);
+ iconMat->addTexUniform("textures[0]", t, false);
+
+ Vector2 iconSize = ld.height * Vector2::VEC_IJ;
+ Quad *rect = new Quad(Vector3(iconSize.x, iconSize.y, 0), false);
+ rect->setMaterial(iconMat);
+ Node *rectNode = new Node(iconOffset - Vector3(0, iconSize.y, 0));
+ rectNode->attachMesh(rect);
+ bgNode->attachChild(rectNode);
+ }
+ }
}
Tooltip::~Tooltip(){
+ Node *node = background->getNode();
+ Root::getSingleton()->getGuiNode()->dettachChild(node);
+ delete node;
}
void Tooltip::update(){
diff --git a/tooltip.h b/tooltip.h
index 68b8020..724765c 100644
--- a/tooltip.h
+++ b/tooltip.h
@@ -1,16 +1,48 @@
#ifndef TOOLTIP_H
#define TOOLTIP_H
-#include
+#include
+
+#include
+#include
+#include
+
+namespace vb01{
+ class Quad;
+ class Text;
+}
namespace battleship{
class Tooltip{
public:
- Tooltip(vb01::Vector2, std::string);
+ struct LineData{
+ int height;
+ float scale;
+ vb01::Vector3 textOffset;
+ std::wstring entryText;
+ vb01::Vector4 textColor;
+ std::vector> iconsData;
+
+ inline vb01::Vector3 getLineOffset(int i){return vb01::Vector3(textOffset.x, height * (i + 1) + textOffset.y, textOffset.z);}
+
+ LineData(std::wstring et, vb01::Vector4 tc, std::vector> id, int h, vb01::Vector3 to, float s) :
+ entryText(et),
+ textColor(tc),
+ iconsData(id),
+ height(h),
+ textOffset(to),
+ scale(s)
+ {}
+ };
+
+ Tooltip(vb01::Vector3, vb01::Vector2, std::vector, std::string);
~Tooltip();
void update();
+ inline vb01::Quad* getBackground(){return background;}
private:
- vb01::Vector2 pos;
+ vb01::Vector3 pos;
+ vb01::Vector2 size;
+ vb01::Quad *background = nullptr;
};
}
diff --git a/tradeButton.cpp b/tradeButton.cpp
index 51b98a5..8a0c28b 100644
--- a/tradeButton.cpp
+++ b/tradeButton.cpp
@@ -2,6 +2,10 @@
#include "activeGameState.h"
#include "player.h"
+#include
+#include
+#include
+
#include
namespace battleship{
@@ -9,15 +13,42 @@ namespace battleship{
using namespace vb01;
using namespace gameBase;
- TradeButton::TradeButton(Vector3 pos, Vector2 size, string name, int trigger, string imagePath, Type t) : UnitButton(pos, size, name, GameManager::getSingleton()->getPath() + "Fonts/batang.ttf", trigger, imagePath), type(t){}
+ TradeButton::TradeButton(Vector3 pos, Vector2 size, string name, int trigger, string imagePath, Type t, int am) :
+ UnitButton(pos, size, name, GameManager::getSingleton()->getPath() + "Fonts/batang.ttf", trigger, imagePath),
+ type(t),
+ amount(am)
+ {}
void TradeButton::onClick(){
ActiveGameState *activeState = (ActiveGameState*)(GameManager::getSingleton()->getStateManager()->getAppStateByType((int)AppStateType::ACTIVE_STATE));
Player *player = activeState->getPlayer();
- int resType, ammount = 10;
+ int resType;
bool buy;
+ editResourceTradeData(resType, buy);
+ player->getTrader()->trade(player, resType, amount, buy);
+ }
+ void TradeButton::update(){
+ PfButtonBase::update();
+
+ Text *descText = tooltip->getBackground()->getNode()->getChild(0)->getText(0);
+
+ if(tooltipInitDesc == L"") tooltipInitDesc = descText->getText();
+
+ wstring entry = tooltipInitDesc;
+ entry.replace(entry.find_first_of(L"_"), 1, to_wstring(amount));
+
+ int rt;
+ bool b;
+ editResourceTradeData(rt, b);
+ ActiveGameState *activeState = (ActiveGameState*)(GameManager::getSingleton()->getStateManager()->getAppStateByType((int)AppStateType::ACTIVE_STATE));
+ entry.replace(entry.find_last_of(L"_"), 1, to_wstring(activeState->getPlayer()->getTrader()->getResourceRate(rt)));
+
+ descText->setText(entry);
+ }
+
+ void TradeButton::editResourceTradeData(int &resType, bool &buy){
switch(type){
case Type::BUY_REFINEDS:
resType = (int)ResourceType::REFINEDS;
@@ -36,7 +67,5 @@ namespace battleship{
buy = false;
break;
}
-
- player->getTrader()->trade(player, resType, ammount, buy);
}
}
diff --git a/tradeButton.h b/tradeButton.h
index 604858b..fd504fc 100644
--- a/tradeButton.h
+++ b/tradeButton.h
@@ -8,10 +8,15 @@ namespace battleship{
public:
enum class Type{BUY_REFINEDS, SELL_REFINEDS, BUY_RESEARCH, SELL_RESEARCH};
- TradeButton(vb01::Vector3, vb01::Vector2, std::string, int, std::string, Type);
+ TradeButton(vb01::Vector3, vb01::Vector2, std::string, int, std::string, Type, int);
void onClick();
+ void update();
private:
Type type;
+ int amount;
+ std::wstring tooltipInitDesc = L"";
+
+ void editResourceTradeData(int&, bool&);
};
}
diff --git a/trader.cpp b/trader.cpp
index 5e5af2e..49d2baa 100644
--- a/trader.cpp
+++ b/trader.cpp
@@ -45,17 +45,12 @@ namespace battleship{
}
}
- void Trader::trade(Player *tradingPlayer, int rt, int ammount, bool buying){
- int tradeResRate;
+ int Trader::getResourceRate(int rt){
+ return (ResourceType)rt == ResourceType::REFINEDS ? refinedsRate : researchRate;
+ }
- switch((ResourceType)rt){
- case ResourceType::REFINEDS:
- tradeResRate = refinedsRate;
- break;
- case ResourceType::RESEARCH:
- tradeResRate = researchRate;
- break;
- }
+ void Trader::trade(Player *tradingPlayer, int rt, int ammount, bool buying){
+ int tradeResRate = getResourceRate(rt);
if(buying && ammount * tradeResRate <= tradingPlayer->getResource(ResourceType::WEALTH)){
tradingPlayer->updateResource((ResourceType)rt, ammount, true);
diff --git a/trader.h b/trader.h
index 1121cf4..acfbfbf 100644
--- a/trader.h
+++ b/trader.h
@@ -11,6 +11,7 @@ namespace battleship{
Trader();
void update();
void trade(Player*, int, int, bool);
+ int getResourceRate(int);
private:
void initProperties();
diff --git a/unitButton.cpp b/unitButton.cpp
index 8b0c3f3..ad87bee 100644
--- a/unitButton.cpp
+++ b/unitButton.cpp
@@ -12,7 +12,7 @@ namespace battleship{
using namespace vb01Gui;
using namespace gameBase;
- UnitButton::UnitButton(Vector3 pos, Vector2 size, string name, string fontPath, int trigger, string imagePath) : Button(pos, size, name, fontPath, trigger, true, imagePath){
+ UnitButton::UnitButton(Vector3 pos, Vector2 size, string name, string fontPath, int trigger, string imagePath) : PfButtonBase(pos, size, name, fontPath, trigger, true, imagePath){
StateManager *stateManager = GameManager::getSingleton()->getStateManager();
ActiveGameState *activeState = (ActiveGameState*)stateManager->getAppStateByType((int)AppStateType::ACTIVE_STATE);
diff --git a/unitButton.h b/unitButton.h
index 86944ad..799026a 100644
--- a/unitButton.h
+++ b/unitButton.h
@@ -1,12 +1,12 @@
#ifndef UNIT_BUTTON_H
#define UNIT_BUTTON_H
-#include
+#include "pfButtonBase.h"
namespace battleship{
class Unit;
- class UnitButton : public vb01Gui::Button{
+ class UnitButton : public PfButtonBase{
public:
UnitButton(vb01::Vector3, vb01::Vector2, std::string, std::string, int, std::string);
protected: