master
chendian 2 years ago
parent 071009d59a
commit 2ac3292e49

@ -139,6 +139,11 @@ flash={
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194325,"key_label":0,"unicode":0,"echo":false,"script":null)
]
}
lock={
"deadzone": 0.5,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":76,"key_label":0,"unicode":108,"echo":false,"script":null)
]
}
[memory]

File diff suppressed because one or more lines are too long

@ -21,6 +21,7 @@ unique_name_in_owner = true
script = ExtResource("3_n07go")
[node name="PlayerAction" type="Node3D" parent="." index="10"]
unique_name_in_owner = true
script = ExtResource("5_gum7v")
[node name="PlayerInfo" type="Node3D" parent="." index="11"]

@ -6,7 +6,7 @@
[ext_resource type="Script" path="res://script/ui/hud/headbar_page.gd" id="3_6chl0"]
[ext_resource type="Script" path="res://script/ui/hud/loading_page.gd" id="4_jqajt"]
[ext_resource type="Texture2D" uid="uid://xogtpwyb862f" path="res://resource/ui/hud/_hud_design.png" id="5_qqrb8"]
[ext_resource type="Script" path="res://script/ui/hud/lock.gd" id="5_usy8x"]
[ext_resource type="Script" path="res://script/ui/hud/lock_item.gd" id="5_usy8x"]
[ext_resource type="Texture2D" uid="uid://dx2vp753yvh4y" path="res://render/texture/shape/lock.png" id="6_hmslt"]
[sub_resource type="Animation" id="Animation_ikdwl"]
@ -103,13 +103,14 @@ texture_progress = ExtResource("2_sktwb")
[node name="LockItem" type="Control" parent="HudPage"]
anchors_preset = 0
offset_right = 40.0
offset_bottom = 40.0
offset_left = 424.0
offset_top = 232.0
offset_right = 464.0
offset_bottom = 272.0
scale = Vector2(0.5, 0.5)
script = ExtResource("5_usy8x")
[node name="Lock" type="Sprite2D" parent="HudPage/LockItem"]
position = Vector2(656, 320)
texture = ExtResource("6_hmslt")
[node name="AnimationPlayer" type="AnimationPlayer" parent="HudPage/LockItem"]

@ -1,9 +1,7 @@
extends SubViewportContainer
func _ready():
var basic_size = Vector2(640,360)
var scale_y = cos(deg_to_rad(45.0)) * 2.0 #1.414
var sample_rate = 3.0
size = basic_size * sample_rate
scale = Vector2(1,scale_y) / sample_rate
position.y = - (scale_y - 1.0) * 0.5 / sample_rate * size.y
var camera = Global.camera_mgr as CameraManager
size = camera.stage_size
scale = camera.stage_scale
position.y = - camera.stage_offset_y

@ -2,5 +2,5 @@ extends Action
func run(character: Character) -> int:
var player_id = Global.character_mgr.get_player_id()
character.set_status("target",player_id)
character.set_target(player_id)
return SUCCESS

@ -88,3 +88,4 @@ func add_attack(from:int,dir:Vector2,attack:AttackCfg):battle.add_attack(from,di
func show_hit_text(value:String):SignalManager.character_hit_text.emit(id(),value)
func show_hit_damage(value:float):SignalManager.character_hit_damage.emit(id(),value)
func add_mp(value:float):battle.add_mp(value)
func set_target(target:int):set_status("target",target);SignalManager.character_target_changed.emit(id(),target)

@ -4,12 +4,20 @@ class_name PlayerAction
@onready var character = (get_owner() as Character)
@onready var status = (%Status as Status)
func lock(is_lock:bool):
func check_action(key:String,is_pressed:bool) -> bool:
match key:
"lock":lock(is_pressed)
_:return false
return true
func lock(is_pressed:bool):
var has_target = status.target != 0
if is_lock:
if is_pressed == has_target:
return
if is_pressed:
var enemy_list = Global.character_mgr.get_enemy_list(character.id())
if enemy_list:
pass
character.set_target(enemy_list[0].id())
else:
status.set_status("target",0)
character.set_target(0)

@ -8,12 +8,3 @@ func _process(delta):
if Global.is_level_loading_contorl:
return
MetSys.set_player_position(character.pos2D())
func lock(is_lock:bool):
var has_target = status.target != 0
if is_lock:
var enemy_list = Global.character_mgr.get_enemy_list(character.id())
if enemy_list
else:
status.set_status("target",0)

@ -3,25 +3,25 @@ class_name PlayerInput
@onready var status = (%Status as Status)
@onready var combo = (%Combo as Combo)
@onready var action = (%PlayerAction as PlayerAction)
var action_map = {}
func _ready():
SignalManager.connect("input_action_pressed",on_input_action_pressed)
SignalManager.connect("input_action_pressed",on_input_action_released)
SignalManager.connect("input_action_released",on_input_action_released)
SignalManager.connect("input_action_move",on_input_action_move)
func on_input_action_pressed(event:InputEvent):
for action_name in InputMap.get_actions():
if event.is_action(action_name):
func on_input_action_pressed(action_name:String):
if not action_name in action_map:
action_map[action_name] = true
if not action.check_action(action_name,true):
combo.add_input_action(action_name)
func on_input_action_released(event:InputEvent):
for action_name in InputMap.get_actions():
if event.is_action(action_name):
func on_input_action_released(action_name:String):
if action_name in action_map:
action_map.erase(action_name)
action.check_action(action_name,false)
func on_input_action_move(input_dir):
status.input_dir = input_dir

@ -8,7 +8,15 @@ var target_pos_now:Vector2 = Vector2.ZERO
var level_size:Vector2
var offset:float = 5
var camera_limit = Vector3(6.4,1.04,3.6) #x,up,z-downd
var screen_pos_scale = Vector2(3,1.5/cos(deg_to_rad(45.0)))
var basic_size = Vector2(640,360)
var scale_y = cos(deg_to_rad(45.0)) * 2.0 #1.414
var sample_rate = 3.0
var stage_size = basic_size * sample_rate
var stage_scale = Vector2(1,scale_y) / sample_rate
var stage_offset_y = (scale_y - 1.0) * 0.5 / sample_rate * stage_size.y
var screen_pos_scale = Vector2(sample_rate,sample_rate/scale_y)
var screen_pos_offset = Vector2(0,-stage_offset_y)
func _ready():
Global.camera_mgr = self
@ -66,5 +74,7 @@ func get_screen_pos(pos:Vector3) -> Vector2:
var ret = unproject_position(pos)
ret.x /= screen_pos_scale.x
ret.y /= screen_pos_scale.y
ret.x += screen_pos_offset.x
ret.y += screen_pos_offset.y
return ret

@ -3,9 +3,10 @@ extends Node3D
func _input(event):
if !event.is_action_type():
return
if event.is_pressed():
SignalManager.input_action_pressed.emit(event)
elif event.is_released():
SignalManager.input_action_released.emit(event)
for action_name in InputMap.get_actions():
if event.is_action_pressed(action_name):
SignalManager.input_action_pressed.emit(action_name)
elif event.is_action_released(action_name):
SignalManager.input_action_released.emit(action_name)
var input_dir = Input.get_vector("move_left", "move_right", "move_up", "move_down")
SignalManager.input_action_move.emit(input_dir)

@ -3,7 +3,7 @@ extends Node3D
#input
signal input_action_pressed
signal input_action_released
signal input_action_move(Vector2)
signal input_action_move
#effect
signal effect_create
@ -13,6 +13,7 @@ signal character_create
signal character_die
signal character_destroy
signal character_pos_changed
signal character_target_changed
signal character_hit_floor
signal character_ui_pos_changed
signal character_status_changed

@ -8,15 +8,21 @@ var target_id : int
func _ready():
SignalManager.character_ui_pos_changed.connect(on_character_ui_pos_changed)
SignalManager.character_target_changed.connect(on_character_target_changed)
animation.play("rotate")
func on_level_loading_start():
animation.play("start")
func on_level_loading_end():
animation.play("end")
func on_character_ui_pos_changed(id:int,pos:Vector3):
if id != target_id:
return
position = camera.get_screen_pos(pos)
func on_character_target_changed(id:int,target:int):
if id != Global.character_mgr.get_player_id():
return
var character_target = Global.character_mgr.get_character(target)
target_id = target
if not character_target:
visible = false
return
visible = true
position = camera.get_screen_pos(character_target.ui_pos())
Loading…
Cancel
Save