From f4caebe58b445556a1a38db7532ce1c866e3c7f3 Mon Sep 17 00:00:00 2001
From: Canopteks <thomas.duhamel@protonmail.com>
Date: Wed, 26 Feb 2020 15:26:45 +0100
Subject: [PATCH] post-merge fixin (multi-jumps)

---
 client/levels/lobby/lobby.tscn       |  4 ----
 client/levels/test/game.gd           |  8 +++++---
 server/entities/characters/player.gd | 24 +++++++++++-------------
 server/levels/test/game.gd           |  5 ++---
 4 files changed, 18 insertions(+), 23 deletions(-)

diff --git a/client/levels/lobby/lobby.tscn b/client/levels/lobby/lobby.tscn
index bc51a1c..13812ca 100644
--- a/client/levels/lobby/lobby.tscn
+++ b/client/levels/lobby/lobby.tscn
@@ -5,10 +5,6 @@
 [node name="lobby" type="Control"]
 anchor_right = 1.0
 anchor_bottom = 1.0
-margin_left = -1.0
-margin_top = 1.0
-margin_right = -1.0
-margin_bottom = 1.0
 script = ExtResource( 1 )
 
 [node name="menu" type="Panel" parent="."]
diff --git a/client/levels/test/game.gd b/client/levels/test/game.gd
index 27c3788..11debb2 100644
--- a/client/levels/test/game.gd
+++ b/client/levels/test/game.gd
@@ -3,7 +3,7 @@ extends Node
 # Movements
 var movementInput:int = 0
 
-var jumpId:int = 0
+var jumpInput:bool = false
 var sprintInput:bool = false
 
 # Attacks
@@ -22,7 +22,9 @@ func getPlayerInput():
 		movementInput += 1
 
 	if Input.is_action_just_pressed("movementJump"):
-		jumpId += 1
+		jumpInput = true
+	else:
+		jumpInput = false
 
 	if Input.is_action_pressed("movementSprint"):
 		sprintInput = true
@@ -36,4 +38,4 @@ func getPlayerInput():
 		attackStateInput = SECONDARY
 
 	# Sent without safety resend
-	rpc_unreliable_id(1, "sendPlayerInputs", movementInput, sprintInput, jumpInput, attackStateInput)
+	rpc_unreliable_id(1, "sendPlayerInputs", movementInput, jumpInput, sprintInput, attackStateInput)
diff --git a/server/entities/characters/player.gd b/server/entities/characters/player.gd
index 92eb7a1..66adea8 100644
--- a/server/entities/characters/player.gd
+++ b/server/entities/characters/player.gd
@@ -28,7 +28,6 @@ var vel:Vector3 = Vector3(0,0,0)
 # move_and_slide need that
 const FLOOR_NORMAL:Vector3 = Vector3(0, 1, 0)
 
-
 ######### ATTACKS VARS ########
 
 var isAttacking:bool = false
@@ -50,11 +49,10 @@ var secondaryAttackDist:float = 1.2
 var secondaryAttackDuration:float = 0.3
 
 # Character informations
-var damages:int = 0
+var damages:int = 30.0
 
-var maxJump:int = 2         # Maximum number of jump that a character can do
+var maxJump:int = 2        # Maximum number of jump that a character can do
 var currentJump:int = 0     # Actual number of jump
-var lastJumpId:int = 0      # Detect a new jump
 
 var lastPunchId:int = 0     # Detect a new punch (of any type)
 var idleTime:float = 0      # Stun when hitted + prevent spam
@@ -67,18 +65,16 @@ func _physics_process(delta):
 	broadcastMovement()
 
 # Called from the game script to update the vars
-func getPlayerInputs(movementInput, sprintInput, jumpInput, attackTypeInput):
+func getPlayerInputs(movementInput, jumpInput, sprintInput, attackTypeInput):
 	motion = 0
 
-	# Check if the character isn't already attacking
-	if isAttacking:
-		return
-
 	motion = movementInput
 	isSprinting = sprintInput
-	isJumping = jumpInput
+	
+	isJumping = jumpInput && !isJumping
 
-	if attackTypeInput != NONE:
+	# Check if the character isn't already attacking
+	if attackTypeInput!=NONE && !isAttacking:
 		processAttack(attackTypeInput)
 
 func processMovement(delta):
@@ -89,12 +85,14 @@ func processMovement(delta):
 		set_rotation_degrees(Vector3(0, 180, 0))
 
 	if self.is_on_floor():
-		currentJump = 0
+		currentJump = 1
 
 	if isJumping:
+		isJumping = false
 		if currentJump < maxJump:
+			print(currentJump)
 			currentJump += 1
-			vel.y = JUMP_SPEED - delta*GRAVITY
+			vel.y = JUMP_SPEED
 
 	# Consider the gravity
 	vel.y += delta * GRAVITY
diff --git a/server/levels/test/game.gd b/server/levels/test/game.gd
index 06d87b5..efd4c50 100644
--- a/server/levels/test/game.gd
+++ b/server/levels/test/game.gd
@@ -1,8 +1,7 @@
 extends Node
 
-master func sendPlayerInputs(movementInput, jumpInput, sprintInput, attackStateInput):
+master func sendPlayerInputs(movementInput, jumpId, sprintInput, attackStateInput):
 	
 	# Get the input from a client and send it to the matchig remote player
 	var senderId = get_tree().get_rpc_sender_id()
-	gamestate.get_node("/root/game/"+str(senderId)).getPlayerInputs(movementInput, jumpInput, sprintInput, attackStateInput)
-
+	gamestate.get_node("/root/game/"+str(senderId)).getPlayerInputs(movementInput, jumpId, sprintInput, attackStateInput)
-- 
GitLab