diff --git a/client/levels/lobby/lobby.tscn b/client/levels/lobby/lobby.tscn index 13812ca8933b0511dd3ffe8f597c5c1df3e1550a..bc51a1cd2c003bfad2170bd2bd33d7ea5c3ff0a6 100644 --- a/client/levels/lobby/lobby.tscn +++ b/client/levels/lobby/lobby.tscn @@ -5,6 +5,10 @@ [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 4209e3a26a417c6ba05fce97ef707fbcba1611c3..75a680441385c0d2bb8f011cc89c704e1e1fd9f6 100644 --- a/client/levels/test/game.gd +++ b/client/levels/test/game.gd @@ -1,7 +1,8 @@ extends Node var movementInput:int = 0 -var jumpInput:bool = false + +var jumpId:int = 0 var sprintInput:bool = false func _physics_process(delta): @@ -15,10 +16,8 @@ func getPlayerInput(): if Input.is_action_pressed("movementRight"): movementInput += 1 - if Input.is_action_pressed("movementJump"): - jumpInput = true - else: - jumpInput = false + if Input.is_action_just_pressed("movementJump"): + jumpId += 1 if Input.is_action_pressed("movementSprint"): sprintInput = true @@ -26,4 +25,4 @@ func getPlayerInput(): sprintInput = false # Sent without safety resend - rpc_unreliable_id(1, "sendPlayerInputs", movementInput, sprintInput, jumpInput) \ No newline at end of file + rpc_unreliable_id(1, "sendPlayerInputs", movementInput, sprintInput, jumpId) \ No newline at end of file diff --git a/server/entities/characters/player.gd b/server/entities/characters/player.gd index 81c4de8b356f8bb82335532f571476870a933551..9f833da1348ab2c0d6d4e39f02e5c227c39f1bb1 100644 --- a/server/entities/characters/player.gd +++ b/server/entities/characters/player.gd @@ -18,27 +18,50 @@ var isJumping:bool = false const GRAVITY:float = -28.0 # Velocity updated continuously by move_and_slide -var vel:Vector3 = Vector3() +var vel:Vector3 = Vector3(0,0,0) # move_and_slide need that const FLOOR_NORMAL:Vector3 = Vector3(0,1,0) +# Character informations +var damages:int = 0 + +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 + + # called by the engine func _physics_process(delta): processMovement(delta) broadcastMovement(delta) + # Called from the game script to update the vars -func getPlayerInputs(movementInput, sprintInput, jumpInput): +func getPlayerInputs(movementInput, sprintInput, jumpId): + if lastJumpId != jumpId: + lastJumpId = jumpId + isJumping = true + else: + isJumping = false + motion = movementInput isSprinting = sprintInput - isJumping = jumpInput - + + func processMovement(delta): + # reset max_jump if self.is_on_floor(): - if isJumping: - vel.y = JUMP_SPEED + currentJump = 0 + + if isJumping: + if currentJump < maxJump: + currentJump += 1 + vel.y = JUMP_SPEED - delta*GRAVITY # Consider the gravity vel.y += delta * GRAVITY diff --git a/server/entities/characters/player.tscn b/server/entities/characters/player.tscn index f8eba0f84dfa127ea1d68f3212c6c8c71bccb0c1..83b08840edd3ca8a7c8209020665e93abf5eec88 100644 --- a/server/entities/characters/player.tscn +++ b/server/entities/characters/player.tscn @@ -1,8 +1,6 @@ [gd_scene load_steps=3 format=2] -[ext_resource path="res://entities/characters/player.gd" type="Script" id=1] - - +[ext_resource path="res://entities/characters/Class1/class1.gd" type="Script" id=1] [sub_resource type="BoxShape" id=1] extents = Vector3( 0.175, 0.275, 0.7 ) diff --git a/server/levels/test/game.gd b/server/levels/test/game.gd index 6eb3b6b507fb47c8c88b09fae370d9a167995521..2605dfc2dbce99397aa89fc5b5d55b17c961138a 100644 --- a/server/levels/test/game.gd +++ b/server/levels/test/game.gd @@ -1,7 +1,7 @@ extends Node -master func sendPlayerInputs(movementInput, jumpInput, sprintInput): +master func sendPlayerInputs(movementInput, sprintInput, jumpId): # 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) \ No newline at end of file + gamestate.get_node("/root/game/"+str(senderId)).getPlayerInputs(movementInput, sprintInput, jumpId) \ No newline at end of file