diff options
Diffstat (limited to 'Units/Unit.gd')
-rw-r--r-- | Units/Unit.gd | 70 |
1 files changed, 31 insertions, 39 deletions
diff --git a/Units/Unit.gd b/Units/Unit.gd index b575e01..d42e65b 100644 --- a/Units/Unit.gd +++ b/Units/Unit.gd @@ -56,9 +56,11 @@ var roaming_mode = false # rpc owner id @export var owner_id = 1 -@export var base_speed: float = 100 -@export var speed: float = base_speed -@export var hp = 50 : +@export var unit_resource: UnitResource + +var base_speed: float = 100 +var speed: float = base_speed +var hp = 50 : set = set_hp @onready var line: Line2D = $UnitPathLine.duplicate() @@ -75,6 +77,12 @@ func _init(): func _ready(): + # setup with data from UnitResource + sprite.sprite_frames = unit_resource.sprite_frames + sprite.scale = unit_resource.sprite_scale + base_speed = unit_resource.speed + hp = unit_resource.hp + base_speed *= scale.x speed = base_speed @@ -102,7 +110,8 @@ func _ready(): %HPBar.init(hp) set_hp(hp) - $SelectionArea/CollisionShape2D.shape.size = $Sprite2D.texture.get_size() * $Sprite2D.scale + var sprite_texture: Texture2D = sprite.sprite_frames.get_frame_texture("down", 0) + $SelectionArea/CollisionShape2D.shape.size = sprite_texture.get_size() func _physics_process(delta): @@ -140,7 +149,7 @@ func _physics_process(delta): func _draw(): if is_selected: draw_circle( - $Sprite2D.position, + sprite.position, Client.current_stage.map.tile_set.tile_size.x * 0.75, Color(1, 1, 1, 0.75), false, @@ -149,7 +158,7 @@ func _draw(): modulate = Color(1.5, 1.5, 1.5) elif is_hovered: draw_circle( - $Sprite2D.position, + sprite.position, Client.current_stage.map.tile_set.tile_size.x * 0.75, Color(1, 1, 1, 0.5), false, @@ -189,28 +198,26 @@ func walk_along_path(path: PackedVector2Array, index: int, delta: float): # todo: because the velocity expects ??to each the point??, so it stutters if velocity.x > 0 and velocity.y == 0: - $AnimatedSprite2D.play("right") + sprite.play("right") elif velocity.x < 0 and velocity.y == 0: - $AnimatedSprite2D.play("left") + sprite.play("left") elif velocity.x == 0 and velocity.y > 0: - $AnimatedSprite2D.play("down") + sprite.play("down") elif velocity.x == 0 and velocity.y < 0: - $AnimatedSprite2D.play("up") + sprite.play("up") elif velocity.x > 0 and velocity.y > 0: - $AnimatedSprite2D.play("down_right") + sprite.play("down_right") elif velocity.x > 0 and velocity.y < 0: - $AnimatedSprite2D.play("up_right") + sprite.play("up_right") elif velocity.x < 0 and velocity.y > 0: - $AnimatedSprite2D.play("down_left") + sprite.play("down_left") elif velocity.x < 0 and velocity.y < 0: - $AnimatedSprite2D.play("up_left") + sprite.play("up_left") move_and_slide() func set_hp(value): - # TODO: rpc on damage - hp = value if get_node("%HPBar"): @@ -232,7 +239,7 @@ func get_effects(): func add_effect(effect: Effect): var node = get_node_or_null(NodePath(effect.name)) as Effect - if node: + if node and not node.is_stackable: node.set_duration(node.duration) else: add_child(effect) @@ -317,12 +324,10 @@ class NetworkData extends Resource: var base_speed: float var speed: float - var texture_path: String var sprite_frames_path: String - var sprite_modulate: Color - var sprite_self_modulate: Color - var sprite_animation: StringName - var sprite_frame: int + + var unit_resource: UnitResource + func to_network_data() -> NetworkData: var data = NetworkData.new() @@ -339,27 +344,15 @@ func to_network_data() -> NetworkData: data.base_speed = base_speed data.speed = speed - #data.texture_path = sprite.texture.resource_path data.sprite_frames_path = sprite.sprite_frames.resource_path - #data.sprite_modulate = sprite.modulate - #data.sprite_self_modulate = sprite.self_modulate - #data.sprite_animation = sprite.animation - #data.sprite_frame = sprite.frame + + data.unit_resource = unit_resource return data func update_with_network_data(_data: NetworkData): pass - #position = data.position - - #hp = data.hp - - #speed = data.speed - - #sprite.self_modulate = data.sprite_self_modulate - #data.sprite_animation = sprite.animation - #data.sprite_frame = sprite.frame static func from_network_data(data: NetworkData) -> Unit: @@ -370,7 +363,6 @@ static func from_network_data(data: NetworkData) -> Unit: unit.global_position = data.position - #unit.target = unit.get_tree().current_scene.get_node(data.target_path) unit.target_path = data.target_path unit.hp = data.hp @@ -378,8 +370,8 @@ static func from_network_data(data: NetworkData) -> Unit: unit.base_speed = data.base_speed unit.speed = data.speed - #unit.sprite.texture = load(data.texture_path) unit.sprite.sprite_frames = load(data.sprite_frames_path) - #unit.sprite.modulate = data.sprite_modulate + + unit.unit_resource = data.unit_resource return unit |