share/hedgewars/Data/Scripts/Multiplayer/Tumbler.lua
changeset 4872 6b2fb9f0054a
child 5325 261b79ba22b1
--- /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