aboutsummaryrefslogtreecommitdiff
path: root/assets/scripts/local2P.lua
diff options
context:
space:
mode:
Diffstat (limited to 'assets/scripts/local2P.lua')
-rw-r--r--assets/scripts/local2P.lua66
1 files changed, 50 insertions, 16 deletions
diff --git a/assets/scripts/local2P.lua b/assets/scripts/local2P.lua
index df20f61..c8e0aa5 100644
--- a/assets/scripts/local2P.lua
+++ b/assets/scripts/local2P.lua
@@ -1,10 +1,24 @@
---@diagnostic disable: undefined-global
-jumpMultiplier = 7
+
+function SafeInitCharacter(character, default_x, default_y)
+ character.x = character.x or default_x
+ character.y = character.y or default_y
+ character.y_velocity = character.y_velocity or 1
+ character.current_sprite = character.asset_dir .. "/sprites/idle.png"
+end
+
+function Setup()
+ SafeInitCharacter(player1Character, 250, 250)
+ SafeInitCharacter(player2Character, WIDTH - 250 - (250 / 2), 250)
+end
+
+gravity = 1.2 -- POSITIVE gravity
+floor_y = HEIGHT - 250
function HandleP1Input()
- if Input.isKeyPressedOnce("W") then
- player1Character.y = player1Character.y - player1Character.speed * jumpMultiplier;
+ if Input.isKeyPressedOnce("W") and player1Character.y == floor_y then
+ player1Character.y_velocity = player1Character.jump_strength * -1.0;
end
if Input.isKeyDown("D") then
player1Character.x = player1Character.x + player1Character.speed;
@@ -15,8 +29,8 @@ function HandleP1Input()
end
function HandleP2Input()
- if Input.isKeyPressedOnce("UP") then
- player2Character.y = player2Character.y - player2Character.speed * jumpMultiplier;
+ if Input.isKeyPressedOnce("UP") and player2Character.y == floor_y then
+ player2Character.y_velocity = player2Character.jump_strength * -1.0;
end
if Input.isKeyDown("RIGHT") then
player2Character.x = player2Character.x + player2Character.speed;
@@ -26,20 +40,40 @@ function HandleP2Input()
end
end
-function Setup()
- player1Character.x = 250;
- player2Character.x = WIDTH - 250 - (250 / 2)
- player1Character.y = 250;
- player2Character.y = 250;
+function Update()
+ -- P1 physics
+ player1Character.y_velocity = player1Character.y_velocity + gravity
+ player1Character.y = player1Character.y + player1Character.y_velocity
- player1Character.current_sprite = player1Character.asset_dir .. "/sprites/idle.png"
- player2Character.current_sprite = player2Character.asset_dir .. "/sprites/idle.png"
-end
+ if player1Character.y > floor_y then
+ player1Character.y = floor_y
+ player1Character.y_velocity = 0
+ end
+
+ -- P2 physics
+ player2Character.y_velocity = player2Character.y_velocity + gravity
+ player2Character.y = player2Character.y + player2Character.y_velocity
+
+ if player2Character.y > floor_y then
+ player2Character.y = floor_y
+ player2Character.y_velocity = 0
+ end
+
+ -- Render
+ queueTextureForRender(
+ player1Character.current_sprite,
+ math.floor(player1Character.x),
+ math.floor(player1Character.y)
+ )
+
+ queueTextureForRender(
+ player2Character.current_sprite,
+ math.floor(player2Character.x),
+ math.floor(player2Character.y)
+ )
-function Update()
- queueTextureForRender(player1Character.current_sprite, player1Character.x, player1Character.y)
- queueTextureForRender(player2Character.current_sprite, player2Character.x, player2Character.y)
+ -- Input
HandleP1Input()
HandleP2Input()
end