mirror of
https://github.com/devZoGok/PlanetFleet.git
synced 2026-08-26 19:43:29 +00:00
Merge branch 'develop' into ft-265-limited-unit-ammo
This commit is contained in:
+2
-1
@@ -1 +1,2 @@
|
||||
/build
|
||||
\build
|
||||
.vscode/c_cpp_properties.json
|
||||
|
||||
@@ -16,6 +16,7 @@ mappings = {
|
||||
{bind = 12, trigger = 0, action = true, bindType = 1, inOptions = true},
|
||||
{bind = 13, trigger = 1, action = true, bindType = 1, inOptions = true},
|
||||
{bind = 14, trigger = 72, action = true, bindType = 0, inOptions = true},
|
||||
-- The triggers for 15 and 16, zoom in and out used to be 0 but I changed them to +/= and -
|
||||
{bind = 15, trigger = 61, action = true, bindType = 0, inOptions = true},
|
||||
{bind = 16, trigger = 45, action = true, bindType = 0, inOptions = true},
|
||||
{bind = 17, trigger = 341, action = true, bindType = 0, inOptions = true},
|
||||
@@ -35,6 +36,7 @@ mappings = {
|
||||
{bind = 31, trigger = 57, action = true, bindType = 0, inOptions = true},
|
||||
{bind = 32, trigger = 66, action = true, bindType = 0, inOptions = true},
|
||||
{bind = 33, trigger = 256, action = true, bindType = 0, inOptions = true},
|
||||
{bind = 53, trigger = 81, action = true, bindType = 0, inOptions = true}, -- wasn't sure if it should be in options
|
||||
{bind = 47, trigger = 69, action = true, bindType = 0, inOptions = false},
|
||||
{bind = 48, trigger = 84, action = true, bindType = 0, inOptions = false},
|
||||
{bind = 49, trigger = 89, action = true, bindType = 0, inOptions = false},
|
||||
@@ -70,3 +72,6 @@ audio = {
|
||||
sfxVolume = 100,
|
||||
musicVolume = 100,
|
||||
}
|
||||
multiplayer = {
|
||||
name = "Player"
|
||||
}
|
||||
|
||||
@@ -189,6 +189,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',
|
||||
@@ -267,6 +268,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',
|
||||
@@ -345,6 +347,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',
|
||||
@@ -406,6 +409,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',
|
||||
@@ -467,6 +471,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',
|
||||
@@ -531,6 +536,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',
|
||||
@@ -590,6 +596,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',
|
||||
@@ -651,6 +658,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',
|
||||
@@ -713,6 +721,7 @@ units = {
|
||||
hitboxOffset = {x = 0, y = 1, z = 0},
|
||||
lineOfSight = 30,
|
||||
name = 'Artillery',
|
||||
description = '',
|
||||
basePath = PATH .. vehiclePrefix .. 'Artillery/',
|
||||
meshPath = 'artillery.xml',
|
||||
albedoPath = 'artillery.jpg',
|
||||
@@ -749,6 +758,7 @@ units = {
|
||||
hitboxOffset = {x = 0, y = 1.21, z = 0},
|
||||
lineOfSight = 200,
|
||||
name = 'Engineer',
|
||||
description = '',
|
||||
basePath = PATH .. vehiclePrefix .. 'Engineers/',
|
||||
albedoPath = 'engineer.jpg',
|
||||
colorNodes = {'Cube'},
|
||||
@@ -779,7 +789,21 @@ 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 = 220, y = 60},
|
||||
lines = {
|
||||
{entry = {text = 'Hack'}},
|
||||
{entry = {text = 'Hack into a hostile unit'}},
|
||||
{entry = {text = 'to turn it over to your side'}},
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
unitClass = UnitClass.CYBORG_ENGINEER,
|
||||
unitType = UnitType.LAND,
|
||||
armor = {ArmorType.MECHANIC},
|
||||
@@ -794,6 +818,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'},
|
||||
@@ -830,6 +855,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'},
|
||||
@@ -860,7 +886,21 @@ 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 = 220, y = 60},
|
||||
lines = {
|
||||
{entry = {text = 'Hack'}},
|
||||
{entry = {text = 'Hack into a hostile unit'}},
|
||||
{entry = {text = 'to turn it over to your side'}},
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
unitClass = UnitClass.CYBORG_ENGINEER,
|
||||
unitType = UnitType.LAND,
|
||||
armor = {ArmorType.MECHANIC},
|
||||
@@ -875,6 +915,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'},
|
||||
@@ -911,6 +952,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'},
|
||||
@@ -941,7 +983,21 @@ 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 = 220, y = 60},
|
||||
lines = {
|
||||
{entry = {text = 'Hack'}},
|
||||
{entry = {text = 'Hack into a hostile unit'}},
|
||||
{entry = {text = 'to turn it over to your side'}},
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
unitClass = UnitClass.CYBORG_ENGINEER,
|
||||
unitType = UnitType.LAND,
|
||||
armor = {ArmorType.MECHANIC},
|
||||
@@ -956,6 +1012,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'},
|
||||
@@ -1048,6 +1105,7 @@ units = {
|
||||
lineOfSight = 5,
|
||||
colorNodes = {'Cube.002'},
|
||||
name = 'Transport',
|
||||
description = '',
|
||||
basePath = PATH .. vehiclePrefix .. 'Transports/',
|
||||
meshPath = 'acsTransport.xml',
|
||||
albedoPath = 'transport.jpg',
|
||||
@@ -1127,6 +1185,7 @@ units = {
|
||||
lineOfSight = 5,
|
||||
colorNodes = {'turret'},
|
||||
name = 'Transport',
|
||||
description = '',
|
||||
basePath = PATH .. vehiclePrefix .. 'Transports/',
|
||||
meshPath = 'aincTransport.xml',
|
||||
albedoPath = 'transport.jpg',
|
||||
@@ -1220,9 +1279,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,
|
||||
@@ -1240,6 +1341,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',
|
||||
@@ -1255,9 +1357,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,
|
||||
@@ -1275,6 +1419,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',
|
||||
@@ -1290,9 +1435,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,
|
||||
@@ -1310,6 +1497,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',
|
||||
@@ -1418,6 +1606,7 @@ units = {
|
||||
lineOfSight = 50,
|
||||
colorNodes = {'AATuret'},
|
||||
name = 'Assault cruiser',
|
||||
description = '',
|
||||
basePath = PATH .. vehiclePrefix .. 'Cruisers/',
|
||||
meshPath = 'heavyAssaultCruiser.xml',
|
||||
albedoPath = 'cruiser.jpg',
|
||||
@@ -1536,6 +1725,7 @@ units = {
|
||||
lineOfSight = 5,
|
||||
colorNodes = {'frontAATurret', 'rearAATurret'},
|
||||
name = 'Assault cruiser',
|
||||
description = '',
|
||||
basePath = PATH .. vehiclePrefix .. 'Cruisers/',
|
||||
meshPath = 'mediumAssaultCruiser.xml',
|
||||
albedoPath = 'cruiser.jpg',
|
||||
@@ -1649,6 +1839,7 @@ units = {
|
||||
lineOfSight = 5,
|
||||
colorNodes = {'aaTurret'},
|
||||
name = 'Assault cruiser',
|
||||
description = '',
|
||||
basePath = PATH .. vehiclePrefix .. 'Cruisers/',
|
||||
meshPath = 'lightAssaultCruiser.xml',
|
||||
albedoPath = 'cruiser.jpg',
|
||||
@@ -1739,6 +1930,7 @@ units = {
|
||||
lineOfSight = 100,
|
||||
colorNodes = {'FrontTurret', 'RearTurret'},
|
||||
name = 'Anti sub cruiser',
|
||||
description = '',
|
||||
basePath = PATH .. vehiclePrefix .. 'Cruisers/',
|
||||
meshPath = 'acsAntiSubCruiser.xml',
|
||||
albedoPath = 'cruiser.jpg',
|
||||
@@ -1865,6 +2057,7 @@ units = {
|
||||
lineOfSight = 100,
|
||||
colorNodes = {'sides'},
|
||||
name = 'Anti sub cruiser',
|
||||
description = '',
|
||||
basePath = PATH .. vehiclePrefix .. 'Cruisers/',
|
||||
meshPath = 'aincAntiSubCruiser.xml',
|
||||
albedoPath = 'cruiser.jpg',
|
||||
@@ -2020,6 +2213,7 @@ units = {
|
||||
lineOfSight = 100,
|
||||
colorNodes = {'Gunship.001'},
|
||||
name = 'Anti sub cruiser',
|
||||
description = '',
|
||||
basePath = PATH .. vehiclePrefix .. 'Cruisers/',
|
||||
meshPath = 'erAntiSubCruiser.xml',
|
||||
albedoPath = 'cruiser.jpg',
|
||||
@@ -2071,6 +2265,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',
|
||||
@@ -2175,6 +2370,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',
|
||||
@@ -2214,6 +2410,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',
|
||||
@@ -2253,6 +2450,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',
|
||||
@@ -2295,6 +2493,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',
|
||||
@@ -2318,6 +2517,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',
|
||||
@@ -2341,6 +2541,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',
|
||||
@@ -2364,6 +2565,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',
|
||||
@@ -2414,6 +2616,7 @@ units = {
|
||||
hitboxOffset = {x = 0, y = 4.7, z = 0},
|
||||
lineOfSight = 25,
|
||||
name = 'Freezer',
|
||||
description = '',
|
||||
colorNodes = {'CryoGun'},
|
||||
basePath = PATH .. vehiclePrefix .. 'Freezers/',
|
||||
meshPath = 'freezer.xml',
|
||||
@@ -2458,6 +2661,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',
|
||||
@@ -2491,6 +2695,7 @@ units = {
|
||||
lineOfSight = 5,
|
||||
colorNodes = {'ring'},
|
||||
name = 'Land factory',
|
||||
description = '',
|
||||
albedoPath = 'factory.jpg',
|
||||
basePath = PATH .. structurePrefix .. 'LandFactories/',
|
||||
meshPath = 'acsFactory.xml',
|
||||
@@ -2518,6 +2723,7 @@ units = {
|
||||
lineOfSight = 5,
|
||||
colorNodes = {'Cube.002'},
|
||||
name = 'Land factory',
|
||||
description = '',
|
||||
albedoPath = 'factory.jpg',
|
||||
basePath = PATH .. structurePrefix .. 'LandFactories/',
|
||||
meshPath = 'aincFactory.xml',
|
||||
@@ -2545,6 +2751,7 @@ units = {
|
||||
lineOfSight = 5,
|
||||
colorNodes = {'Sphere.001'},
|
||||
name = 'Land factory',
|
||||
description = '',
|
||||
albedoPath = 'factory.jpg',
|
||||
basePath = PATH .. structurePrefix .. 'LandFactories/',
|
||||
meshPath = 'erFactory.xml',
|
||||
@@ -2572,6 +2779,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'},
|
||||
@@ -2600,6 +2808,7 @@ units = {
|
||||
hitboxOffset = {x = 0, y = 18, z = 0},
|
||||
lineOfSight = 5,
|
||||
name = 'Naval factory',
|
||||
description = '',
|
||||
colorNodes = {'roof'},
|
||||
basePath = PATH .. structurePrefix .. 'NavalFactories/',
|
||||
meshPath = 'aincFactory.xml',
|
||||
@@ -2630,6 +2839,7 @@ units = {
|
||||
hitboxOffset = {x = 0, y = 10, z = -14},
|
||||
lineOfSight = 5,
|
||||
name = 'Naval factory',
|
||||
description = '',
|
||||
colorNodes = {'building'},
|
||||
basePath = PATH .. structurePrefix .. 'NavalFactories/',
|
||||
meshPath = 'erFactory.xml',
|
||||
@@ -2641,10 +2851,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,
|
||||
@@ -2656,6 +2902,7 @@ units = {
|
||||
lineOfSight = 5,
|
||||
colorNodes = {'wall'},
|
||||
name = 'Trade center',
|
||||
description = '',
|
||||
basePath = PATH .. structurePrefix .. 'TradeCenters/',
|
||||
meshPath = 'acsTradeCenter.xml',
|
||||
albedoPath = 'tradeCenter.jpg',
|
||||
@@ -2666,10 +2913,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,
|
||||
@@ -2681,6 +2964,7 @@ units = {
|
||||
lineOfSight = 5,
|
||||
colorNodes = {'Cube.001'},
|
||||
name = 'Trade center',
|
||||
description = '',
|
||||
basePath = PATH .. structurePrefix .. 'TradeCenters/',
|
||||
meshPath = 'aincTradeCenter.xml',
|
||||
albedoPath = 'tradeCenter.jpg',
|
||||
@@ -2691,10 +2975,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,
|
||||
@@ -2706,6 +3026,7 @@ units = {
|
||||
lineOfSight = 5,
|
||||
colorNodes = {'sphere'},
|
||||
name = 'Trade center',
|
||||
description = '',
|
||||
basePath = PATH .. structurePrefix .. 'TradeCenters/',
|
||||
meshPath = 'erTradeCenter.xml',
|
||||
albedoPath = 'tradeCenter.jpg',
|
||||
@@ -2716,7 +3037,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,
|
||||
@@ -2728,6 +3062,7 @@ units = {
|
||||
generationSpeed = 10,
|
||||
researchCost = 1,
|
||||
name = 'Lab',
|
||||
description = '',
|
||||
colorNodes = {'stripes'},
|
||||
basePath = PATH .. structurePrefix .. 'Labs/',
|
||||
meshPath = 'acsLab.xml',
|
||||
@@ -2739,7 +3074,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,
|
||||
@@ -2751,6 +3099,7 @@ units = {
|
||||
generationSpeed = 10,
|
||||
researchCost = 1,
|
||||
name = 'Lab',
|
||||
description = '',
|
||||
colorNodes = {'stripe'},
|
||||
basePath = PATH .. structurePrefix .. 'Labs/',
|
||||
meshPath = 'aincLab.xml',
|
||||
@@ -2762,7 +3111,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,
|
||||
@@ -2774,6 +3136,7 @@ units = {
|
||||
generationSpeed = 10,
|
||||
researchCost = 1,
|
||||
name = 'Lab',
|
||||
description = '',
|
||||
colorNodes = {'stripes'},
|
||||
basePath = PATH .. structurePrefix .. 'Labs/',
|
||||
meshPath = 'erLab.xml',
|
||||
@@ -2841,6 +3204,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/',
|
||||
@@ -2864,6 +3228,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',
|
||||
@@ -2902,6 +3267,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',
|
||||
@@ -2921,6 +3287,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',
|
||||
@@ -2936,6 +3303,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',
|
||||
|
||||
@@ -84,7 +84,7 @@ gui = {
|
||||
trigger = 82,
|
||||
},
|
||||
{
|
||||
pos = {x = Pos.x + Size.x - (margin.right + 3 * techButtonSize.x), y = Pos.y + margin.top + 2 * heightOffset, z = .11},
|
||||
pos = {x = Pos.x + Size.x - (margin.right + 3.5 * techButtonSize.x), y = Pos.y + margin.top + 2 * heightOffset, z = .11},
|
||||
size = techButtonSize,
|
||||
name = "Carriers",
|
||||
imagePath = baseTechPath .. 'carriers.jpg',
|
||||
|
||||
@@ -29,7 +29,7 @@ end
|
||||
eyeIcon = 'eye.png'
|
||||
refIcon = 'refineds.png'
|
||||
minimapSize = {x = 200, y = 200}
|
||||
minimapPos = {x = 0, y = res.y - minimapSize.y, z = .85}
|
||||
minimapPos = {x = 0, y = res.y - minimapSize.y, z = -.05}
|
||||
|
||||
resTextScale = {x = .5, y = .5}
|
||||
resIconBasePath = 'Icons/Resources/'
|
||||
@@ -45,7 +45,7 @@ noHackTex = 'noHack.png'
|
||||
gui = {
|
||||
{
|
||||
guiType = GuiType.GUI_RECTANGLE,
|
||||
pos = {x = minimapPos.x, y = minimapPos.y, z = .8},
|
||||
pos = {x = minimapPos.x, y = minimapPos.y, z = -.1},
|
||||
size = minimapSize,
|
||||
color = {x = .5, y = .5, z = .5, w = .6}
|
||||
},
|
||||
@@ -61,7 +61,7 @@ gui = {
|
||||
guiType = GuiType.TEXT,
|
||||
name = 'refineds',
|
||||
text = '',
|
||||
pos = {x = s, y = s, z = 0},
|
||||
pos = {x = s, y = s, z = -.2},
|
||||
scale = resTextScale,
|
||||
font = 'batang.ttf',
|
||||
fontFirstChar = 0,
|
||||
@@ -72,7 +72,7 @@ gui = {
|
||||
guiType = GuiType.TEXT,
|
||||
name = 'wealth',
|
||||
text = '',
|
||||
pos = {x = s, y = 2 * s, z = 0},
|
||||
pos = {x = s, y = 2 * s, z = -.2},
|
||||
scale = resTextScale,
|
||||
font = 'batang.ttf',
|
||||
fontFirstChar = 0,
|
||||
@@ -83,7 +83,7 @@ gui = {
|
||||
guiType = GuiType.TEXT,
|
||||
name = 'research',
|
||||
text = '',
|
||||
pos = {x = s, y = 3 * s, z = 0},
|
||||
pos = {x = s, y = 3 * s, z = -.2},
|
||||
scale = resTextScale,
|
||||
font = 'batang.ttf',
|
||||
fontFirstChar = 0,
|
||||
@@ -93,21 +93,21 @@ gui = {
|
||||
{
|
||||
guiType = GuiType.GUI_RECTANGLE,
|
||||
name = 'refineds',
|
||||
pos = {x = 0, y = 0, z = 0},
|
||||
pos = {x = 0, y = 0, z = -.2},
|
||||
size = {x = s, y = s},
|
||||
imagePath = resIconBasePath .. 'refineds.png',
|
||||
},
|
||||
{
|
||||
guiType = GuiType.GUI_RECTANGLE,
|
||||
name = 'wealth',
|
||||
pos = {x = 0, y = 1 * s, z = 0},
|
||||
pos = {x = 0, y = 1 * s, z = -.2},
|
||||
size = {x = s, y = s},
|
||||
imagePath = resIconBasePath .. 'wealth.png',
|
||||
},
|
||||
{
|
||||
guiType = GuiType.GUI_RECTANGLE,
|
||||
name = 'research',
|
||||
pos = {x = 0, y = 2 * s, z = 0},
|
||||
pos = {x = 0, y = 2 * s, z = -.2},
|
||||
size = {x = s, y = s},
|
||||
imagePath = resIconBasePath .. 'research.png',
|
||||
},
|
||||
@@ -116,16 +116,21 @@ gui = {
|
||||
buttonType = ButtonType.PLAYER_TRADE,
|
||||
name = 'Trade',
|
||||
guiScreen = 'tradingHub.lua',
|
||||
pos = {x = minimapSize.x, y = res.y - minimapSize.y, z = 0},
|
||||
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,
|
||||
pos = {x = minimapSize.x, y = res.y - .75 * sz, z = 0},
|
||||
pos = {x = minimapSize.x, y = res.y - .75 * sz, z = -.2},
|
||||
size = {x = res.x - minimapPos.x, y = sz * .75},
|
||||
color = {x = .6, y = .6, z = .6, w = .4}
|
||||
},
|
||||
--[[
|
||||
]]--
|
||||
}
|
||||
|
||||
@@ -84,7 +84,7 @@ gui = {
|
||||
trigger = 82,
|
||||
},
|
||||
{
|
||||
pos = {x = Pos.x + Size.x - (margin.right + 3 * techButtonSize.x), y = Pos.y + margin.top + 2 * heightOffset, z = .11},
|
||||
pos = {x = Pos.x + Size.x - (margin.right + 3.5 * techButtonSize.x), y = Pos.y + margin.top + 2 * heightOffset, z = .11},
|
||||
size = techButtonSize,
|
||||
name = "Carriers",
|
||||
imagePath = baseTechPath .. 'carriers.jpg',
|
||||
|
||||
@@ -1,37 +1,58 @@
|
||||
numGui = 5
|
||||
gui = {
|
||||
{
|
||||
pos = {x = 110, y = 90, z = 0},
|
||||
size = {x = 100, y = 10},
|
||||
guiType = GuiType.TEXT,
|
||||
name = '',
|
||||
text = 'Audio',
|
||||
pos = {x = 20, y = 50, z = 0},
|
||||
scale = .5,
|
||||
font = 'batang.ttf',
|
||||
fontFirstChar = 0,
|
||||
fontLastChar = 256,
|
||||
color = {x = 1, y = 1, z = 1, w = 1}
|
||||
},
|
||||
{
|
||||
guiType = GuiType.TEXT,
|
||||
name = '',
|
||||
text = 'Volume',
|
||||
pos = {x = 20, y = 110, z = 0},
|
||||
scale = .2,
|
||||
font = 'batang.ttf',
|
||||
fontFirstChar = 0,
|
||||
fontLastChar = 256,
|
||||
color = {x = 1, y = 1, z = 1, w = 1}
|
||||
},
|
||||
{
|
||||
pos = {x = 370, y = 100, z = 0},
|
||||
size = {x = 60, y = 30},
|
||||
guiType = GuiType.TEXTBOX,
|
||||
},
|
||||
{
|
||||
pos = {x = 110, y = 40, z = 0},
|
||||
size = {x = 100, y = 10},
|
||||
pos = {x = 120, y = 100, z = 0},
|
||||
size = {x = 200, y = 10},
|
||||
guiType = GuiType.SLIDER,
|
||||
minValue = 0,
|
||||
maxValue = 100,
|
||||
numDependencies = 1,
|
||||
dependencies = {
|
||||
{id = 0}
|
||||
{id = 1}
|
||||
}
|
||||
},
|
||||
{
|
||||
pos = {x = 100, y = 400, z = 0},
|
||||
pos = {x = 20, y = 400, z = 0},
|
||||
size = {x = 150, y = 20},
|
||||
guiType = GuiType.BUTTON,
|
||||
name = 'Ok',
|
||||
buttonType = ButtonType.OK
|
||||
},
|
||||
{
|
||||
pos = {x = 260, y = 400, z = 0},
|
||||
pos = {x = 180, y = 400, z = 0},
|
||||
size = {x = 150, y = 20},
|
||||
guiType = GuiType.BUTTON,
|
||||
name = 'Restore defaults',
|
||||
buttonType = ButtonType.DEFAULTS
|
||||
},
|
||||
{
|
||||
pos = {x = 420, y = 400, z = 0},
|
||||
pos = {x = 340, y = 400, z = 0},
|
||||
size = {x = 150, y = 20},
|
||||
guiType = GuiType.BUTTON,
|
||||
name = 'Back',
|
||||
|
||||
@@ -1,28 +1,46 @@
|
||||
numGui = 3
|
||||
gui = {
|
||||
{
|
||||
pos = {x = 100, y = 100, z = 0},
|
||||
size = {x = 300, y = 20},
|
||||
guiType = GuiType.TEXT,
|
||||
text = 'Console',
|
||||
name = '',
|
||||
pos = {x = 20, y = 40, z = 0},
|
||||
scale = 0.5,
|
||||
font = 'batang.ttf',
|
||||
fontFirstChar = 0,
|
||||
fontLastChar = 256,
|
||||
color = {x = 1, y = 1, z = 1, w = 1}
|
||||
},
|
||||
{
|
||||
pos = {x = 20, y = 40, z = 0},
|
||||
size = {x = 600, y = 20},
|
||||
guiType = GuiType.LISTBOX,
|
||||
listboxType = ListboxType.CONSOLE,
|
||||
numMaxDisplay = 10,
|
||||
closable = false
|
||||
},
|
||||
{
|
||||
pos = {x = 100, y = 510, z = 0},
|
||||
size = {x = 270, y = 20},
|
||||
pos = {x = 20, y = 510, z = 0},
|
||||
size = {x = 550, y = 20},
|
||||
guiType = GuiType.TEXTBOX
|
||||
},
|
||||
{
|
||||
pos = {x = 380, y = 510, z = 0},
|
||||
size = {x = 20, y = 20},
|
||||
pos = {x = 590, y = 510, z = 0},
|
||||
size = {x = 30, y = 20},
|
||||
guiType = GuiType.BUTTON,
|
||||
buttonType = ButtonType.CONSOLE_COMMAND_OK,
|
||||
name = 'OK',
|
||||
numDependencies = 2,
|
||||
dependencies = {
|
||||
{id = 0},
|
||||
{id = 1}
|
||||
{id = 1},
|
||||
{id = 2}
|
||||
}
|
||||
},
|
||||
{
|
||||
pos = {x = 630, y = 510, z = 0},
|
||||
size = {x = 40, y = 20},
|
||||
guiType = GuiType.BUTTON,
|
||||
buttonType = ButtonType.BACK,
|
||||
screen = 'gamePaused.lua',
|
||||
name = 'Back'
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,28 +1,49 @@
|
||||
numGui = 4
|
||||
gui = {
|
||||
{
|
||||
pos = {x = 110, y = 190, z = 0},
|
||||
size = {x = 360, y = 20},
|
||||
guiType = GuiType.TEXT,
|
||||
name = '',
|
||||
text = 'Controls',
|
||||
pos = {x = 20, y = 50, z = 0},
|
||||
scale = .5,
|
||||
font = 'batang.ttf',
|
||||
fontFirstChar = 0,
|
||||
fontLastChar = 256,
|
||||
color = {x = 1, y = 1, z = 1, w = 1}
|
||||
},
|
||||
{
|
||||
guiType = GuiType.TEXT,
|
||||
name = '',
|
||||
text = 'Key bindings',
|
||||
pos = {x = 20, y = 190, z = 0},
|
||||
scale = .25,
|
||||
font = 'batang.ttf',
|
||||
fontFirstChar = 0,
|
||||
fontLastChar = 256,
|
||||
color = {x = 1, y = 1, z = 1, w = 1}
|
||||
},
|
||||
{
|
||||
pos = {x = 20, y = 200, z = 0},
|
||||
size = {x = 470, y = 20},
|
||||
guiType = GuiType.LISTBOX,
|
||||
listboxType = ListboxType.CONTROLS,
|
||||
numMaxDisplay = 5
|
||||
},
|
||||
{
|
||||
pos = {x = 100, y = 400, z = 0},
|
||||
pos = {x = 20, y = 410, z = 0},
|
||||
size = {x = 150, y = 20},
|
||||
guiType = GuiType.BUTTON,
|
||||
name = 'Ok',
|
||||
buttonType = ButtonType.OK
|
||||
},
|
||||
{
|
||||
pos = {x = 260, y = 400, z = 0},
|
||||
pos = {x = 180, y = 410, z = 0},
|
||||
size = {x = 150, y = 20},
|
||||
guiType = GuiType.BUTTON,
|
||||
name = 'Restore defaults',
|
||||
buttonType = ButtonType.DEFAULTS
|
||||
},
|
||||
{
|
||||
pos = {x = 420, y = 400, z = 0},
|
||||
pos = {x = 340, y = 410, z = 0},
|
||||
size = {x = 150, y = 20},
|
||||
guiType = GuiType.BUTTON,
|
||||
name = 'Back',
|
||||
|
||||
@@ -7,16 +7,16 @@ music = {
|
||||
|
||||
res = graphics.resolution
|
||||
overlaySize = {x = 600, y = 450}
|
||||
overlayPos = {x = .5 * (res.x - overlaySize.x), y = 200, z = 0}
|
||||
overlayPos = {x = .5 * (res.x - overlaySize.x), y = 100, z = .2}
|
||||
buttonSize = {x = 150, y = 40}
|
||||
buttonInitPos = {x = .5 * (res.x - buttonSize.x), y = 350, z = .1}
|
||||
buttonInitPos = {x = .5 * (res.x - buttonSize.x), y = 250, z = .3}
|
||||
|
||||
gui = {
|
||||
{
|
||||
guiType = GuiType.TEXT,
|
||||
text = 'Defeat',
|
||||
name = 'D',
|
||||
pos = {x = overlayPos.x + 20, y = overlayPos.y + 75, z = .1},
|
||||
pos = {x = overlayPos.x + 150, y = overlayPos.y + 75, z = .3},
|
||||
scale = 1,
|
||||
font = 'batang.ttf',
|
||||
fontFirstChar = 0,
|
||||
|
||||
@@ -84,7 +84,7 @@ gui = {
|
||||
trigger = 82,
|
||||
},
|
||||
{
|
||||
pos = {x = Pos.x + Size.x - (margin.right + 3 * techButtonSize.x), y = Pos.y + margin.top + 2 * heightOffset, z = .11},
|
||||
pos = {x = Pos.x + Size.x - (margin.right + 3.5 * techButtonSize.x), y = Pos.y + margin.top + 2 * heightOffset, z = .11},
|
||||
size = techButtonSize,
|
||||
name = "Carriers",
|
||||
imagePath = baseTechPath .. 'carriers.jpg',
|
||||
|
||||
@@ -1,8 +1,13 @@
|
||||
Size = {x = 150, y = 50}
|
||||
numGui = 5
|
||||
gui = {
|
||||
{
|
||||
pos = {x = 100, y = 100, z = 0},
|
||||
guiType = GuiType.GUI_RECTANGLE,
|
||||
pos = {x = 0, y = 0, z = -.01},
|
||||
size = graphics.resolution,
|
||||
color = {x = 0, y = 0, z = 0, w = .6}
|
||||
},
|
||||
{
|
||||
pos = {x = 100, y = 100, z = .3},
|
||||
size = Size,
|
||||
guiType = GuiType.BUTTON,
|
||||
buttonType = ButtonType.RESUME,
|
||||
|
||||
@@ -1,7 +1,17 @@
|
||||
numGui = 3
|
||||
gui = {
|
||||
{
|
||||
pos = {x = 110, y = 190, z = 0},
|
||||
guiType = GuiType.TEXT,
|
||||
name = 't0',
|
||||
text = 'Load map',
|
||||
pos = {x = 20, y = 50, z = 0},
|
||||
scale = .5,
|
||||
font = 'batang.ttf',
|
||||
fontFirstChar = 0,
|
||||
fontLastChar = 256,
|
||||
color = {x = 1, y = 1, z = 1, w = 1}
|
||||
},
|
||||
{
|
||||
pos = {x = 20, y = 100, z = 0},
|
||||
size = {x = 360, y = 20},
|
||||
guiType = GuiType.LISTBOX,
|
||||
addPlayerGui = false,
|
||||
@@ -9,19 +19,17 @@ gui = {
|
||||
numMaxDisplay = 5
|
||||
},
|
||||
{
|
||||
pos = {x = 110, y = 250, z = 0},
|
||||
size = {x = 140, y = 40},
|
||||
pos = {x = 20, y = 210, z = 0},
|
||||
size = {x = 160, y = 40},
|
||||
guiType = GuiType.BUTTON,
|
||||
name = 'Ok',
|
||||
buttonType = ButtonType.LOAD_MAP_OK,
|
||||
numDependencies = 1,
|
||||
dependencies = {
|
||||
{id = 0}
|
||||
}
|
||||
dependencies = {{id = 1}}
|
||||
},
|
||||
{
|
||||
pos = {x = 420, y = 400, z = 0},
|
||||
size = {x = 150, y = 50},
|
||||
pos = {x = 220, y = 210, z = 0},
|
||||
size = {x = 160, y = 40},
|
||||
guiType = GuiType.BUTTON,
|
||||
name = 'Back',
|
||||
buttonType = ButtonType.BACK,
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
initPos = {x = 850, y = 100, z = 0}
|
||||
res = graphics.resolution
|
||||
|
||||
Size = {x = 200, y = 20}
|
||||
initPos = {x = .5 * (res.x - Size.x), y = 100, z = 0}
|
||||
|
||||
gui = {
|
||||
{
|
||||
|
||||
@@ -1,6 +1,12 @@
|
||||
Size = {x = 150, y = 40}
|
||||
res = graphics.resolution
|
||||
|
||||
res = graphics.resolution
|
||||
overlaySize = {x = 600, y = 450}
|
||||
overlayPos = {x = .5 * (res.x - overlaySize.x), y = 100, z = 0}
|
||||
buttonSize = {x = 150, y = 40}
|
||||
buttonInitPos = {x = .5 * (res.x - buttonSize.x), y = 250, z = .1}
|
||||
|
||||
numGui = 4
|
||||
music = {
|
||||
loop = true,
|
||||
shuffle = false,
|
||||
@@ -9,31 +15,75 @@ music = {
|
||||
}
|
||||
gui = {
|
||||
{
|
||||
pos = {x = 110, y = 40, z = 0},
|
||||
guiType = GuiType.TEXT,
|
||||
name = '',
|
||||
text = 'Planet Fleet',
|
||||
pos = {x = 20, y = 50, z = 0},
|
||||
scale = .75,
|
||||
font = 'batang.ttf',
|
||||
fontFirstChar = 0,
|
||||
fontLastChar = 256,
|
||||
color = {x = 0, y = 0, z = 1, w = 1}
|
||||
},
|
||||
{
|
||||
pos = {x = 20, y = 100, z = 0},
|
||||
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 = 110, y = 90, z = 0},
|
||||
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 = 110, y = 140, z = 0},
|
||||
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 = 110, y = 190, z = 0},
|
||||
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'}},
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,47 +1,120 @@
|
||||
music = {tracks = {}}
|
||||
numGui = 6
|
||||
|
||||
Size = {x = 140, y = 20}
|
||||
startX = 100
|
||||
startX = 20
|
||||
gui = {
|
||||
{
|
||||
pos = {x = startX, y = 400, z = 0},
|
||||
size = Size,
|
||||
guiType = GuiType.TEXT,
|
||||
name = 'radius_',
|
||||
text = '',
|
||||
pos = {x = 0, y = 40, z = 0},
|
||||
scale = .5,
|
||||
font = 'batang.ttf',
|
||||
fontFirstChar = 0,
|
||||
fontLastChar = 256,
|
||||
color = {x = 1, y = 1, z = 1, w = 1}
|
||||
},
|
||||
{
|
||||
pos = {x = startX, y = 300, z = 0},
|
||||
size = {x = 80, y = 20},
|
||||
guiType = GuiType.BUTTON,
|
||||
buttonType = ButtonType.EXPORT,
|
||||
name = 'Export'
|
||||
},
|
||||
{
|
||||
pos = {x = startX + Size.x + 10, y = 400, z = 0},
|
||||
pos = {x = startX + 110, y = 300, z = 0},
|
||||
size = {x = 170, y = 20},
|
||||
guiType = GuiType.BUTTON,
|
||||
buttonType = ButtonType.BACK,
|
||||
screen = 'mapEditorMenu.lua',
|
||||
name = 'Back to map editor'
|
||||
},
|
||||
{
|
||||
guiType = GuiType.TEXT,
|
||||
name = '',
|
||||
text = 'Vehicles',
|
||||
pos = {x = startX, y = 400, z = 0},
|
||||
scale = .25,
|
||||
font = 'batang.ttf',
|
||||
fontFirstChar = 0,
|
||||
fontLastChar = 256,
|
||||
color = {x = 1, y = 1, z = 1, w = 1}
|
||||
},
|
||||
{
|
||||
pos = {x = startX, y = 400, z = 0},
|
||||
size = Size,
|
||||
guiType = GuiType.LISTBOX,
|
||||
listboxType = ListboxType.VEHICLES,
|
||||
numMaxDisplay = 5
|
||||
},
|
||||
{
|
||||
pos = {x = startX + 2 * (Size.x + 10), y = 400, z = 0},
|
||||
guiType = GuiType.TEXT,
|
||||
name = '',
|
||||
text = 'Structures',
|
||||
pos = {x = startX + 150, y = 400, z = 0},
|
||||
scale = .25,
|
||||
font = 'batang.ttf',
|
||||
fontFirstChar = 0,
|
||||
fontLastChar = 256,
|
||||
color = {x = 1, y = 1, z = 1, w = 1}
|
||||
},
|
||||
{
|
||||
pos = {x = startX + 150, y = 400, z = 0},
|
||||
size = Size,
|
||||
guiType = GuiType.LISTBOX,
|
||||
listboxType = ListboxType.STRUCTURES,
|
||||
numMaxDisplay = 5
|
||||
},
|
||||
{
|
||||
pos = {x = startX + 3 * (Size.x + 10), y = 400, z = 0},
|
||||
guiType = GuiType.TEXT,
|
||||
name = '',
|
||||
text = 'Resources',
|
||||
pos = {x = startX + 2 * (Size.x + 10), y = 400, z = 0},
|
||||
scale = .25,
|
||||
font = 'batang.ttf',
|
||||
fontFirstChar = 0,
|
||||
fontLastChar = 256,
|
||||
color = {x = 1, y = 1, z = 1, w = 1}
|
||||
},
|
||||
{
|
||||
pos = {x = startX + 2 * (Size.x + 10), y = 400, z = 0},
|
||||
size = Size,
|
||||
guiType = GuiType.LISTBOX,
|
||||
listboxType = ListboxType.RESOURCE_DEPOSITS,
|
||||
numMaxDisplay = 5
|
||||
},
|
||||
{
|
||||
pos = {x = startX + 4 * (Size.x + 10), y = 400, z = 0},
|
||||
guiType = GuiType.TEXT,
|
||||
name = '',
|
||||
text = 'Skyboxes',
|
||||
pos = {x = startX + 3 * (Size.x + 10), y = 400, z = 0},
|
||||
scale = .25,
|
||||
font = 'batang.ttf',
|
||||
fontFirstChar = 0,
|
||||
fontLastChar = 256,
|
||||
color = {x = 1, y = 1, z = 1, w = 1}
|
||||
},
|
||||
{
|
||||
pos = {x = startX + 3 * (Size.x + 10), y = 400, z = 0},
|
||||
size = Size,
|
||||
guiType = GuiType.LISTBOX,
|
||||
listboxType = ListboxType.SKYBOX_TEXTURES,
|
||||
numMaxDisplay = 5
|
||||
},
|
||||
{
|
||||
pos = {x = startX + 5 * (Size.x + 10), y = 400, z = 0},
|
||||
size = Size,
|
||||
guiType = GuiType.TEXT,
|
||||
name = '',
|
||||
text = 'Land textures',
|
||||
pos = {x = startX + 4 * (Size.x + 10), y = 400, z = 0},
|
||||
scale = .25,
|
||||
font = 'batang.ttf',
|
||||
fontFirstChar = 0,
|
||||
fontLastChar = 256,
|
||||
color = {x = 1, y = 1, z = 1, w = 1}
|
||||
},
|
||||
{
|
||||
pos = {x = startX + 4 * (Size.x + 10), y = 400, z = 0},
|
||||
size = {x = 170, y = 20},
|
||||
guiType = GuiType.LISTBOX,
|
||||
listboxType = ListboxType.LAND_TEXTURES,
|
||||
numMaxDisplay = 5
|
||||
|
||||
@@ -1,23 +1,33 @@
|
||||
Size = {x = 150, y = 40}
|
||||
|
||||
numGui = 3
|
||||
gui = {
|
||||
{
|
||||
pos = {x = 110, y = 40, z = 0},
|
||||
guiType = GuiType.TEXT,
|
||||
name = '',
|
||||
text = 'Map editor',
|
||||
pos = {x = 20, y = 50, z = 0},
|
||||
scale = .5,
|
||||
font = 'batang.ttf',
|
||||
fontFirstChar = 0,
|
||||
fontLastChar = 256,
|
||||
color = {x = 1, y = 1, z = 1, w = 1}
|
||||
},
|
||||
{
|
||||
pos = {x = 20, y = 60, z = 0},
|
||||
size = Size,
|
||||
guiType = GuiType.BUTTON,
|
||||
name = 'New map',
|
||||
buttonType = ButtonType.NEW_MAP
|
||||
},
|
||||
{
|
||||
pos = {x = 110, y = 90, z = 0},
|
||||
pos = {x = 20, y = 110, z = 0},
|
||||
size = Size,
|
||||
guiType = GuiType.BUTTON,
|
||||
name = 'Load map',
|
||||
buttonType = ButtonType.LOAD_MAP
|
||||
},
|
||||
{
|
||||
pos = {x = 110, y = 140, z = 0},
|
||||
pos = {x = 20, y = 160, z = 0},
|
||||
size = Size,
|
||||
guiType = GuiType.BUTTON,
|
||||
name = 'Back',
|
||||
|
||||
@@ -1,23 +1,55 @@
|
||||
numGui = 6
|
||||
gui = {
|
||||
{
|
||||
pos = {x = 110, y = 80, z = 0},
|
||||
size = {x = 300, y = 10},
|
||||
guiType = GuiType.TEXT,
|
||||
name = '',
|
||||
text = 'Mouse',
|
||||
pos = {x = 20, y = 50, z = 0},
|
||||
scale = .5,
|
||||
font = 'batang.ttf',
|
||||
fontFirstChar = 0,
|
||||
fontLastChar = 256,
|
||||
color = {x = 1, y = 1, z = 1, w = 1}
|
||||
},
|
||||
{
|
||||
guiType = GuiType.TEXT,
|
||||
name = '',
|
||||
text = 'Sensitivity',
|
||||
pos = {x = 20, y = 110, z = 0},
|
||||
scale = .2,
|
||||
font = 'batang.ttf',
|
||||
fontFirstChar = 0,
|
||||
fontLastChar = 256,
|
||||
color = {x = 1, y = 1, z = 1, w = 1}
|
||||
},
|
||||
{
|
||||
pos = {x = 470, y = 100, z = 0},
|
||||
size = {x = 60, y = 30},
|
||||
guiType = GuiType.TEXTBOX
|
||||
},
|
||||
{
|
||||
pos = {x = 110, y = 40, z = 0},
|
||||
pos = {x = 120, y = 100, z = 0},
|
||||
size = {x = 300, y = 10},
|
||||
minValue = 0,
|
||||
maxValue = 2,
|
||||
guiType = GuiType.SLIDER,
|
||||
numDependencies = 1,
|
||||
dependencies = {
|
||||
{id = 0}
|
||||
{id = 1}
|
||||
}
|
||||
},
|
||||
{
|
||||
pos = {x = 110, y = 110, z = 0},
|
||||
guiType = GuiType.TEXT,
|
||||
name = '',
|
||||
text = 'Reverse',
|
||||
pos = {x = 20, y = 150, z = 0},
|
||||
scale = .2,
|
||||
font = 'batang.ttf',
|
||||
fontFirstChar = 0,
|
||||
fontLastChar = 256,
|
||||
color = {x = 1, y = 1, z = 1, w = 1}
|
||||
},
|
||||
{
|
||||
pos = {x = 110, y = 135, z = 0},
|
||||
guiType = GuiType.CHECKBOX
|
||||
},
|
||||
{
|
||||
|
||||
@@ -1,38 +1,77 @@
|
||||
Size = {x = 140, y = 40}
|
||||
Size = {x = 200, y = 40}
|
||||
|
||||
numGui = 5
|
||||
gui = {
|
||||
{
|
||||
pos = {x = 110, y = 150, z = 0},
|
||||
guiType = GuiType.TEXT,
|
||||
name = 't0',
|
||||
text = 'New map',
|
||||
pos = {x = 20, y = 50, z = 0},
|
||||
scale = .5,
|
||||
font = 'batang.ttf',
|
||||
fontFirstChar = 0,
|
||||
fontLastChar = 256,
|
||||
color = {x = 1, y = 1, z = 1, w = 1}
|
||||
},
|
||||
{
|
||||
guiType = GuiType.TEXT,
|
||||
name = 't1',
|
||||
text = 'Map name',
|
||||
pos = {x = 20, y = 150, z = 0},
|
||||
scale = .25,
|
||||
font = 'batang.ttf',
|
||||
fontFirstChar = 0,
|
||||
fontLastChar = 256,
|
||||
color = {x = 1, y = 1, z = 1, w = 1}
|
||||
},
|
||||
{
|
||||
pos = {x = 20, y = 150, z = 0},
|
||||
size = Size,
|
||||
guiType = GuiType.TEXTBOX
|
||||
},
|
||||
{
|
||||
pos = {x = 110, y = 190, z = 0},
|
||||
guiType = GuiType.TEXT,
|
||||
name = 't2',
|
||||
text = 'Width',
|
||||
pos = {x = 20, y = 220, z = 0},
|
||||
scale = .25,
|
||||
font = 'batang.ttf',
|
||||
fontFirstChar = 0,
|
||||
fontLastChar = 256,
|
||||
color = {x = 1, y = 1, z = 1, w = 1}
|
||||
},
|
||||
{
|
||||
pos = {x = 20, y = 220, z = 0},
|
||||
size = Size,
|
||||
guiType = GuiType.TEXTBOX
|
||||
},
|
||||
{
|
||||
pos = {x = 110, y = 220, z = 0},
|
||||
guiType = GuiType.TEXT,
|
||||
name = 't3',
|
||||
text = 'Height',
|
||||
pos = {x = 20, y = 290, z = 0},
|
||||
scale = .25,
|
||||
font = 'batang.ttf',
|
||||
fontFirstChar = 0,
|
||||
fontLastChar = 256,
|
||||
color = {x = 1, y = 1, z = 1, w = 1}
|
||||
},
|
||||
{
|
||||
pos = {x = 20, y = 290, z = 0},
|
||||
size = Size,
|
||||
guiType = GuiType.TEXTBOX
|
||||
},
|
||||
{
|
||||
pos = {x = 420, y = 400, z = 0},
|
||||
size = {x = 150, y = 50},
|
||||
pos = {x = 20, y = 400, z = 0},
|
||||
size = {x = 150, y = 20},
|
||||
guiType = GuiType.BUTTON,
|
||||
name = 'Ok',
|
||||
buttonType = ButtonType.NEW_MAP_OK,
|
||||
numDependencies = 3,
|
||||
dependencies = {
|
||||
{id = 0},
|
||||
{id = 1},
|
||||
{id = 2}
|
||||
}
|
||||
dependencies = {{id = 2}, {id = 4}, {id = 6}}
|
||||
},
|
||||
{
|
||||
pos = {x = 250, y = 400, z = 0},
|
||||
size = {x = 150, y = 50},
|
||||
pos = {x = 190, y = 400, z = 0},
|
||||
size = {x = 150, y = 20},
|
||||
guiType = GuiType.BUTTON,
|
||||
name = 'Back',
|
||||
buttonType = ButtonType.BACK,
|
||||
|
||||
@@ -1,44 +1,47 @@
|
||||
Size = {x = 150, y = 40}
|
||||
Size = {x = 120, y = 20}
|
||||
|
||||
numGui = 6
|
||||
gui = {
|
||||
{
|
||||
pos = {x = 110, y = 40, z = 0},
|
||||
guiType = GuiType.TEXT,
|
||||
name = '',
|
||||
text = 'Options',
|
||||
pos = {x = 20, y = 50, z = 0},
|
||||
scale = .5,
|
||||
font = 'batang.ttf',
|
||||
fontFirstChar = 0,
|
||||
fontLastChar = 256,
|
||||
color = {x = 1, y = 1, z = 1, w = 1}
|
||||
},
|
||||
{
|
||||
pos = {x = 20, y = 100, z = 0},
|
||||
size = Size,
|
||||
guiType = GuiType.BUTTON,
|
||||
name = 'Controls',
|
||||
buttonType = ButtonType.CONTROLS_TAB
|
||||
},
|
||||
{
|
||||
pos = {x = 270, y = 40, z = 0},
|
||||
pos = {x = 180, y = 100, z = 0},
|
||||
size = Size,
|
||||
guiType = GuiType.BUTTON,
|
||||
name = 'Mouse',
|
||||
buttonType = ButtonType.MOUSE_TAB
|
||||
},
|
||||
{
|
||||
pos = {x = 430, y = 40, z = 0},
|
||||
pos = {x = 340, y = 100, z = 0},
|
||||
size = Size,
|
||||
guiType = GuiType.BUTTON,
|
||||
name = 'Video',
|
||||
buttonType = ButtonType.VIDEO_TAB
|
||||
},
|
||||
{
|
||||
pos = {x = 590, y = 40, z = 0},
|
||||
pos = {x = 500, y = 100, z = 0},
|
||||
size = Size,
|
||||
guiType = GuiType.BUTTON,
|
||||
name = 'Audio',
|
||||
buttonType = ButtonType.AUDIO_TAB
|
||||
},
|
||||
{
|
||||
pos = {x = 750, y = 40, z = 0},
|
||||
size = Size,
|
||||
guiType = GuiType.BUTTON,
|
||||
name = 'Multiplayer',
|
||||
buttonType = ButtonType.MULTIPLAYER_TAB
|
||||
},
|
||||
{
|
||||
pos = {x = 910, y = 100, z = 0},
|
||||
pos = {x = 20, y = 160, z = 0},
|
||||
size = Size,
|
||||
guiType = GuiType.BUTTON,
|
||||
name = 'Back',
|
||||
|
||||
@@ -1,58 +1,97 @@
|
||||
playerListboxPos = {x = 110, y = 10, z = 0}
|
||||
playerListboxPos = {x = 20, y = 30, z = 0}
|
||||
Pos = {x = playerListboxPos.x, y = playerListboxPos.y, z = playerListboxPos.z}
|
||||
FactionListboxSize = {x = 270, y = 20}
|
||||
Size = {x = 150, y = 20}
|
||||
gap = 10
|
||||
gapFactor = 3
|
||||
|
||||
function generateFactions(humanPlayer)
|
||||
factions = {'None', 'Asian Co-Prosperity Sphere', 'America inc.', 'European Republic'}
|
||||
colors = {
|
||||
{name = 'White', code = {r = 1, g = 1, b = 1}},
|
||||
{name = 'Red', code = {r = 1, g = 0, b = 0}},
|
||||
{name = 'Green', code = {r = 0, g = 1, b = 0}},
|
||||
{name = 'Blue', code = {r = 0, g = 0, b = 1}},
|
||||
{name = 'Yellow', code = {r = 1, g = 1, b = 0}},
|
||||
{name = 'Orange', code = {r = 1, g = .5, b = 0}},
|
||||
{name = 'Brown', code = {r = .5, g = .25, b = 0}},
|
||||
{name = 'Purple', code = {r = .7, g = 0, b = .7}},
|
||||
{name = 'Pink', code = {r = 1, g = .25, b = .5}},
|
||||
}
|
||||
|
||||
if humanPlayer then table.remove(factions, 1) end
|
||||
function generateColorTable(colors, fieldName)
|
||||
tbl = {}
|
||||
|
||||
return factions
|
||||
for i = 1, #colors do
|
||||
table.insert(tbl, colors[i][fieldName])
|
||||
end
|
||||
|
||||
return tbl
|
||||
end
|
||||
|
||||
factions = generateFactions(lineId == MAIN_PLAYER_ID)
|
||||
difficulties = {"Easy", "Medium", "Hard"}
|
||||
colors = {'White', 'Black', 'Red'}
|
||||
teams = {'0', '1', '2', '3', '4'}
|
||||
function generateGui(humanPlayer)
|
||||
factions = {'Random', 'Asian Co-Prosperity Sphere', 'America inc.', 'European Republic'}
|
||||
difficulties = {'None', "Easy AI", "Medium AI", "Hard AI"}
|
||||
teams = {'0', '1', '2', '3', '4'}
|
||||
|
||||
gui = {
|
||||
{
|
||||
pos = {x = Pos.x, y = Pos.y + (gapFactor * Size.y + gap) * (lineId + 1), z = Pos.z},
|
||||
size = FactionListboxSize,
|
||||
guiType = GuiType.LISTBOX,
|
||||
name = 'factions',
|
||||
numMaxDisplay = 3,
|
||||
lines = factions,
|
||||
listboxType = ListboxType.FACTIONS
|
||||
},
|
||||
{
|
||||
pos = {x = Pos.x + FactionListboxSize.x + gap, y = Pos.y + (gapFactor * Size.y + gap) * (lineId + 1), z = Pos.z},
|
||||
size = Size,
|
||||
guiType = GuiType.LISTBOX,
|
||||
name = 'difficulties',
|
||||
numMaxDisplay = 3,
|
||||
lines = difficulties,
|
||||
listboxType = ListboxType.CPU_DIFFICULTIES
|
||||
},
|
||||
{
|
||||
pos = {x = Pos.x + FactionListboxSize.x + Size.x + 2 * gap, y = Pos.y + (gapFactor * Size.y + gap) * (lineId + 1), z = Pos.z},
|
||||
size = Size,
|
||||
guiType = GuiType.LISTBOX,
|
||||
name = 'colors',
|
||||
numMaxDisplay = 3,
|
||||
lines = colors,
|
||||
listboxType = ListboxType.COLORS
|
||||
},
|
||||
{
|
||||
pos = {x = Pos.x + FactionListboxSize.x + 2 * Size.x + 3 * gap, y = Pos.y + (gapFactor * Size.y + gap) * (lineId + 1), z = Pos.z},
|
||||
size = Size,
|
||||
guiType = GuiType.LISTBOX,
|
||||
name = 'teams',
|
||||
numMaxDisplay = 3,
|
||||
lines = teams,
|
||||
listboxType = ListboxType.TEAMS
|
||||
},
|
||||
}
|
||||
firstGui = nil
|
||||
|
||||
if humanPlayer then
|
||||
table.remove(difficulties, 1)
|
||||
|
||||
firstGui = {
|
||||
guiType = GuiType.TEXT,
|
||||
name = '_mainPlayer',
|
||||
text = 'Player',
|
||||
pos = {x = 20, y = 120, z = 0},
|
||||
scale = .2,
|
||||
font = 'batang.ttf',
|
||||
fontFirstChar = 0,
|
||||
fontLastChar = 256,
|
||||
color = {x = 1, y = 1, z = 1, w = 1}
|
||||
}
|
||||
else
|
||||
firstGui = {
|
||||
pos = {x = Pos.x, y = Pos.y + (gapFactor * Size.y + gap) * (lineId + 1), z = Pos.z},
|
||||
size = Size,
|
||||
guiType = GuiType.LISTBOX,
|
||||
name = 'difficulties',
|
||||
numMaxDisplay = 3,
|
||||
lines = difficulties,
|
||||
listboxType = ListboxType.CPU_DIFFICULTIES
|
||||
}
|
||||
end
|
||||
|
||||
local gui = {
|
||||
firstGui,
|
||||
{
|
||||
pos = {x = Pos.x + Size.x + gap, y = Pos.y + (gapFactor * Size.y + gap) * (lineId + 1), z = Pos.z},
|
||||
size = FactionListboxSize,
|
||||
guiType = GuiType.LISTBOX,
|
||||
name = 'factions',
|
||||
numMaxDisplay = 3,
|
||||
lines = factions,
|
||||
listboxType = ListboxType.FACTIONS
|
||||
},
|
||||
{
|
||||
pos = {x = Pos.x + Size.x + FactionListboxSize.x + 2 * gap, y = Pos.y + (gapFactor * Size.y + gap) * (lineId + 1), z = Pos.z},
|
||||
size = Size,
|
||||
guiType = GuiType.LISTBOX,
|
||||
name = 'colors',
|
||||
numMaxDisplay = 3,
|
||||
lines = generateColorTable(colors, 'name'),
|
||||
listboxType = ListboxType.COLORS
|
||||
},
|
||||
{
|
||||
pos = {x = Pos.x + FactionListboxSize.x + 2 * Size.x + 3 * gap, y = Pos.y + (gapFactor * Size.y + gap) * (lineId + 1), z = Pos.z},
|
||||
size = {x = 50, y = 20},
|
||||
guiType = GuiType.LISTBOX,
|
||||
name = 'teams',
|
||||
numMaxDisplay = 3,
|
||||
lines = teams,
|
||||
listboxType = ListboxType.TEAMS
|
||||
},
|
||||
}
|
||||
|
||||
return gui
|
||||
end
|
||||
|
||||
gui = generateGui(lineId == MAIN_PLAYER_ID)
|
||||
|
||||
@@ -10,7 +10,62 @@ MAIN_PLAYER_ID = 0
|
||||
|
||||
gui = {
|
||||
{
|
||||
pos = {x = 110, y = 310, z = 0},
|
||||
guiType = GuiType.TEXT,
|
||||
name = '',
|
||||
text = 'Singleplayer',
|
||||
pos = {x = 20, y = 50, z = 0},
|
||||
scale = .5,
|
||||
font = 'batang.ttf',
|
||||
fontFirstChar = 0,
|
||||
fontLastChar = 256,
|
||||
color = {x = 1, y = 1, z = 1, w = 1}
|
||||
},
|
||||
{
|
||||
guiType = GuiType.TEXT,
|
||||
name = '',
|
||||
text = 'Player',
|
||||
pos = {x = 20, y = 100, z = 0},
|
||||
scale = .2,
|
||||
font = 'batang.ttf',
|
||||
fontFirstChar = 0,
|
||||
fontLastChar = 256,
|
||||
color = {x = 1, y = 1, z = 1, w = 1}
|
||||
},
|
||||
{
|
||||
guiType = GuiType.TEXT,
|
||||
name = '',
|
||||
text = 'Faction',
|
||||
pos = {x = 180, y = 100, z = 0},
|
||||
scale = .2,
|
||||
font = 'batang.ttf',
|
||||
fontFirstChar = 0,
|
||||
fontLastChar = 256,
|
||||
color = {x = 1, y = 1, z = 1, w = 1}
|
||||
},
|
||||
{
|
||||
guiType = GuiType.TEXT,
|
||||
name = '',
|
||||
text = 'Color',
|
||||
pos = {x = 460, y = 100, z = 0},
|
||||
scale = .2,
|
||||
font = 'batang.ttf',
|
||||
fontFirstChar = 0,
|
||||
fontLastChar = 256,
|
||||
color = {x = 1, y = 1, z = 1, w = 1}
|
||||
},
|
||||
{
|
||||
guiType = GuiType.TEXT,
|
||||
name = '',
|
||||
text = 'Team',
|
||||
pos = {x = 620, y = 100, z = 0},
|
||||
scale = .2,
|
||||
font = 'batang.ttf',
|
||||
fontFirstChar = 0,
|
||||
fontLastChar = 256,
|
||||
color = {x = 1, y = 1, z = 1, w = 1}
|
||||
},
|
||||
{
|
||||
pos = {x = 20, y = 310, z = 0},
|
||||
size = Size,
|
||||
guiType = GuiType.LISTBOX,
|
||||
addPlayerGui = true,
|
||||
@@ -18,16 +73,16 @@ gui = {
|
||||
numMaxDisplay = 5
|
||||
},
|
||||
{
|
||||
pos = {x = 110, y = 460, z = 0},
|
||||
pos = {x = 20, y = 460, z = 0},
|
||||
size = Size,
|
||||
guiType = GuiType.BUTTON,
|
||||
buttonType = ButtonType.PLAY,
|
||||
name = 'Play',
|
||||
numDependencies = 4,
|
||||
dependencies = {{id = 0}}
|
||||
dependencies = {{id = 5}}
|
||||
},
|
||||
{
|
||||
pos = {x = 110 + Size.x + 10, y = 460, z = 0},
|
||||
pos = {x = 20 + Size.x + 10, y = 460, z = 0},
|
||||
size = Size,
|
||||
guiType = GuiType.BUTTON,
|
||||
buttonType = ButtonType.BACK,
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
headerHeight = 150
|
||||
statsInitHeight = 120
|
||||
statsSpace = 100
|
||||
headerHeight = 100
|
||||
statsInitLeft = .5 * res.x - 400
|
||||
statsInitHeight = 40
|
||||
statsSpace = 20
|
||||
fontName = 'batang.ttf'
|
||||
|
||||
gui = {
|
||||
@@ -8,8 +9,7 @@ gui = {
|
||||
guiType = GuiType.TEXT,
|
||||
text = 'Statistics',
|
||||
name = 'stat',
|
||||
pos = {x = 850, y = 100, z = 0},
|
||||
zIndex = 0,
|
||||
pos = {x = .4 * res.x, y = 50, z = 0},
|
||||
scale = 0.5,
|
||||
font = fontName,
|
||||
fontFirstChar = 0,
|
||||
@@ -20,9 +20,8 @@ gui = {
|
||||
guiType = GuiType.TEXT,
|
||||
text = 'Player',
|
||||
name = 'pl',
|
||||
pos = {x = 50, y = headerHeight, z = 0},
|
||||
zIndex = 0,
|
||||
scale = 0.3,
|
||||
pos = {x = statsInitLeft + 10, y = headerHeight, z = 0},
|
||||
scale = 0.18,
|
||||
font = fontName,
|
||||
fontFirstChar = 0,
|
||||
fontLastChar = 256,
|
||||
@@ -32,9 +31,8 @@ gui = {
|
||||
guiType = GuiType.TEXT,
|
||||
text = 'Vehicles built',
|
||||
name = 'vb',
|
||||
pos = {x = 150, y = headerHeight, z = 0},
|
||||
zIndex = 0,
|
||||
scale = 0.3,
|
||||
pos = {x = statsInitLeft + 110, y = headerHeight, z = 0},
|
||||
scale = 0.18,
|
||||
font = fontName,
|
||||
fontFirstChar = 0,
|
||||
fontLastChar = 256,
|
||||
@@ -44,9 +42,8 @@ gui = {
|
||||
guiType = GuiType.TEXT,
|
||||
text = 'Vehicles destroyed',
|
||||
name = 'vd',
|
||||
pos = {x = 450, y = headerHeight, z = 0},
|
||||
zIndex = 0,
|
||||
scale = 0.3,
|
||||
pos = {x = statsInitLeft + 220, y = headerHeight, z = 0},
|
||||
scale = 0.18,
|
||||
font = fontName,
|
||||
fontFirstChar = 0,
|
||||
fontLastChar = 256,
|
||||
@@ -56,9 +53,8 @@ gui = {
|
||||
guiType = GuiType.TEXT,
|
||||
text = 'Vehicles lost',
|
||||
name = 'vl',
|
||||
pos = {x = 850, y = headerHeight, z = 0},
|
||||
zIndex = 0,
|
||||
scale = 0.3,
|
||||
pos = {x = statsInitLeft + 370, y = headerHeight, z = 0},
|
||||
scale = 0.18,
|
||||
font = fontName,
|
||||
fontFirstChar = 0,
|
||||
fontLastChar = 256,
|
||||
@@ -66,11 +62,10 @@ gui = {
|
||||
},
|
||||
{
|
||||
guiType = GuiType.TEXT,
|
||||
text = 'Structures built',
|
||||
text = 'Structs built',
|
||||
name = 'sb',
|
||||
pos = {x = 1050, y = headerHeight, z = 0},
|
||||
zIndex = 0,
|
||||
scale = 0.3,
|
||||
pos = {x = statsInitLeft + 480, y = headerHeight, z = 0},
|
||||
scale = 0.18,
|
||||
font = fontName,
|
||||
fontFirstChar = 0,
|
||||
fontLastChar = 256,
|
||||
@@ -78,11 +73,10 @@ gui = {
|
||||
},
|
||||
{
|
||||
guiType = GuiType.TEXT,
|
||||
text = 'Structures destroyed',
|
||||
text = 'Structs destroyed',
|
||||
name = 'sd',
|
||||
pos = {x = 1350, y = headerHeight, z = 0},
|
||||
zIndex = 0,
|
||||
scale = 0.3,
|
||||
pos = {x = statsInitLeft + 580, y = headerHeight, z = 0},
|
||||
scale = 0.18,
|
||||
font = fontName,
|
||||
fontFirstChar = 0,
|
||||
fontLastChar = 256,
|
||||
@@ -90,18 +84,17 @@ gui = {
|
||||
},
|
||||
{
|
||||
guiType = GuiType.TEXT,
|
||||
text = 'Structures lost',
|
||||
text = 'Structs lost',
|
||||
name = 'sl',
|
||||
pos = {x = 1720, y = headerHeight, z = 0},
|
||||
zIndex = 0,
|
||||
scale = 0.3,
|
||||
pos = {x = statsInitLeft + 720, y = headerHeight, z = 0},
|
||||
scale = 0.18,
|
||||
font = 'batang.ttf',
|
||||
fontFirstChar = 0,
|
||||
fontLastChar = 256,
|
||||
color = {x = 1, y = 1, z = 1, w = 1}
|
||||
},
|
||||
{
|
||||
pos = {x = 1700, y = 1000, z = 0},
|
||||
pos = {x = res.x - Size.x - 10, y = res.y - Size.y - 10, z = 0},
|
||||
size = Size,
|
||||
guiType = GuiType.BUTTON,
|
||||
name = 'Back',
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
res = graphics.resolution
|
||||
|
||||
HubSize = {x = res.x * .3, y = res.y * .8}
|
||||
HubSize = {x = 500, y = res.y * .8}
|
||||
HubPos = {x = .5 * (res.x - HubSize.x), y = 10, z = .1}
|
||||
HubMargin = {top = 10, left = 10, right = 10, bottom = 10}
|
||||
|
||||
@@ -11,6 +11,50 @@ warIcon = 'Icons/PlayerStates/war.png'
|
||||
allianceIcon = 'Icons/PlayerStates/alliance.png'
|
||||
|
||||
gui = {
|
||||
{
|
||||
guiType = GuiType.TEXT,
|
||||
text = 'Trading hub',
|
||||
name = '',
|
||||
pos = {x = HubPos.x + .25 * HubSize.x, y = HubPos.y + HubMargin.top + 25, z = .11},
|
||||
scale = 0.5,
|
||||
font = 'batang.ttf',
|
||||
fontFirstChar = 0,
|
||||
fontLastChar = 256,
|
||||
color = {x = 1, y = 1, z = 1, w = 1}
|
||||
},
|
||||
{
|
||||
guiType = GuiType.TEXT,
|
||||
text = 'Name',
|
||||
name = '',
|
||||
pos = {x = HubPos.x + HubMargin.left, y = HubPos.y + HubMargin.top + 60, z = .11},
|
||||
scale = 0.25,
|
||||
font = 'batang.ttf',
|
||||
fontFirstChar = 0,
|
||||
fontLastChar = 256,
|
||||
color = {x = 1, y = 1, z = 1, w = 1}
|
||||
},
|
||||
{
|
||||
guiType = GuiType.TEXT,
|
||||
text = 'Status',
|
||||
name = '',
|
||||
pos = {x = HubPos.x + HubMargin.left + 130, y = HubPos.y + HubMargin.top + 60, z = .11},
|
||||
scale = 0.25,
|
||||
font = 'batang.ttf',
|
||||
fontFirstChar = 0,
|
||||
fontLastChar = 256,
|
||||
color = {x = 1, y = 1, z = 1, w = 1}
|
||||
},
|
||||
{
|
||||
guiType = GuiType.TEXT,
|
||||
text = 'Trade offers',
|
||||
name = '',
|
||||
pos = {x = HubPos.x + HubMargin.right + 200, y = HubPos.y + HubMargin.top + 60, z = .11},
|
||||
scale = 0.25,
|
||||
font = 'batang.ttf',
|
||||
fontFirstChar = 0,
|
||||
fontLastChar = 256,
|
||||
color = {x = 1, y = 1, z = 1, w = 1}
|
||||
},
|
||||
{
|
||||
guiType = GuiType.GUI_RECTANGLE,
|
||||
pos = HubPos,
|
||||
|
||||
@@ -1,17 +1,17 @@
|
||||
res = graphics.resolution
|
||||
|
||||
buttonSize = {x = 100, y = 20}
|
||||
buttonSize = {x = 60, y = 20}
|
||||
textboxSize = {x = 200, y = 20}
|
||||
|
||||
height = HubPos.y + HubMargin.top + lineId * 30
|
||||
height = HubPos.y + HubMargin.top + 90 + lineId * 70
|
||||
|
||||
gui = {
|
||||
{
|
||||
guiType = GuiType.TEXT,
|
||||
name = 'playerName',
|
||||
text = '',
|
||||
pos = {x = HubPos.x + HubMargin.left, y = height + 35, z = .11},
|
||||
scale = {x = .2, y = .2},
|
||||
pos = {x = HubPos.x + HubMargin.left, y = height + 40, z = .11},
|
||||
scale = .2,
|
||||
font = 'batang.ttf',
|
||||
fontFirstChar = 0,
|
||||
fontLastChar = 256,
|
||||
@@ -19,8 +19,8 @@ gui = {
|
||||
},
|
||||
{
|
||||
guiType = GuiType.GUI_RECTANGLE,
|
||||
pos = {x = HubPos.x + HubMargin.left + 100, y = height, z = .11},
|
||||
size = {x = 50, y = 50},
|
||||
pos = {x = HubPos.x + HubMargin.left + 130, y = height, z = .11},
|
||||
size = {x = 40, y = 40},
|
||||
imagePath = relationsIcon
|
||||
},
|
||||
{
|
||||
@@ -35,7 +35,7 @@ gui = {
|
||||
buttonType = ButtonType.TRADING_SCREEN,
|
||||
name = 'Trade',
|
||||
guiScreen = 'tradingScreen.lua',
|
||||
pos = {x = HubPos.x + HubSize.x - buttonSize.x - HubMargin.right, y = height + 25, z = .11},
|
||||
pos = {x = HubPos.x + HubSize.x - HubMargin.right - buttonSize.x, y = height + 25, z = .11},
|
||||
size = buttonSize,
|
||||
trigger = 10,
|
||||
dependencies = {{id = 2}}
|
||||
|
||||
@@ -3,7 +3,7 @@ HubMargin.top = 100
|
||||
|
||||
resTrayPos = {x = HubPos.x + HubMargin.left, y = HubPos.y + HubMargin.top}
|
||||
iconSize = {x = 25, y = 25}
|
||||
textboxSize = {x = 200, y = 25}
|
||||
textboxSize = {x = 150, y = 25}
|
||||
|
||||
buttonSize = {x = 100, y = 20}
|
||||
|
||||
@@ -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
|
||||
@@ -117,7 +134,7 @@ gui = {
|
||||
buttonType = ButtonType.PLAYER_TRADE,
|
||||
name = 'Back',
|
||||
guiScreen = 'tradingHub.lua',
|
||||
pos = {x = HubPos.x + HubSize.x - 3 * buttonSize.x - HubMargin.right, y = HubPos.y + HubSize.y - buttonSize.y - HubMargin.bottom, z = .2},
|
||||
pos = {x = HubPos.x + HubSize.x - 2 * buttonSize.x - 2 * HubMargin.right, y = HubPos.y + HubSize.y - buttonSize.y - HubMargin.bottom, z = .2},
|
||||
size = buttonSize,
|
||||
trigger = 10
|
||||
},
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -7,16 +7,16 @@ music = {
|
||||
|
||||
res = graphics.resolution
|
||||
overlaySize = {x = 600, y = 450}
|
||||
overlayPos = {x = .5 * (res.x - overlaySize.x), y = 200, z = 0}
|
||||
overlayPos = {x = .5 * (res.x - overlaySize.x), y = 100, z = .2}
|
||||
buttonSize = {x = 150, y = 40}
|
||||
buttonInitPos = {x = .5 * (res.x - buttonSize.x), y = 350, z = .1}
|
||||
buttonInitPos = {x = .5 * (res.x - buttonSize.x), y = 250, z = .3}
|
||||
|
||||
gui = {
|
||||
{
|
||||
guiType = GuiType.TEXT,
|
||||
text = 'VICTORY!!!',
|
||||
name = 'V',
|
||||
pos = {x = overlayPos.x + 20, y = overlayPos.y + 75, z = .1},
|
||||
pos = {x = overlayPos.x + 20, y = overlayPos.y + 75, z = .3},
|
||||
scale = 1,
|
||||
font = 'batang.ttf',
|
||||
fontFirstChar = 0,
|
||||
|
||||
@@ -1,8 +1,29 @@
|
||||
numGui = 9
|
||||
gui = {
|
||||
{
|
||||
pos = {x = 210, y = 190, z = 0},
|
||||
size = {x = 360, y = 20},
|
||||
guiType = GuiType.TEXT,
|
||||
name = '',
|
||||
text = 'Video',
|
||||
pos = {x = 20, y = 50, z = 0},
|
||||
scale = .5,
|
||||
font = 'batang.ttf',
|
||||
fontFirstChar = 0,
|
||||
fontLastChar = 256,
|
||||
color = {x = 1, y = 1, z = 1, w = 1}
|
||||
},
|
||||
{
|
||||
guiType = GuiType.TEXT,
|
||||
name = '',
|
||||
text = 'Resolution',
|
||||
pos = {x = 20, y = 100, z = 0},
|
||||
scale = .2,
|
||||
font = 'batang.ttf',
|
||||
fontFirstChar = 0,
|
||||
fontLastChar = 256,
|
||||
color = {x = 1, y = 1, z = 1, w = 1}
|
||||
},
|
||||
{
|
||||
pos = {x = 20, y = 100, z = 0},
|
||||
size = {x = 120, y = 20},
|
||||
guiType = GuiType.LISTBOX,
|
||||
listboxType = ListboxType.RESOLUTION,
|
||||
numMaxDisplay = 5,
|
||||
@@ -14,41 +35,21 @@ gui = {
|
||||
}
|
||||
},
|
||||
{
|
||||
pos = {x = 110, y = 40, z = 0},
|
||||
guiType = GuiType.CHECKBOX
|
||||
},
|
||||
{
|
||||
pos = {x = 110, y = 70, z = 0},
|
||||
guiType = GuiType.CHECKBOX
|
||||
},
|
||||
{
|
||||
pos = {x = 110, y = 100, z = 0},
|
||||
guiType = GuiType.CHECKBOX
|
||||
},
|
||||
{
|
||||
pos = {x = 110, y = 130, z = 0},
|
||||
guiType = GuiType.CHECKBOX
|
||||
},
|
||||
{
|
||||
pos = {x = 110, y = 160, z = 0},
|
||||
guiType = GuiType.CHECKBOX
|
||||
},
|
||||
{
|
||||
pos = {x = 100, y = 400, z = 0},
|
||||
pos = {x = 20, y = 310, z = 0},
|
||||
size = {x = 150, y = 20},
|
||||
guiType = GuiType.BUTTON,
|
||||
name = 'Ok',
|
||||
buttonType = ButtonType.OK
|
||||
},
|
||||
{
|
||||
pos = {x = 260, y = 400, z = 0},
|
||||
pos = {x = 180, y = 310, z = 0},
|
||||
size = {x = 150, y = 20},
|
||||
guiType = GuiType.BUTTON,
|
||||
name = 'Restore defaults',
|
||||
buttonType = ButtonType.DEFAULTS
|
||||
},
|
||||
{
|
||||
pos = {x = 420, y = 400, z = 0},
|
||||
pos = {x = 340, y = 310, z = 0},
|
||||
size = {x = 150, y = 20},
|
||||
guiType = GuiType.BUTTON,
|
||||
name = 'Back',
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 2.8 KiB After Width: | Height: | Size: 2.9 KiB |
@@ -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">
|
||||
<circle
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:square;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke fill markers"
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:5;stroke-linecap:square;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke fill markers"
|
||||
id="path1"
|
||||
cy="75.38356"
|
||||
cx="125.38356"
|
||||
r="25"
|
||||
inkscape:export-filename="time.png"
|
||||
inkscape:export-xdpi="49.320389"
|
||||
inkscape:export-ydpi="49.320389" />
|
||||
inkscape:export-xdpi="46.181816"
|
||||
inkscape:export-ydpi="46.181816" />
|
||||
<rect
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke fill markers"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:3;stroke-linecap:square;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke fill markers"
|
||||
id="rect1"
|
||||
width="15"
|
||||
height="1.7659841"
|
||||
x="125"
|
||||
y="75" />
|
||||
x="21.99954"
|
||||
y="144.25369"
|
||||
transform="rotate(-50.109638)" />
|
||||
<rect
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0;stroke-linecap:square;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke fill markers"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:3;stroke-linecap:square;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke fill markers"
|
||||
id="rect1-5"
|
||||
width="22.780312"
|
||||
height="1.7659841"
|
||||
|
||||
|
Before Width: | Height: | Size: 2.2 KiB After Width: | Height: | Size: 2.3 KiB |
+1
-1
@@ -23,7 +23,7 @@ set(OPTIONS_BUTTONS optionsButton.cpp tabButton.cpp okButton.cpp defaultsButton.
|
||||
set(TRADING_BUTTONS activeStateBackButton.cpp playerTradeButton.cpp tradingScreenButton.cpp offerButton.cpp resourceAmmountButton.cpp)
|
||||
set(MENU_BUTTONS mainMenuButton.cpp singlePlayerButton.cpp exitButton.cpp backButton.cpp playButton.cpp)
|
||||
set(MAP_EDITOR_BUTTONS mapEditorButton.cpp newMapButton.cpp loadMapButton.cpp exportButton.cpp)
|
||||
set(BUTTONS statsButton.cpp activeStateButton.cpp minimapButton.cpp ${TRADING_BUTTONS} ${OPTIONS_BUTTONS} ${MENU_BUTTONS} ${MAP_EDITOR_BUTTONS} ${UNIT_BUTTONS})
|
||||
set(BUTTONS pfButtonBase.cpp statsButton.cpp activeStateButton.cpp minimapButton.cpp ${TRADING_BUTTONS} ${OPTIONS_BUTTONS} ${MENU_BUTTONS} ${MAP_EDITOR_BUTTONS} ${UNIT_BUTTONS})
|
||||
|
||||
set(LISTBOXES skyboxTextureListbox.cpp landTextureListbox.cpp gameObjectListbox.cpp mapListbox.cpp)
|
||||
set(GUI tooltip.cpp concreteGuiManager.cpp ${BUTTONS} ${LISTBOXES})
|
||||
|
||||
+76
-13
@@ -16,6 +16,7 @@
|
||||
#include <ctype.h>
|
||||
#include <stdlib.h>
|
||||
#include <map>
|
||||
#include <unordered_set>
|
||||
|
||||
#include "activeGameState.h"
|
||||
#include "inGameAppState.h"
|
||||
@@ -583,7 +584,10 @@ namespace battleship{
|
||||
unitButtons.push_back(guiManager->getButtons()[guiManager->getButtons().size() - (i + 1)]);
|
||||
}
|
||||
|
||||
// isPressed is whether the bind is pressed or just something like hovered
|
||||
void ActiveGameState::onAction(int bind, bool isPressed) {
|
||||
int numEntered; // Used in entering number series to store the latest number entered
|
||||
|
||||
if(tradingScreen || !ConcreteGuiManager::getSingleton()->findClickedButtons().empty()) return;
|
||||
|
||||
GameObjectFrameController *ufCtr = GameObjectFrameController::getSingleton();
|
||||
@@ -803,21 +807,66 @@ namespace battleship{
|
||||
case Bind::GROUP_7:
|
||||
case Bind::GROUP_8:
|
||||
case Bind::GROUP_9:
|
||||
if(isPressed){
|
||||
int group = bind - Bind::GROUP_0;
|
||||
// If none of the number keys are pressed then break
|
||||
if(!isPressed) break;
|
||||
|
||||
if(controlPressed)
|
||||
unitGroups[group] = mainPlayer->getSelectedUnits();
|
||||
else{
|
||||
if(!shiftPressed)
|
||||
mainPlayer->selectUnits(unitGroups[group]);
|
||||
else
|
||||
for(Unit *u : unitGroups[group])
|
||||
mainPlayer->selectUnit(u);
|
||||
}
|
||||
}
|
||||
// Otherwise save the number entered
|
||||
numEntered = bind - Bind::GROUP_0;
|
||||
|
||||
break;
|
||||
// If this is the first number enetered in this group then set the pendingGroup to 0
|
||||
if(pendingGroup == -1)
|
||||
{
|
||||
pendingGroup = 0;
|
||||
}
|
||||
|
||||
// Multiply the current pendingGroup num by 10 to give it another 0's place and add the new number enetered
|
||||
pendingGroup = pendingGroup * 10 + numEntered;
|
||||
break;
|
||||
case Bind::Key_Q:
|
||||
// qPressed = isPressed;
|
||||
// If Q is not pressed or the pending group has not been set then break
|
||||
if(!isPressed || pendingGroup == -1) break;
|
||||
|
||||
if(controlPressed)
|
||||
{
|
||||
// Ctrl + group number + Q assigns the current selection of units
|
||||
|
||||
// If there are currently maximum allowed units in existence then do not allow creation of a new unique group, only allow overwritting an existing group
|
||||
if(static_cast<int>(unitGroups.size()) >= maxUnitGroups)
|
||||
{
|
||||
// See if pendingGroup is equal to any key and overwrite the key if so.
|
||||
auto it = unitGroups.find(pendingGroup);
|
||||
if(it != unitGroups.end())
|
||||
{
|
||||
unitGroups[pendingGroup] = mainPlayer->getSelectedUnits();
|
||||
}
|
||||
// If it can't overwrite then the pendingGroup will just be reset since this will bypass the rest of the if statements
|
||||
}
|
||||
// Runs if there are not max allowed units in existence
|
||||
else
|
||||
{
|
||||
// This will create a key if it doesn't already exist
|
||||
unitGroups[pendingGroup] = mainPlayer->getSelectedUnits();
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
auto it = unitGroups.find(pendingGroup);
|
||||
if(it != unitGroups.end())
|
||||
{
|
||||
// Pressing a number and Q without shifting replaces the unit selection with the unit group for the number pressed
|
||||
// Pressing shift allows multiple unit groups to be selected
|
||||
if(!shiftPressed)
|
||||
{
|
||||
deselectUnits();
|
||||
}
|
||||
mainPlayer->selectUnits(it->second);
|
||||
}
|
||||
}
|
||||
// Reset the pending group
|
||||
pendingGroup = -1;
|
||||
break;
|
||||
case Bind::DESELECT_STRUCTURE:
|
||||
forceCursorState = false;
|
||||
buildableStructSelected = false;
|
||||
@@ -861,4 +910,18 @@ namespace battleship{
|
||||
void ActiveGameState::onRawMouseWheelScroll(bool up){
|
||||
CameraController::getSingleton()->zoomCamera(up);
|
||||
}
|
||||
|
||||
std::vector<Unit*>& ActiveGameState::getUnitGroup(int i)
|
||||
{
|
||||
static std::vector<Unit*> empty;
|
||||
auto it = unitGroups.find(i);
|
||||
if(it != unitGroups.end())
|
||||
{
|
||||
return it->second;
|
||||
}
|
||||
else
|
||||
{
|
||||
return empty;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+7
-2
@@ -7,6 +7,7 @@
|
||||
#include "unit.h"
|
||||
|
||||
#include <util.h>
|
||||
#include <unordered_map>
|
||||
|
||||
namespace vb01{
|
||||
class Node;
|
||||
@@ -42,6 +43,7 @@ namespace battleship{
|
||||
void onAction(int, bool);
|
||||
void onAnalog(int, float);
|
||||
void onRawMouseWheelScroll(bool);
|
||||
std::vector<Unit*>& getUnitGroup(int i);
|
||||
inline CursorState getCursorState(){return cursorState;}
|
||||
inline void setCursorState(CursorState cs){this->cursorState = cs;}
|
||||
inline void addButton(vb01Gui::Button *b){guiButtons.push_back(b);}
|
||||
@@ -49,7 +51,7 @@ namespace battleship{
|
||||
inline std::vector<vb01::Node*> getGuiRects(){return guiRects;}
|
||||
inline std::vector<vb01::Text*> getGuiTexts(){return guiTexts;}
|
||||
inline Player* getPlayer(){return mainPlayer;}
|
||||
inline std::vector<Unit*>& getUnitGroup(int i){return unitGroups[i];}
|
||||
inline std::unordered_map<int, std::vector<Unit*>>& getUnitGroups(){return unitGroups;} // Returns the unitGroups by reference
|
||||
inline void setBuildableStructSelected(bool bss){this->buildableStructSelected = bss;}
|
||||
inline bool isBuildableStructSelected(){return buildableStructSelected;}
|
||||
inline float getDepth(){return depth;}
|
||||
@@ -82,7 +84,8 @@ namespace battleship{
|
||||
GuiAppState *guiState;
|
||||
GameObject *gameObjHoveredOn = nullptr;
|
||||
vb01::Vector2 clickPoint;
|
||||
std::vector<Unit*> unitGroups[9], prevSelectedUnits;
|
||||
std::vector<Unit*> prevSelectedUnits;
|
||||
std::unordered_map<int, std::vector<Unit*>> unitGroups;
|
||||
std::vector<Order::Target> targets;
|
||||
vb01::Node *dragboxNode = nullptr;
|
||||
std::vector<vb01::Node*> guiRects;
|
||||
@@ -91,6 +94,8 @@ namespace battleship{
|
||||
bool isSelectionBox = false;
|
||||
bool shiftPressed = false;
|
||||
bool controlPressed = false;
|
||||
int pendingGroup = -1; // The group value entered to save and select a group of units. -1 means no units have been selected
|
||||
int maxUnitGroups = 100; // There can be a max of 100 unit groups at a time
|
||||
bool selectMouseClicked = false;
|
||||
bool orderMouseClicked = false;
|
||||
bool buildableStructSelected = false;
|
||||
|
||||
@@ -19,7 +19,7 @@ namespace battleship{
|
||||
using namespace gameBase;
|
||||
|
||||
ActiveStateButton::ActiveStateButton(Vector3 pos, Vector2 size, string gs, string name, string fontPath, int trigger, string imagePath) :
|
||||
Button(pos, size, name, fontPath, trigger, true, imagePath), guiScreen(gs){}
|
||||
PfButtonBase(pos, size, name, fontPath, trigger, true, imagePath), guiScreen(gs){}
|
||||
|
||||
void ActiveStateButton::onClick(){
|
||||
StateManager *stateManager = GameManager::getSingleton()->getStateManager();
|
||||
|
||||
+2
-2
@@ -1,10 +1,10 @@
|
||||
#ifndef ACTIVE_STATE_BUTTON_H
|
||||
#define ACTIVE_STATE_BUTTON_H
|
||||
|
||||
#include <button.h>
|
||||
#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();
|
||||
|
||||
+1
-1
@@ -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() {
|
||||
|
||||
+2
-2
@@ -1,10 +1,10 @@
|
||||
#ifndef BACK_BUTTON_H
|
||||
#define BACK_BUTTON_H
|
||||
|
||||
#include <button.h>
|
||||
#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();
|
||||
|
||||
@@ -3,59 +3,60 @@
|
||||
|
||||
namespace battleship{
|
||||
enum Bind{
|
||||
LEFT_CLICK,
|
||||
SCROLLING_UP,
|
||||
SCROLLING_DOWN,
|
||||
LEFT,
|
||||
RIGHT,
|
||||
DELETE_CHAR,
|
||||
TOGGLE_MAIN_MENU,
|
||||
LOOK_UP,
|
||||
LOOK_DOWN,
|
||||
LOOK_LEFT,
|
||||
LOOK_RIGHT,
|
||||
LOOK_AROUND,
|
||||
DRAG_BOX,
|
||||
ROTATE_OBJ_FRAME,
|
||||
HALT,
|
||||
ZOOM_IN,
|
||||
ZOOM_OUT,
|
||||
LEFT_CONTROL,
|
||||
LEFT_SHIFT,
|
||||
SELECT_PATROL_POINTS,
|
||||
LAUNCH,
|
||||
SHIFT_SUB_DEPTH,
|
||||
GROUP_0,
|
||||
GROUP_1,
|
||||
GROUP_2,
|
||||
GROUP_3,
|
||||
GROUP_4,
|
||||
GROUP_5,
|
||||
GROUP_6,
|
||||
GROUP_7,
|
||||
GROUP_8,
|
||||
GROUP_9,
|
||||
SELECT_STRUCTURE,
|
||||
DESELECT_STRUCTURE,
|
||||
DECREASE_RADIUS,
|
||||
INCREASE_RADIUS,
|
||||
PUSH_VERTS_UP,
|
||||
PUSH_VERTS_DOWN,
|
||||
MOVE_TERR_OBJ,
|
||||
SCALE_TERR_OBJ,
|
||||
STOP_TERR_OBJ,
|
||||
ENABLE_X_AXIS,
|
||||
ENABLE_Y_AXIS,
|
||||
ENABLE_Z_AXIS,
|
||||
CREATE_WATERBODY,
|
||||
GENERATE_WEIGHTS,
|
||||
TOGGLE_CELL_MARKERS,
|
||||
EJECT_GARRISON,
|
||||
ENABLE_CHASE_STATE,
|
||||
ENABLE_STAND_GROUND_STATE,
|
||||
ENABLE_HOLD_FIRE_STATE,
|
||||
HACK,
|
||||
MOVE_CAMERA
|
||||
LEFT_CLICK, // Bind 0
|
||||
SCROLLING_UP, // 1
|
||||
SCROLLING_DOWN, // 2
|
||||
LEFT, // 3
|
||||
RIGHT, // 4
|
||||
DELETE_CHAR, // 5
|
||||
TOGGLE_MAIN_MENU, // 6
|
||||
LOOK_UP, // 7
|
||||
LOOK_DOWN, // 8
|
||||
LOOK_LEFT, // 9
|
||||
LOOK_RIGHT, // 10
|
||||
LOOK_AROUND, // 11
|
||||
DRAG_BOX, // 12
|
||||
ROTATE_OBJ_FRAME, // 13
|
||||
HALT, // 14
|
||||
ZOOM_IN, // 15
|
||||
ZOOM_OUT, // 16
|
||||
LEFT_CONTROL, // 17
|
||||
LEFT_SHIFT, // 18
|
||||
SELECT_PATROL_POINTS, // 19
|
||||
LAUNCH, // 20
|
||||
SHIFT_SUB_DEPTH, // 21
|
||||
GROUP_0, // 22
|
||||
GROUP_1, // 23
|
||||
GROUP_2, // 24
|
||||
GROUP_3, // 25
|
||||
GROUP_4, // 26
|
||||
GROUP_5, // 27
|
||||
GROUP_6, // 28
|
||||
GROUP_7, // 29
|
||||
GROUP_8, // 30
|
||||
GROUP_9, // 31
|
||||
SELECT_STRUCTURE, // 32
|
||||
DESELECT_STRUCTURE, // 33
|
||||
DECREASE_RADIUS, // 34
|
||||
INCREASE_RADIUS, // 35
|
||||
PUSH_VERTS_UP, // 36
|
||||
PUSH_VERTS_DOWN, // 37
|
||||
MOVE_TERR_OBJ, // 38
|
||||
SCALE_TERR_OBJ, // 39
|
||||
STOP_TERR_OBJ, // 40
|
||||
ENABLE_X_AXIS, // 41
|
||||
ENABLE_Y_AXIS, // 42
|
||||
ENABLE_Z_AXIS, // 43
|
||||
CREATE_WATERBODY, // 44
|
||||
GENERATE_WEIGHTS, // 45
|
||||
TOGGLE_CELL_MARKERS, // 46
|
||||
EJECT_GARRISON, // 47
|
||||
ENABLE_CHASE_STATE, // 48
|
||||
ENABLE_STAND_GROUND_STATE, // 49
|
||||
ENABLE_HOLD_FIRE_STATE, // 50
|
||||
HACK, // 51
|
||||
MOVE_CAMERA, // 52
|
||||
Key_Q // 53
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
+100
-7
@@ -1,4 +1,3 @@
|
||||
#include <solUtil.h>
|
||||
#include <soundManager.h>
|
||||
|
||||
#include <quad.h>
|
||||
@@ -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,59 @@ 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<Tooltip::LineData> lines;
|
||||
|
||||
for(int i = 0; i < numLines; i++){
|
||||
vector<pair<int, string>> iconsData;
|
||||
sol::optional<sol::table> 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++){
|
||||
string path = iconsTbl[j + 1]["path"];
|
||||
iconsData.push_back(make_pair(iconsTbl[j + 1]["charId"], path));
|
||||
}
|
||||
}
|
||||
|
||||
sol::table entryTbl = lineDataTbl[i + 1]["entry"];
|
||||
string e = entryTbl["text"];
|
||||
wstring entry = vb01::stringToWstring(e);
|
||||
Vector4 color = Vector4::VEC_IJKL;
|
||||
sol::optional<sol::table> 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<sol::table> 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 +144,15 @@ namespace battleship{
|
||||
bool texturingEnabled = true;
|
||||
}
|
||||
|
||||
Button *button = nullptr;
|
||||
Tooltip *tooltip = nullptr;
|
||||
sol::optional<sol::table> 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 +259,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 +307,23 @@ namespace battleship{
|
||||
}
|
||||
}
|
||||
|
||||
sol::optional<sol::table> 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));
|
||||
|
||||
@@ -372,7 +450,6 @@ namespace battleship{
|
||||
break;
|
||||
case CPU_DIFFICULTIES:
|
||||
case FACTIONS:
|
||||
case COLORS:
|
||||
case TEAMS:
|
||||
numLines = lines.size();
|
||||
closable = true;
|
||||
@@ -380,6 +457,22 @@ namespace battleship{
|
||||
|
||||
listbox = new Listbox(pos, size, lines, maxDisplay, fontPath);
|
||||
break;
|
||||
case COLORS:{
|
||||
numLines = lines.size();
|
||||
closable = true;
|
||||
maxDisplay = (numLines > numMaxDisplay ? numMaxDisplay : numLines);
|
||||
SOL_LUA_STATE.script("colorCodes = generateColorTable(colors, 'code')");
|
||||
sol::table colorCodesTbl = SOL_LUA_STATE["colorCodes"];
|
||||
|
||||
listbox = new Listbox(pos, size, lines, maxDisplay, fontPath);
|
||||
|
||||
for(int i = 0; i < numLines; i++){
|
||||
Vector4 col = Vector4(colorCodesTbl[i + 1]["r"], colorCodesTbl[i + 1]["g"], colorCodesTbl[i + 1]["b"], 1);
|
||||
listbox->getLineText(i)->getMaterial()->setVec4Uniform("diffuseColor", col);
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
case CONSOLE:{
|
||||
for(int i = 0; i < numMaxDisplay; i++)
|
||||
lines.push_back("");
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
#define CONCRETE_GUI_MANAGER_H
|
||||
|
||||
#include <abstractGuiManager.h>
|
||||
#include <solUtil.h>
|
||||
|
||||
#include <string>
|
||||
#include <utility>
|
||||
@@ -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);
|
||||
|
||||
+13
-6
@@ -26,9 +26,9 @@ namespace battleship{
|
||||
|
||||
const static int numAppStates = 5;
|
||||
const static int numStaticBinds[numAppStates]{6, 0, 5, 19, 0};
|
||||
const static int numConfBinds[numAppStates]{0, 1, 27, 0, 0};
|
||||
const static int numConfBinds[numAppStates]{0, 1, 24, 0, 0};
|
||||
const static int maxStaticBinds = 19;
|
||||
const static int maxConfBinds = 23;
|
||||
const static int maxConfBinds = 24;
|
||||
const static int numScripts = 5;
|
||||
|
||||
const static std::string scriptPathBase = "Scripts/";
|
||||
@@ -56,6 +56,7 @@ namespace battleship{
|
||||
"Scripts/Trading/traderData.lua"
|
||||
};
|
||||
|
||||
// Binds that remain the same throughout the lifecycle of a scene/GUI
|
||||
const static Bind staticBinds[numAppStates][maxStaticBinds]{
|
||||
{
|
||||
Bind::LEFT_CLICK,
|
||||
@@ -82,6 +83,7 @@ namespace battleship{
|
||||
},
|
||||
{}
|
||||
};
|
||||
// Binds that change throughout the lifecycle of a scene/GUI
|
||||
const static Bind confBinds[numAppStates][maxConfBinds]{
|
||||
{},
|
||||
{
|
||||
@@ -110,7 +112,8 @@ namespace battleship{
|
||||
Bind::GROUP_8,
|
||||
Bind::GROUP_9,
|
||||
Bind::SELECT_STRUCTURE,
|
||||
Bind::DESELECT_STRUCTURE
|
||||
Bind::DESELECT_STRUCTURE,
|
||||
Bind::Key_Q
|
||||
},
|
||||
{},
|
||||
{}
|
||||
@@ -151,8 +154,10 @@ namespace battleship{
|
||||
GLFW_KEY_LEFT,
|
||||
GLFW_KEY_RIGHT,
|
||||
GLFW_KEY_H,
|
||||
GLFW_KEY_EQUAL, // Changed zoom in to the plus/equal key
|
||||
GLFW_KEY_EQUAL, // Changed zoom in to the plus/equal key
|
||||
GLFW_KEY_MINUS, // Changed zoom out to the minus key
|
||||
// 3,
|
||||
// 4,
|
||||
GLFW_KEY_LEFT_CONTROL,
|
||||
GLFW_KEY_LEFT_SHIFT,
|
||||
GLFW_KEY_P,
|
||||
@@ -169,7 +174,8 @@ namespace battleship{
|
||||
GLFW_KEY_8,
|
||||
GLFW_KEY_9,
|
||||
GLFW_KEY_B,
|
||||
GLFW_KEY_ESCAPE
|
||||
GLFW_KEY_ESCAPE,
|
||||
GLFW_KEY_Q
|
||||
},
|
||||
{},
|
||||
{}
|
||||
@@ -185,7 +191,8 @@ namespace battleship{
|
||||
const static bool isConfKey[numAppStates][maxConfBinds]{
|
||||
{},
|
||||
{1},
|
||||
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
|
||||
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
|
||||
// {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
|
||||
{},
|
||||
{}
|
||||
};
|
||||
|
||||
+1
-1
@@ -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() {}
|
||||
}
|
||||
|
||||
+2
-2
@@ -1,10 +1,10 @@
|
||||
#ifndef DEFAULTS_BUTTON_H
|
||||
#define DEFAULTS_BUTTON_H
|
||||
|
||||
#include <button.h>
|
||||
#include "pfButtonBase.h"
|
||||
|
||||
namespace battleship{
|
||||
class DefaultsButton : public vb01Gui::Button{
|
||||
class DefaultsButton : public PfButtonBase{
|
||||
public:
|
||||
DefaultsButton(vb01::Vector3, vb01::Vector2, std::string);
|
||||
void onClick();
|
||||
|
||||
+1
-1
@@ -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);
|
||||
|
||||
+3
-2
@@ -1,11 +1,12 @@
|
||||
#ifndef EXIT_BUTTON_H
|
||||
#define EXIT_BUTTON_H
|
||||
|
||||
#include <button.h>
|
||||
#include "pfButtonBase.h"
|
||||
|
||||
#include <vector.h>
|
||||
|
||||
namespace battleship {
|
||||
class ExitButton : public vb01Gui::Button {
|
||||
class ExitButton : public PfButtonBase {
|
||||
public:
|
||||
ExitButton(vb01::Vector3, vb01::Vector2);
|
||||
void onClick();
|
||||
|
||||
+1
-1
@@ -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();
|
||||
|
||||
+2
-2
@@ -1,10 +1,10 @@
|
||||
#ifndef EXPORT_BUTTON_H
|
||||
#define EXPORT_BUTTON_H
|
||||
|
||||
#include <button.h>
|
||||
#include "pfButtonBase.h"
|
||||
|
||||
namespace battleship{
|
||||
class ExportButton : public vb01Gui::Button{
|
||||
class ExportButton : public PfButtonBase{
|
||||
public:
|
||||
ExportButton(vb01::Vector3 pos, vb01::Vector2 size);
|
||||
void onClick();
|
||||
|
||||
Vendored
+1
-1
Submodule external/vb01 updated: eb53ad485d...fe201de0fa
@@ -49,7 +49,6 @@ namespace battleship{
|
||||
for(int i = 0; i < getCpuPlayers().size(); i++) {
|
||||
string plStr = "game.cpuPlayers[" + to_string(i + 1) + "]";
|
||||
SOL_LUA_VIEW.script("executeBtNode(" + plStr + ", " + plStr + ".behaviour)");
|
||||
SOL_LUA_VIEW.collect_garbage();
|
||||
}
|
||||
|
||||
int numPlayersWithUnits = 0;
|
||||
|
||||
@@ -265,6 +265,9 @@ namespace battleship{
|
||||
sol::table resTable = SOL_LUA_STATE["graphics"]["resolution"];
|
||||
width = resTable["x"];
|
||||
height = resTable["y"];
|
||||
|
||||
string n = SOL_LUA_STATE["multiplayer"]["name"];
|
||||
mainPlayerName = vb01::stringToWstring(n);
|
||||
}
|
||||
|
||||
void GameManager::start(string gameDir) {
|
||||
|
||||
@@ -23,6 +23,7 @@ namespace battleship{
|
||||
inline int getWidth(){return width;}
|
||||
inline int getHeight(){return height;}
|
||||
inline std::string getPath(){return path;}
|
||||
inline std::wstring getMainPlayerName(){return mainPlayerName;}
|
||||
inline gameBase::InputManager* getInputManager(){return inputManager;}
|
||||
inline bool isServerSide(){return serverSide;}
|
||||
inline bool isRunning(){return running;}
|
||||
@@ -38,6 +39,7 @@ namespace battleship{
|
||||
gameBase::InputManager *inputManager = nullptr;
|
||||
int width, height;
|
||||
std::string path = "";
|
||||
std::wstring mainPlayerName = L"";
|
||||
bool serverSide, running = false;
|
||||
};
|
||||
|
||||
|
||||
+8
-7
@@ -1,6 +1,5 @@
|
||||
#include <algorithm>
|
||||
|
||||
#include <button.h>
|
||||
|
||||
#include <util.h>
|
||||
#include <root.h>
|
||||
@@ -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()));
|
||||
|
||||
+3
-3
@@ -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();
|
||||
|
||||
+5
-2
@@ -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");
|
||||
|
||||
+3
-3
@@ -1,16 +1,16 @@
|
||||
#ifndef LOAD_MAP_BUTTON_H
|
||||
#define LOAD_MAP_BUTTON_H
|
||||
|
||||
#include <button.h>
|
||||
#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();
|
||||
|
||||
+1
-1
@@ -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(){
|
||||
}
|
||||
|
||||
+2
-2
@@ -1,10 +1,10 @@
|
||||
#ifndef MAIN_MENU_BUTTON_H
|
||||
#define MAIN_MENU_BUTTON_H
|
||||
|
||||
#include <button.h>
|
||||
#include "pfButtonBase.h"
|
||||
|
||||
namespace battleship{
|
||||
class MainMenuButton : public vb01Gui::Button{
|
||||
class MainMenuButton : public PfButtonBase{
|
||||
public:
|
||||
MainMenuButton(vb01::Vector3, vb01::Vector2, std::string);
|
||||
void onClick();
|
||||
|
||||
+2
-21
@@ -5,6 +5,7 @@
|
||||
#include "resourceDeposit.h"
|
||||
#include "gameObjectFactory.h"
|
||||
#include "gameObjectFrameController.h"
|
||||
#include "concreteGuiManager.h"
|
||||
#include "player.h"
|
||||
#include "game.h"
|
||||
#include "map.h"
|
||||
@@ -624,8 +625,7 @@ namespace battleship{
|
||||
}
|
||||
|
||||
void MapEditorAppState::update(){
|
||||
radiusText->setText(L"Radius: " + to_wstring(mapEditor->getCircleRadius()));
|
||||
weightsText->setText(L"Weights generated: " + to_wstring(mapEditor->isWeightsGenerated()));
|
||||
ConcreteGuiManager::getSingleton()->getText("radius_")->setText(L"Radius: " + to_wstring(mapEditor->getCircleRadius()));
|
||||
|
||||
CameraController *camCtr = CameraController::getSingleton();
|
||||
|
||||
@@ -641,25 +641,6 @@ namespace battleship{
|
||||
void MapEditorAppState::onAttached(){
|
||||
AbstractAppState::onAttached();
|
||||
mapEditor = new MapEditor(mapName, mapSize, newMap);
|
||||
|
||||
Root *root = Root::getSingleton();
|
||||
Material *mat = new Material(root->getLibPath() + "text");
|
||||
mat->addBoolUniform("texturingEnabled", false);
|
||||
mat->addVec4Uniform("diffuseColor", Vector4::VEC_IJKL);
|
||||
|
||||
string fontPath = GameManager::getSingleton()->getPath() + "Fonts/batang.ttf";
|
||||
radiusText = new Text(fontPath, L"");
|
||||
radiusText->setMaterial(mat);
|
||||
weightsText = new Text(fontPath, L"");
|
||||
weightsText->setMaterial(mat);
|
||||
|
||||
Node *radiusNode = new Node(Vector3(0, 100, 0));
|
||||
radiusNode->addText(radiusText);
|
||||
root->getGuiNode()->attachChild(radiusNode);
|
||||
|
||||
Node *weightsNode = new Node(Vector3(0, 200, 0));
|
||||
weightsNode->addText(weightsText);
|
||||
root->getGuiNode()->attachChild(weightsNode);
|
||||
}
|
||||
|
||||
void MapEditorAppState::onDettached(){}
|
||||
|
||||
@@ -16,7 +16,6 @@
|
||||
namespace vb01{
|
||||
class Texture;
|
||||
}
|
||||
|
||||
namespace battleship{
|
||||
class MapEditor;
|
||||
|
||||
@@ -90,7 +89,6 @@ namespace battleship{
|
||||
std::string mapName;
|
||||
vb01::Vector2 mapSize;
|
||||
bool newMap;
|
||||
vb01::Text *radiusText = nullptr, *weightsText = nullptr;
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
+3
-4
@@ -1,14 +1,13 @@
|
||||
#ifndef MAP_EDITOR_BUTTON_H
|
||||
#define MAP_EDITOR_BUTTON_H
|
||||
|
||||
#include <button.h>
|
||||
|
||||
#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:
|
||||
};
|
||||
|
||||
+7
-6
@@ -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");
|
||||
|
||||
+3
-3
@@ -1,16 +1,16 @@
|
||||
#ifndef NEW_MAP_BUTTON_H
|
||||
#define NEW_MAP_BUTTON_H
|
||||
|
||||
#include <button.h>
|
||||
#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();
|
||||
|
||||
+1
-1
@@ -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(){
|
||||
|
||||
+2
-2
@@ -1,10 +1,10 @@
|
||||
#ifndef OFFER_BUTTON_H
|
||||
#define OFFER_BUTTON_H
|
||||
|
||||
#include <button.h>
|
||||
#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();
|
||||
|
||||
+1
-1
@@ -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() {}
|
||||
}
|
||||
|
||||
+2
-2
@@ -1,10 +1,10 @@
|
||||
#ifndef OK_BUTTON_H
|
||||
#define OK_BUTTON_H
|
||||
|
||||
#include <button.h>
|
||||
#include "pfButtonBase.h"
|
||||
|
||||
namespace battleship{
|
||||
class OkButton : public vb01Gui::Button{
|
||||
class OkButton : public PfButtonBase{
|
||||
public:
|
||||
OkButton(vb01::Vector3, vb01::Vector2, std::string);
|
||||
void onClick();
|
||||
|
||||
+1
-1
@@ -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");
|
||||
|
||||
+2
-3
@@ -1,11 +1,10 @@
|
||||
#pragma once
|
||||
#ifndef OPTIONS_BUTTON_H
|
||||
#define OPTIONS_BUTTON_H
|
||||
|
||||
#include <button.h>
|
||||
#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();
|
||||
|
||||
+1
-1
@@ -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)
|
||||
{}
|
||||
|
||||
|
||||
+2
-2
@@ -1,10 +1,10 @@
|
||||
#ifndef ORDER_BUTTON_H
|
||||
#define ORDER_BUTTON_H
|
||||
|
||||
#include <button.h>
|
||||
#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();
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
#include "pfButtonBase.h"
|
||||
#include "tooltip.h"
|
||||
|
||||
#include <quad.h>
|
||||
#include <node.h>
|
||||
|
||||
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);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
#ifndef PF_BUTTON_BASE_H
|
||||
#define PF_BUTTON_BASE_H
|
||||
|
||||
#include <button.h>
|
||||
|
||||
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
|
||||
+9
-28
@@ -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();
|
||||
@@ -39,38 +39,19 @@ namespace battleship{
|
||||
const int MAIN_PLAYER_ID = (int)generateView()["MAIN_PLAYER_ID"];
|
||||
|
||||
for(int i = 0; i < numPlayers; i++){
|
||||
int faction = factionsListboxes[i]->getSelectedOption();
|
||||
bool cpuPlayer;
|
||||
if(i != MAIN_PLAYER_ID && difficultiesListboxes[i - 1]->getContents()[difficultiesListboxes[i - 1]->getSelectedOption()] == L"None") continue;
|
||||
|
||||
if(factionsListboxes[i]->getContents()[faction] == L"None") continue;
|
||||
wstring factionStr = factionsListboxes[i]->getContents()[factionsListboxes[i]->getSelectedOption()];
|
||||
int faction = (factionStr == L"Random" ? rand() % 3 : factionsListboxes[i]->getSelectedOption() - 1);
|
||||
|
||||
if(MAIN_PLAYER_ID == i)
|
||||
cpuPlayer = false;
|
||||
else{
|
||||
faction--;
|
||||
cpuPlayer = true;
|
||||
}
|
||||
|
||||
string diffStr = (cpuPlayer ? wstringToString(difficultiesListboxes[i]->getContents()[colorsListboxes[i]->getSelectedOption()]) : "");
|
||||
int difficulty = -1;
|
||||
|
||||
if(diffStr == "Easy") difficulty = 0;
|
||||
else if(diffStr == "Medium") difficulty = 1;
|
||||
else if(diffStr == "Hard") difficulty = 2;
|
||||
|
||||
string colorStr = wstringToString(colorsListboxes[i]->getContents()[colorsListboxes[i]->getSelectedOption()]);
|
||||
Vector3 color;
|
||||
|
||||
if(colorStr == "Black") color = Vector3::VEC_ZERO;
|
||||
else if(colorStr == "Red") color = Vector3::VEC_I;
|
||||
else if(colorStr == "Green") color = Vector3::VEC_J;
|
||||
else if(colorStr == "Blue") color = Vector3::VEC_K;
|
||||
else if(colorStr == "White") color = Vector3::VEC_IJK;
|
||||
bool cpuPlayer = (MAIN_PLAYER_ID != i);
|
||||
int difficulty = (cpuPlayer ? difficultiesListboxes[i - 1]->getSelectedOption() : -1);
|
||||
|
||||
Vector4 color = ((Material::Vector4Uniform*)colorsListboxes[i]->getLineText(colorsListboxes[i]->getSelectedOption())->getMaterial()->getUniform("diffuseColor"))->value;
|
||||
int team = stoi(teamsListboxes[i]->getContents()[teamsListboxes[i]->getSelectedOption()]);
|
||||
|
||||
string name = (cpuPlayer ? "CPU player #" + to_string(i) : "Player");
|
||||
game->addPlayer(new Player(difficulty, faction, team, color, cpuPlayer, i, name));
|
||||
|
||||
game->addPlayer(new Player(difficulty, faction, team, Vector3(color.x, color.y, color.z), cpuPlayer, i, name));
|
||||
}
|
||||
|
||||
handleLoadingGui(new LoadingAppState(new InGameAppState(mapName), "inGame.lua"));
|
||||
|
||||
+2
-2
@@ -1,14 +1,14 @@
|
||||
#ifndef PLAY_BUTTON_H
|
||||
#define PLAY_BUTTON_H
|
||||
|
||||
#include <button.h>
|
||||
#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();
|
||||
|
||||
@@ -186,6 +186,8 @@ namespace battleship{
|
||||
projectiles.erase(projectiles.begin() + id);
|
||||
}
|
||||
|
||||
/// @brief Takes the units in the passed vector and pushes them onto the selectedUnits vector for the player if they a garrisonable and not already selected
|
||||
/// @param selUnits
|
||||
void Player::selectUnits(vector<Unit*> selUnits){
|
||||
for(Unit *u : selUnits){
|
||||
bool garrisonable = (!u->isVehicle() || (u->isVehicle() && !((Vehicle*)u)->getGarrisonable()));
|
||||
|
||||
@@ -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];
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
#ifndef RESOURCE_AMMOUNT_BUTTON_H
|
||||
#define RESOURCE_AMMOUNT_BUTTON_H
|
||||
|
||||
#include <button.h>
|
||||
#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();
|
||||
|
||||
+10
-11
@@ -1,8 +1,12 @@
|
||||
#include "singlePlayerButton.h"
|
||||
#include "gameManager.h"
|
||||
#include "concreteGuiManager.h"
|
||||
#include "gameManager.h"
|
||||
#include "tooltip.h"
|
||||
|
||||
#include <listbox.h>
|
||||
#include <quad.h>
|
||||
#include <node.h>
|
||||
#include <text.h>
|
||||
|
||||
#include <glfw3.h>
|
||||
|
||||
@@ -11,21 +15,16 @@ 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::getSingleton()->readLuaScreenScript("singlePlayerMenu.lua");
|
||||
ConcreteGuiManager *guiManager = ConcreteGuiManager::getSingleton();
|
||||
guiManager->readLuaScreenScript("singlePlayerMenu.lua");
|
||||
|
||||
Listbox *listbox = ConcreteGuiManager::getSingleton()->getListboxes()[0];
|
||||
listbox->openUp();
|
||||
listbox->close();
|
||||
|
||||
guiManager->getText("_mainPlayer")->setText(GameManager::getSingleton()->getMainPlayerName());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,16 +3,16 @@
|
||||
|
||||
#include <vector>
|
||||
|
||||
#include <button.h>
|
||||
#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:
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
+2
-2
@@ -1,10 +1,10 @@
|
||||
#ifndef STATE_TOGGLE_BUTTON_H
|
||||
#define STATE_TOGGLE_BUTTON_H
|
||||
|
||||
#include <button.h>
|
||||
#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();
|
||||
|
||||
+2
-2
@@ -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;
|
||||
@@ -43,11 +43,11 @@ namespace battleship{
|
||||
categoryMat->addVec4Uniform("diffuseColor", Vector4(plCol.x, plCol.y, plCol.z, 1));
|
||||
|
||||
Text *categoryVal = new Text(GameManager::getSingleton()->getPath() + "Fonts/" + fontName, unitDataPairs[i].second);
|
||||
categoryVal->setScale(category->getScale());
|
||||
categoryVal->setMaterial(categoryMat);
|
||||
|
||||
Node *categoryValNode = new Node(category->getNode()->getPosition() + Vector3(0, statsInitHeight + statsSpace * playerId, 0));
|
||||
categoryValNode->addText(categoryVal);
|
||||
categoryValNode->setScale(category->getNode()->getScale());
|
||||
root->getGuiNode()->attachChild(categoryValNode);
|
||||
|
||||
guiManager->addText(categoryVal);
|
||||
|
||||
+2
-2
@@ -1,10 +1,10 @@
|
||||
#ifndef STATS_BUTTON_H
|
||||
#define STATS_BUTTON_H
|
||||
|
||||
#include <button.h>
|
||||
#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();
|
||||
|
||||
+1
-1
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
+2
-2
@@ -1,10 +1,10 @@
|
||||
#ifndef TAB_BUTTON_H
|
||||
#define TAB_BUTTON_H
|
||||
|
||||
#include <button.h>
|
||||
#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();
|
||||
|
||||
+67
-2
@@ -1,14 +1,79 @@
|
||||
#include "tooltip.h"
|
||||
#include "gameManager.h"
|
||||
|
||||
#include <root.h>
|
||||
#include <text.h>
|
||||
#include <quad.h>
|
||||
#include <node.h>
|
||||
#include <material.h>
|
||||
#include <texture.h>
|
||||
|
||||
using namespace std;
|
||||
using namespace vb01;
|
||||
|
||||
namespace battleship{
|
||||
Tooltip::Tooltip(Vector2 pos, string entry){
|
||||
this->pos = pos;
|
||||
Tooltip::Tooltip(Vector3 p, Vector2 s, vector<Tooltip::LineData> 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<int, string> &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(){
|
||||
|
||||
@@ -1,16 +1,48 @@
|
||||
#ifndef TOOLTIP_H
|
||||
#define TOOLTIP_H
|
||||
|
||||
#include <text.h>
|
||||
#include <vector.h>
|
||||
|
||||
#include <vector>
|
||||
#include <utility>
|
||||
#include <string>
|
||||
|
||||
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<std::pair<int, std::string>> 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<std::pair<int, std::string>> 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<LineData>, 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;
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
+33
-4
@@ -2,6 +2,10 @@
|
||||
#include "activeGameState.h"
|
||||
#include "player.h"
|
||||
|
||||
#include <quad.h>
|
||||
#include <node.h>
|
||||
#include <text.h>
|
||||
|
||||
#include <stateManager.h>
|
||||
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
+6
-1
@@ -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&);
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
+5
-10
@@ -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);
|
||||
|
||||
@@ -11,6 +11,7 @@ namespace battleship{
|
||||
Trader();
|
||||
void update();
|
||||
void trade(Player*, int, int, bool);
|
||||
int getResourceRate(int);
|
||||
private:
|
||||
void initProperties();
|
||||
|
||||
|
||||
@@ -12,6 +12,8 @@
|
||||
#include <glm.hpp>
|
||||
#include <ext.hpp>
|
||||
|
||||
#include <algorithm>
|
||||
|
||||
#include "unit.h"
|
||||
#include "weapon.h"
|
||||
#include "util.h"
|
||||
@@ -64,6 +66,7 @@ namespace battleship{
|
||||
destroySound();
|
||||
destroyHitbox();
|
||||
destroyModel();
|
||||
removeFromUnitGroup();
|
||||
}
|
||||
|
||||
/// @brief Sets all the unit properties from the Lua table containing the units
|
||||
@@ -189,6 +192,23 @@ namespace battleship{
|
||||
losLightNode = nullptr;
|
||||
}
|
||||
|
||||
/// @brief Check if unit is in a unit group and if so remove it
|
||||
void Unit::removeFromUnitGroup(){
|
||||
ActiveGameState *activeState = (ActiveGameState*)GameManager::getSingleton()->getStateManager()->getAppStateByType(AppStateType::ACTIVE_STATE);
|
||||
std::unordered_map<int, std::vector<Unit*>>& unitGroups = activeState->getUnitGroups();
|
||||
|
||||
// Iterate through all the individual unit groups and see if this unit is in any of them
|
||||
for(auto& [key, value]: unitGroups)
|
||||
{
|
||||
if(std::find(value.begin(), value.end(), this) != value.end())
|
||||
{
|
||||
//std::erase(value, this);
|
||||
value.erase(std::remove(value.begin(), value.end(), this), value.end());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
int Unit::getNumFreeGarrisonSlots(){
|
||||
int numFreeSlots = 0;
|
||||
|
||||
@@ -547,22 +567,8 @@ namespace battleship{
|
||||
|
||||
//TODO select only the closest cells based on unit size
|
||||
void Unit::placeAt(Vector3 p){
|
||||
Map *map = Map::getSingleton();
|
||||
|
||||
if(alignToSurface){
|
||||
vector<RayCaster::CollisionResult> res = map->raycastTerrain(Vector3(p.x, 100, p.z), -Vector3::VEC_J, true);
|
||||
|
||||
if(res.empty() || res[0].mesh->getNode() != map->getNodeParent()->getChild(0))
|
||||
model->lookAt(Vector3(dirVec.x, 0, dirVec.z).norm(), Vector3::VEC_J);
|
||||
else if(res[0].mesh->getNode() == map->getNodeParent()->getChild(0)){
|
||||
float angle = upVec.getAngleBetween(res[0].norm);
|
||||
|
||||
//if(angle > 0)
|
||||
model->lookAt(leftVec.cross(res[0].norm), res[0].norm);
|
||||
}
|
||||
}
|
||||
|
||||
ActiveGameState *activeState = (ActiveGameState*)GameManager::getSingleton()->getStateManager()->getAppStateByType(AppStateType::ACTIVE_STATE);
|
||||
Map *map = Map::getSingleton();
|
||||
|
||||
//check twice in case the unit is warped over a long distance
|
||||
if(activeState) map->blockCells(this);
|
||||
|
||||
@@ -112,6 +112,7 @@ namespace battleship{
|
||||
bool canGarrison(Vehicle*);
|
||||
void initLosLight();
|
||||
void destroyLosLight();
|
||||
void removeFromUnitGroup();
|
||||
int getNumFreeGarrisonSlots();
|
||||
inline void setState(State s){state = s;}
|
||||
inline State getState(){return state;}
|
||||
@@ -152,10 +153,11 @@ namespace battleship{
|
||||
sf::SoundBuffer *selectionSfxBuffer;
|
||||
sf::Sound *selectionSfx = nullptr;
|
||||
vb01::Node *losLightNode = nullptr;
|
||||
bool vehicle, currOrderStarted = false, alignToSurface = false;
|
||||
bool vehicle, currOrderStarted = false;
|
||||
Condition condition = Condition::ABLE;
|
||||
int maxAmmo, ammo;
|
||||
protected:
|
||||
bool alignToSurface = false;
|
||||
UnitType type;
|
||||
UnitClass unitClass;
|
||||
std::vector<Order> orders;
|
||||
|
||||
+1
-1
@@ -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);
|
||||
|
||||
|
||||
+2
-2
@@ -1,12 +1,12 @@
|
||||
#ifndef UNIT_BUTTON_H
|
||||
#define UNIT_BUTTON_H
|
||||
|
||||
#include <button.h>
|
||||
#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:
|
||||
|
||||
+14
-4
@@ -148,12 +148,16 @@ namespace battleship{
|
||||
// y = ax + b
|
||||
float a = hypVec.z / hypVec.x;
|
||||
float b = pos.z - a * pos.x;
|
||||
Vector3 c1 = terrQuad->getSubquadCorner(sqIds[0], sqIds[1], numVertDiv, numHorDiv, true, false); //top left
|
||||
Vector3 c2 = terrQuad->getSubquadCorner(sqIds[0], sqIds[1], numVertDiv, numHorDiv, true, true); //top right
|
||||
Vector3 c3 = terrQuad->getSubquadCorner(sqIds[0], sqIds[1], numVertDiv, numHorDiv, false, false); //bottom left
|
||||
Vector3 c4 = terrQuad->getSubquadCorner(sqIds[0], sqIds[1], numVertDiv, numHorDiv, false, true); //bottom right
|
||||
|
||||
while(!(sqIds[0] == (int)sqIdsEndVec.x && sqIds[1] == (int)sqIdsEndVec.y)){
|
||||
Vector3 c1 = terrQuad->getSubquadCorner(sqIds[0], sqIds[1], numVertDiv, numHorDiv, true, false); //top left
|
||||
Vector3 c2 = terrQuad->getSubquadCorner(sqIds[0], sqIds[1], numVertDiv, numHorDiv, true, true); //top right
|
||||
Vector3 c3 = terrQuad->getSubquadCorner(sqIds[0], sqIds[1], numVertDiv, numHorDiv, false, false); //bottom left
|
||||
Vector3 c4 = terrQuad->getSubquadCorner(sqIds[0], sqIds[1], numVertDiv, numHorDiv, false, true); //bottom right
|
||||
c1 = terrQuad->getSubquadCorner(sqIds[0], sqIds[1], numVertDiv, numHorDiv, true, false); //top left
|
||||
c2 = terrQuad->getSubquadCorner(sqIds[0], sqIds[1], numVertDiv, numHorDiv, true, true); //top right
|
||||
c3 = terrQuad->getSubquadCorner(sqIds[0], sqIds[1], numVertDiv, numHorDiv, false, false); //bottom left
|
||||
c4 = terrQuad->getSubquadCorner(sqIds[0], sqIds[1], numVertDiv, numHorDiv, false, true); //bottom right
|
||||
|
||||
float minX = c1.x, maxX = c2.x, minY = c1.z, maxY = c3.z;
|
||||
bool bottom = (hypVec.z > 0), left = (hypVec.x < 0);
|
||||
@@ -208,6 +212,12 @@ namespace battleship{
|
||||
|
||||
placeAt(endPos);
|
||||
|
||||
if(alignToSurface){
|
||||
Vector3 normal = (c3 - c1).norm().cross((c2 - c1).norm());
|
||||
float angle = upVec.getAngleBetween(normal);
|
||||
model->lookAt(leftVec.cross(normal), normal);
|
||||
}
|
||||
|
||||
if(fabs(pathPoints[0].x - pos.x) <= destOffset && fabs(pathPoints[0].z - pos.z) <= destOffset)
|
||||
arrivedAtPathpoint(false);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user