--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/share/hedgewars/Data/Scripts/Multiplayer/Tumbler.lua Mon Jan 24 23:48:44 2011 +0200
@@ -0,0 +1,285 @@
+-- enable awesome translaction support so we can use loc() wherever we want
+loadfile(GetDataPath() .. "Scripts/Locale.lua")()
+
+local moveTimer = 0
+local leftOn = false
+local rightOn = false
+local upOn = false
+local downOn = false
+
+local shotsMax = 10
+local shotsLeft = 50
+
+local TimeLeftCounter = 0
+local TimeLeft = 30--000
+local stopMovement = false
+local tumbleStarted = false
+
+------------------------
+
+function GetSpeed()
+
+ dx, dy = GetGearVelocity(CurrentHedgehog)
+
+ x = dx*dx
+ y = dy*dy
+ z = x+y
+
+ z = z*100
+
+ k = z%1
+
+ if k ~= 0 then
+ z = z - k
+ end
+
+ return(z)
+
+end
+
+function onGameInit()
+ --Theme = "Hell"
+end
+
+
+function onGameStart()
+ ShowMission(loc("TUMBLER"), "a Hedgewars mini-game", "- Use the arrow keys to move|- Use [enter] and [backspace] to fire", 4, 4000)
+end
+
+function onHJump()
+ if (shotsLeft > 0) and (CurrentHedgehog ~= nil) and (stopMovement == false) and (tumbleStarted == true) then -- seems to not work with a hedgehog nil chek
+ shotsLeft = shotsLeft - 1
+ AddGear(GetX(CurrentHedgehog), GetY(CurrentHedgehog), gtMortar, 0, 0, 0, 1)
+ AddCaption(loc("Shots Left: ") .. shotsLeft)
+ end
+end
+
+function onLJump()
+ if (shotsLeft > 0) and (CurrentHedgehog ~= nil) and (stopMovement == false) and (tumbleStarted == true) then -- seems to not work with a hedgehog nil chek
+
+ dx, dy = GetGearVelocity(CurrentHedgehog)
+
+ --boosts in the direction you're already going
+ --[[if dx >= 0 then
+ x = -15
+ elseif dx < 0 then
+ x = 15
+ end
+
+ if dy >= 0 then
+ y = -15
+ elseif dy < 0 then
+ y = 15
+ end]]
+
+
+ -- this repositions where the explosions are going to appear
+ -- based on the users INTENDED (keypress) direction
+ -- thus allowing to boost yourself or change direction with
+ -- a blast
+
+ -- naturally, it's also an anti-hog weapon
+
+ x = 0
+ y = 0
+
+ if leftOn == true then
+ x = x + 15
+ end
+ if rightOn == true then
+ x = x - 15
+ end
+
+ if upOn == true then
+ y = y + 15
+ end
+ if downOn == true then
+ y = y - 15
+ end
+
+
+ shotsLeft = shotsLeft - 1
+ AddGear((GetX(CurrentHedgehog) + x), (GetY(CurrentHedgehog) + y), gtGrenade, 0, 0, 0, 1)
+ AddCaption(loc("Shots Left: ") .. shotsLeft)
+
+ end
+end
+
+function onLeft()
+ if (CurrentHedgehog ~= nil) and (stopMovement == false) then
+ leftOn = true
+ end
+end
+
+function onRight()
+ if (CurrentHedgehog ~= nil) and (stopMovement == false) then
+ rightOn = true
+ end
+end
+
+function onUp()
+ if (CurrentHedgehog ~= nil) and (stopMovement == false) then
+ upOn = true
+ end
+end
+
+function onDown()
+ if (CurrentHedgehog ~= nil) and (stopMovement == false) then
+ downOn = true
+ end
+end
+
+function onDownUp()
+ downOn = false
+end
+function onUpUp()
+ upOn = false
+end
+function onLeftUp()
+ leftOn = false
+end
+function onRightUp()
+ rightOn = false
+end
+
+function onNewTurn()
+ shotsLeft = shotsMax
+ stopMovement = false
+ tumbleStarted = false
+ --SetInputMask(band(0xFFFFFFFF, bnot(gmAnimate+gmAttack+gmDown+gmHJump+gmLeft+gmLJump+gmPrecise+gmRight+gmSlot+gmSwitch+gmTimer+gmUp+gmWeapon)))
+ --AddGear(GetX(CurrentHedgehog), GetY(CurrentHedgehog), gtGrenade, 0, 0, 0, 1)
+end
+
+function onGameTick()
+
+ -- start the player tumbling with a boom once their turn has actually begun
+ if tumbleStarted == false then
+ if (TurnTimeLeft > 0) and (TurnTimeLeft ~= TurnTime) then
+ AddCaption("Good to go!")
+ tumbleStarted = true
+ TimeLeft = 45
+ AddGear(GetX(CurrentHedgehog), GetY(CurrentHedgehog), gtGrenade, 0, 0, 0, 1)
+ end
+ end
+
+ if (CurrentHedgehog ~= nil) and (tumbleStarted == true) then
+
+ --AddCaption(loc("Speed: ") .. GetSpeed())
+
+ -- Calculate and display turn time
+ TimeLeftCounter = TimeLeftCounter + 1
+ if TimeLeftCounter == 1000 then
+ TimeLeftCounter = 0
+ TimeLeft = TimeLeft - 1
+
+ if TimeLeft >= 0 then
+ --TurnTimeLeft = TimeLeft
+ AddCaption(loc("Time Left: ") .. TimeLeft)
+ end
+
+ end
+
+ --if TimeLeft >= 0 then
+ -- --TurnTimeLeft = TimeLeft
+ -- AddCaption(loc("Time Left: ") .. TimeLeft)
+ --end
+
+ --ShowMission(loc("TUMBLER"), loc("v0.2"), loc("Speed: ") .. GetSpeed() .. "|" .. loc("Ammo: ") .. shotsLeft, 4, 0)
+
+ if TimeLeft == 0 then
+ stopMovement = true
+ upOn = false
+ down = false
+ leftOn = false
+ rightOn = false
+ end
+
+
+
+
+ -- handle movement based on IO
+ moveTimer = moveTimer + 1
+ if moveTimer == 100 then -- 100
+ moveTimer = 0
+
+ dx, dy = GetGearVelocity(CurrentHedgehog)
+
+ dxlimit = 0.4
+ dylimit = 0.4
+
+ if dx > dxlimit then
+ dx = dxlimit
+ end
+ if dy > dylimit then
+ dy = dylimit
+ end
+ if dx < -dxlimit then
+ dx = -dxlimit
+ end
+ if dy < -dylimit then
+ dy = -dylimit
+ end
+
+
+ if leftOn == true then
+ dx = dx - 0.1
+ end
+ if rightOn == true then
+ dx = dx + 0.1
+ end
+
+ if upOn == true then
+ dy = dy - 0.1
+ end
+ if downOn == true then
+ dy = dy + 0.1
+ end
+
+ --if leftOn == true then
+ -- dx = dx - 0.04
+ --end
+ --if rightOn == true then
+ -- dx = dx + 0.04
+ --end
+
+ --if upOn == true then
+ -- dy = dy - 0.1
+ --end
+ --if downOn == true then
+ -- dy = dy + 0.06
+ --end
+
+ SetGearVelocity(CurrentHedgehog, dx, dy)
+
+ end
+
+
+
+
+
+
+
+ end
+
+
+
+end
+
+
+function onGearDamage(gear, damage)
+ if gear == CurrentHedgehog then
+ -- You are now tumbling
+ end
+end
+
+
+function onGearAdd(gear)
+end
+
+function onGearDelete(gear)
+
+ if CurrentHedgehog ~= nil then
+ FollowGear(CurrentHedgehog)
+ end
+
+end