[zero-k] r6472 committed - unit_attributes.lua: localization, optimization and beautification

0 views
Skip to first unread message

zer...@googlecode.com

unread,
May 10, 2012, 2:49:26 AM5/10/12
to zero-k-...@googlegroups.com
Revision: 6472
Author: rafal_...@o2.pl
Date: Wed May 9 23:49:13 2012
Log: unit_attributes.lua: localization, optimization and beautification
http://code.google.com/p/zero-k/source/detail?r=6472

Modified:
/trunk/mods/zk/LuaRules/Gadgets/unit_attributes.lua
/trunk/mods/zk/LuaRules/Gadgets/unit_capture.lua

=======================================
--- /trunk/mods/zk/LuaRules/Gadgets/unit_attributes.lua Thu Apr 26 21:25:19
2012
+++ /trunk/mods/zk/LuaRules/Gadgets/unit_attributes.lua Wed May 9 23:49:13
2012
@@ -25,18 +25,28 @@


--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
-local spGetUnitDefID = Spring.GetUnitDefID
-local spGetUnitRulesParam = Spring.GetUnitRulesParam
-
+local floor = math.floor
+
+local spValidUnitID = Spring.ValidUnitID
+local spGetUnitDefID = Spring.GetUnitDefID
+local spGetGameFrame = Spring.GetGameFrame
+local spGetUnitRulesParam = Spring.GetUnitRulesParam
+
+local spSetUnitBuildSpeed = Spring.SetUnitBuildSpeed
local spSetUnitWeaponState = Spring.SetUnitWeaponState
local spGetUnitWeaponState = Spring.GetUnitWeaponState

+local spMoveCtrlGetTag = Spring.MoveCtrl.GetTag
+local spSetAirMoveTypeData = Spring.MoveCtrl.SetAirMoveTypeData
+local spSetGunshipMoveTypeData = Spring.MoveCtrl.SetGunshipMoveTypeData
+local spSetGroundMoveTypeData = Spring.MoveCtrl.SetGroundMoveTypeData
+

--------------------------------------------------------------------------------

--------------------------------------------------------------------------------

-origUnitSpeed = {}
-origUnitReload = {}
-origUnitBuildSpeed = {}
+local origUnitSpeed = {}
+local origUnitReload = {}
+local origUnitBuildSpeed = {}

if not GG.attUnits then
GG.attUnits = {}
@@ -62,7 +72,7 @@

local state = origUnitBuildSpeed[unitID]

- Spring.SetUnitBuildSpeed(unitID,
+ spSetUnitBuildSpeed(unitID,
state.buildSpeed*speedFactor, -- build
state.buildSpeed*speedFactor, -- repair
state.buildSpeed*speedFactor, -- reclaim
@@ -81,14 +91,15 @@
local state = origUnitReload[unitID]

for i = 0, state.weaponCount do
- local reload = WeaponDefs[ud.weapons[i+1].weaponDef].reload
+ local wd = WeaponDefs[ud.weapons[i+1].weaponDef]
+ local reload = wd.reload
state.weapon[i] = {
reload = reload,
prevReload = reload,
- burstRate = WeaponDefs[ud.weapons[i+1].weaponDef].salvoDelay,
- oldReloadFrames = math.floor(reload*30),
- }
- if WeaponDefs[ud.weapons[i+1].weaponDef].type == "BeamLaser" then
+ burstRate = wd.salvoDelay,
+ oldReloadFrames = floor(reload*30),
+ }
+ if wd.type == "BeamLaser" then
state.weapon[i].burstRate = false -- beamlasers go screwy if you mess
with their burst length
end
end
@@ -105,23 +116,21 @@
local newReload = 100000 -- set a high reload time so healthbars don't
judder. NOTE: math.huge is TOO LARGE
if reloadState < 0 then -- unit is already reloaded, so set unit to
almost reloaded
spSetUnitWeaponState(unitID, i, {reloadTime = newReload, reloadState =
gameFrame+UPDATE_PERIOD+1})
- w.prevReload = newReload
else
local nextReload =
gameFrame+(reloadState-gameFrame)*newReload/reloadTime
spSetUnitWeaponState(unitID, i, {reloadTime = newReload, reloadState =
nextReload+UPDATE_PERIOD})
- w.prevReload = newReload
end
+ w.prevReload = newReload
-- add UPDATE_PERIOD so that the reload time never advances past what
it is now
else
local newReload = w.reload/speedFactor
local nextReload =
gameFrame+(reloadState-gameFrame)*newReload/reloadTime
if w.burstRate then
spSetUnitWeaponState(unitID, i, {reloadTime = newReload, reloadState =
nextReload, burstRate = w.burstRate/speedFactor})
- w.prevReload = newReload
else
spSetUnitWeaponState(unitID, i, {reloadTime = newReload, reloadState =
nextReload})
- w.prevReload = newReload
end
+ w.prevReload = newReload
end
end

@@ -161,22 +170,28 @@
decFactor = 100000 -- a unit with 0 decRate will not deccelerate down to
it's 0 maxVelocity
end

- if Spring.MoveCtrl.GetTag(unitID) == nil then
+ if spMoveCtrlGetTag(unitID) == nil then
if state.movetype == 0 then
- Spring.MoveCtrl.SetAirMoveTypeData(unitID, {maxSpeed =
state.origSpeed*speedFactor})
- Spring.MoveCtrl.SetAirMoveTypeData (unitID, {maxAcc =
state.origMaxAcc*(speedFactor > 0.001 and speedFactor or 0.001)})
+ spSetAirMoveTypeData (unitID, {
+ maxSpeed = state.origSpeed *speedFactor,
+ maxAcc = state.origMaxAcc *(speedFactor > 0.001 and
speedFactor or 0.001)
+ })
elseif state.movetype == 1 then
- Spring.MoveCtrl.SetGunshipMoveTypeData (unitID, {maxSpeed =
state.origSpeed*speedFactor})
- --Spring.MoveCtrl.SetGunshipMoveTypeData (unitID, {maxSpeed =
state.origReverseSpeed*speedFactor})
- Spring.MoveCtrl.SetGunshipMoveTypeData (unitID, {turnRate =
state.origTurnRate*speedFactor})
- Spring.MoveCtrl.SetGunshipMoveTypeData (unitID, {accRate =
state.origMaxAcc*(speedFactor > 0.001 and speedFactor or 0.001)})
- --Spring.MoveCtrl.SetGunshipMoveTypeData (unitID, {decRate =
state.origMaxDec*(speedFactor > 0.01 and speedFactor or 0.01)})
+ spSetGunshipMoveTypeData (unitID, {
+ maxSpeed = state.origSpeed *speedFactor,
+ --maxReverseSpeed = state.origReverseSpeed*speedFactor,
+ turnRate = state.origTurnRate *speedFactor,
+ accRate = state.origMaxAcc *(speedFactor > 0.001 and
speedFactor or 0.001),
+ --decRate = state.origMaxDec *(speedFactor > 0.01 and
speedFactor or 0.01)
+ })
elseif state.movetype == 2 then
- Spring.MoveCtrl.SetGroundMoveTypeData(unitID, {maxSpeed =
state.origSpeed*speedFactor})
- --Spring.MoveCtrl.SetGroundMoveTypeData (unitID, {maxSpeed =
state.origReverseSpeed*speedFactor})
- Spring.MoveCtrl.SetGroundMoveTypeData (unitID, {turnRate =
state.origTurnRate*speedFactor})
- Spring.MoveCtrl.SetGroundMoveTypeData (unitID, {accRate =
state.origMaxAcc*speedFactor})
- Spring.MoveCtrl.SetGroundMoveTypeData (unitID, {decRate =
state.origMaxDec*decFactor})
+ spSetGroundMoveTypeData (unitID, {
+ maxSpeed = state.origSpeed *speedFactor,
+ --maxReverseSpeed = state.origReverseSpeed*speedFactor,
+ turnRate = state.origTurnRate *speedFactor,
+ accRate = state.origMaxAcc *speedFactor,
+ decRate = state.origMaxDec *decFactor
+ })
end
end

@@ -189,7 +204,7 @@
end

function GG.UpdateUnitAttributes(unitID, frame)
- if not Spring.ValidUnitID(unitID) then
+ if not spValidUnitID(unitID) then
removeUnit(unitID)
end

@@ -198,7 +213,7 @@
return
end

- frame = frame or Spring.GetGameFrame()
+ frame = frame or spGetGameFrame()

local ud = UnitDefs[udid]
local changedAtt = false
@@ -207,15 +222,16 @@
local selfReloadSpeedChange =
spGetUnitRulesParam(unitID,"selfReloadSpeedChange")

-- Unit speed change (like sprint) --
- local selfMoveSpeedChange =
Spring.GetUnitRulesParam(unitID, "selfMoveSpeedChange")
+ local selfMoveSpeedChange =
spGetUnitRulesParam(unitID, "selfMoveSpeedChange")

-- SLOW --
local slowState = spGetUnitRulesParam(unitID,"slowState")

if selfReloadSpeedChange or selfMoveSpeedChange or slowState then
- local buildMult = (1-(slowState or 0))
- local moveMult = (1-(slowState or 0))*(selfMoveSpeedChange or 1)
- local reloadMult = (1-(slowState or 0))*(selfReloadSpeedChange or 1)
+ local slowMult = 1-(slowState or 0)
+ local buildMult = (slowMult)
+ local moveMult = (slowMult)*(selfMoveSpeedChange or 1)
+ local reloadMult = (slowMult)*(selfReloadSpeedChange or 1)

GG.att_reload[unitID] = reloadMult

=======================================
--- /trunk/mods/zk/LuaRules/Gadgets/unit_capture.lua Sun Apr 8 06:05:45
2012
+++ /trunk/mods/zk/LuaRules/Gadgets/unit_capture.lua Wed May 9 23:49:13
2012
@@ -248,10 +248,11 @@

-- reload handling
if controllers[attackerID].postCaptureReload then
- local frame = spGetGameFrame() +
controllers[attackerID].postCaptureReload
+ local gameFrame = spGetGameFrame()
+ local frame = gameFrame + controllers[attackerID].postCaptureReload
spSetUnitRulesParam(attackerID, "selfReloadSpeedChange", 0, {inlos =
true})
spSetUnitRulesParam(attackerID, "captureRechargeFrame", frame, {inlos =
true})
- GG.UpdateUnitAttributes(attackerID)
+ GG.UpdateUnitAttributes(attackerID, gameFrame)
reloading[frame] = reloading[frame] or {count = 0, data = {}}
reloading[frame].count = reloading[frame].count + 1
reloading[frame].data[reloading[frame].count] = attackerID
@@ -324,7 +325,7 @@
local unitID = reloading[f].data[i]
spSetUnitRulesParam(unitID, "selfReloadSpeedChange",1, {inlos = true})
spSetUnitRulesParam(unitID, "captureRechargeFrame", 0, {inlos = true})
- GG.UpdateUnitAttributes(unitID)
+ GG.UpdateUnitAttributes(unitID, f)
end
reloading[f] = nil
end
@@ -424,8 +425,8 @@

-- load active units
for _, unitID in ipairs(Spring.GetAllUnits()) do
- local unitDefID = Spring.GetUnitDefID(unitID)
- local teamID = Spring.GetUnitTeam(unitID)
+ local unitDefID = spGetUnitDefID(unitID)
+ local teamID = spGetUnitTeam(unitID)
gadget:UnitCreated(unitID, unitDefID, teamID)
end

Reply all
Reply to author
Forward
0 new messages