From 366761197034a20d444282431e4a8edeb7882840 Mon Sep 17 00:00:00 2001 From: Anson Bridges Date: Wed, 7 Sep 2022 14:16:17 -0400 Subject: whoops, fixed reorg --- scripts/characters/player_controller_new.gd | 272 ---------------------------- 1 file changed, 272 deletions(-) delete mode 100644 scripts/characters/player_controller_new.gd (limited to 'scripts/characters/player_controller_new.gd') diff --git a/scripts/characters/player_controller_new.gd b/scripts/characters/player_controller_new.gd deleted file mode 100644 index f58c689..0000000 --- a/scripts/characters/player_controller_new.gd +++ /dev/null @@ -1,272 +0,0 @@ -extends RigidBody - -# Game -export var team = "RED" -export (int) var health = 100 -var weapon = null -var world - -# Camera -export(float) var mouse_sensitivity = 12.0 -export(float) var FOV = 90.0 -var mouse_axis := Vector2() -onready var head: Spatial = $Head -onready var cam: Camera = $Head/Camera - -# Move -var velocity := Vector3() -var direction := Vector3() -var move_axis := Vector2() -var floorspeed := Vector3() -var jumping = false -onready var nav = $NavigationAgent - -# Walk -const FLOOR_MAX_ANGLE: float = deg2rad(46.0) -export(float) var jump_height = 400.0 -var in_water : bool = false -var swim_speed : float = 400.0 - -# Control -var controlling_machine = false #whether character is riding/controlling something -var machine = null -export var is_player = false #whether character is currently controlled by a player -var should_move = false - -#physics -var player_state : PhysicsDirectBodyState -var is_on_floor:bool -export(float) var acceleration = 80.0 -export(int) var walk_speed = 6 -export(float) var c_friction = 4.0 -export(float) var _airspeed_cap = 1.0 -export(float) var air_control = 1.0 - -# Called when the node enters the scene tree -func _ready() -> void: - weapon = preload("res://scenes/weapons/w_Rockets.tscn").instance() - add_child(weapon) - world = get_tree().get_root().get_node("GAMEWORLD") - if is_player: - cam.current = true - - $Head/Camera/UseRay.add_exception(self) - $Head/Camera/MeleeRay.add_exception(self) - $Head/Camera/UseRay.add_exception($AreaDetect) - $Head/Camera/MeleeRay.add_exception($AreaDetect) - Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED) - cam.fov = FOV - -func get_init_info(): - return {"linear_velocity" : linear_velocity, "angular_velocity" : angular_velocity, "controlling_machine" : controlling_machine, "team" : team, "health" : health, "nametag" : $Nametag.text} - -func mp_init(init_info): - for variable in init_info.keys(): - set(variable, init_info[variable]) - $Nametag.text = init_info["nametag"] - -remote func set_phys_transform(trfrm, lvel): - transform = trfrm - linear_velocity = lvel - -# Called every frame. 'delta' is the elapsed time since the previous frame -func _process(_delta: float) -> void: - if is_player and !world.is_chatting: - if Input.is_action_just_pressed("use"): - initiate_use() - - if controlling_machine: - if Input.is_action_just_pressed("fire"): - machine.attack1() - if Input.is_action_just_pressed("fire2"): - machine.attack2() - machine.direction_input(Input.get_action_strength("move_forward"),Input.get_action_strength("move_backward"), Input.get_action_strength("move_right"),Input.get_action_strength("move_left"), Input.get_action_strength("alt_right"),Input.get_action_strength("alt_left")) - else: - jumping = Input.get_action_strength("move_jump") - if Input.is_action_just_pressed("fire"): - weapon.attack1() - move_axis.x = Input.get_action_strength("move_forward") - Input.get_action_strength("move_backward") - move_axis.y = Input.get_action_strength("move_right") - Input.get_action_strength("move_left") - - -func initiate_use(): - if controlling_machine: - machine.relinquish_control() - return - if $Head/Camera/UseRay.is_colliding(): - var area_c = $Head/Camera/UseRay.get_collider() - match area_c.name: - "SteerArea": - world.rpc_id(1, "_call_on_server", "_client_request_control_vehicle", {"id" : world.client_id, "machine" : area_c.get_parent().name, "char_name" : name}) - #controlling_machine = true - #machine = $Head/Camera/UseRay.get_collider().get_parent().take_control(self) - #var gt = global_transform.origin - #velocity = Vector3.ZERO - #global_transform.origin = gt - "LadderArea": - pass - _: - pass - -remotesync func set_net_owner(owner_id): - $Nametag.text = "" - set_network_master(owner_id) - if owner_id != 1: - $Nametag.text = world.players_info[owner_id][0] - if get_tree().get_network_unique_id() != 1: - if owner_id == world.client_id: - $Nametag.visible = false - world.player_char = self - is_player = true - cam.current = true - else: - $Nametag.visible = true - cam.current = false - is_player = false - world.get_node("HUD").update_characters() - -func deselect_character(): - if is_network_master(): - world.player_char = null - world.get_node("DEFAULTCAM").current = true - rpc("set_net_owner", 1) - -func take_control_of_machine(slave_machine): - machine = slave_machine - controlling_machine = true - -func lose_machine(): - if is_player: - cam.current = true - controlling_machine = false - machine = null - -# Called every physics tick. 'delta' is constant -func _physics_process(delta: float) -> void: - if is_network_master(): - if !on_floor_test() and in_water: - swim(delta) - else: - walk(delta) - rpc("set_phys_transform", transform, linear_velocity) - is_on_floor = false #reset whether is on floor in between frames - -# called each physics frame -func on_floor_test() -> bool: - if $Feet.is_colliding(): - is_on_floor = true - floorspeed = $Feet.get_collider().get_linear_velocity() if $Feet.get_collider().has_method("get_linear_velocity") else Vector3.ZERO - return true - if player_state: - for i in range(player_state.get_contact_count()): - var contact_angle_from_up : float = Vector3.UP.angle_to(player_state.get_contact_local_normal(i)) - if contact_angle_from_up < FLOOR_MAX_ANGLE: - is_on_floor = true - return true - return false - -#modify simulated physics results -func _integrate_forces(state) -> void: - player_state = state - velocity = state.get_linear_velocity() - if should_move: - nav.set_velocity(velocity) - if nav.is_target_reached(): - should_move = false - -# on input event -func _input(event: InputEvent) -> void: - if is_player: - if event is InputEventMouseMotion: - mouse_axis = event.relative - camera_rotation() - -func walk(_delta:float) -> void: - # Input - direction = Vector3() - var aim: Basis = head.get_global_transform().basis - direction += -move_axis.x * aim.z + move_axis.y * aim.x - if !is_player and should_move: - direction = nav.get_next_location() - global_transform.origin - if nav.get_next_location().y - global_transform.origin.y > 0.05 and is_on_floor: - apply_central_impulse(Vector3.UP*jump_height) - direction.y = 0 - direction = direction.normalized() - - # Jump - if is_on_floor and is_player: - if jumping: - apply_central_impulse(Vector3.UP*jump_height) - - #max walk speed - var _speed = walk_speed - var _temp_accel: float = acceleration - var _cspeed = sqrt(pow(velocity.x-floorspeed.x,2)+pow(velocity.z-floorspeed.z,2)) - - if not is_on_floor: - _temp_accel *= air_control - - var projVel = Vector2(velocity.x-floorspeed.x,velocity.z-floorspeed.z).dot(Vector2(direction.x,direction.z)) - - if is_on_floor: - if _speed - _cspeed > 0: - add_central_force (mass*Vector3(direction.x*_temp_accel, 0, direction.z*_temp_accel))#velocity.x += direction.x*_temp_accel - else: - add_central_force(mass*Vector3(direction.x*(_speed-projVel), 0, direction.z*(_speed-projVel))) - elif _airspeed_cap - projVel > 0: - add_central_force (mass*Vector3(direction.x*_temp_accel, 0, direction.z*_temp_accel)) - -func swim(_delta): - #drag and buoyancy - add_central_force(Vector3.UP*weight*1.0) - add_central_force(-1*linear_velocity*75) - #controls - var dir: Basis = cam.get_global_transform().basis - var m_dir: Vector3 = -move_axis.x * dir.z + move_axis.y * dir.x - m_dir = m_dir.normalized() - add_central_force(swim_speed*m_dir) - if jumping: - add_central_force(Vector3.UP*weight*0.5) - -func enter_water(): - in_water = true - -func exit_water(): - in_water = false - -remotesync func damage(dmg_amt, type, shooter, extra = ""): - health -= dmg_amt - if health <= 0 and is_network_master(): - if shooter[0] != get_network_master(): world.rpc_id(shooter[0], "game_killsound") - if get_network_master() == 1: - world._call_on_server("_character_death", {"killer_id" : shooter[0], "killer" : shooter[1], "victim_mp_id" : get_network_master(), "victim" : name, "extra" : extra}) - else: - world.rpc_id(1, "_call_on_server", "_character_death", {"killer_id" : shooter[0], "killer" : shooter[1], "victim_mp_id" : get_network_master(), "victim" : name, "extra" : extra}) - elif is_network_master(): - if shooter[0] != get_network_master(): world.rpc_id(shooter[0], "game_hitsound") - -remotesync func remove_dead_character(): - if is_network_master() and machine != null: - machine.relinquish_control() - deselect_character() - queue_free() - -func camera_rotation() -> void: - if Input.get_mouse_mode() != Input.MOUSE_MODE_CAPTURED: - return - if mouse_axis.length() > 0: - var horizontal: float = -mouse_axis.x * (mouse_sensitivity / 100) - var vertical: float = -mouse_axis.y * (mouse_sensitivity / 100) - - mouse_axis = Vector2() - - head.rotate_y(deg2rad(horizontal)) - cam.rotate_x(deg2rad(vertical)) - - # Clamp mouse rotation - var temp_rot: Vector3 = cam.rotation_degrees - temp_rot.x = clamp(temp_rot.x, -90, 90) - cam.rotation_degrees = temp_rot - -remotesync func net_apply_impulse(impulse_v): - apply_central_impulse(impulse_v) -- cgit v1.2.3