fix manager环引用问题 取消manager注入

master
chendian 2 years ago
parent a3985ef818
commit dd257a1ef0

@ -0,0 +1,14 @@
[gd_resource type="Resource" script_class="AttackCfg" load_steps=2 format=3 uid="uid://bwbr746sj06er"]
[ext_resource type="Script" path="res://script/config/attack_cfg.gd" id="1_2fwsa"]
[resource]
script = ExtResource("1_2fwsa")
damage_rate = 1.0
break_level = 0
hit_back_speed = 4.0
hit_back_duration = 0.05
hit_up_speed = 4.0
hit_up_duration = 0.05
pause_time = 0.1
is_floating = true

@ -0,0 +1,14 @@
[gd_resource type="Resource" script_class="AttackCfg" load_steps=2 format=3 uid="uid://r7fg0y1bf815"]
[ext_resource type="Script" path="res://script/config/attack_cfg.gd" id="1_csh3t"]
[resource]
script = ExtResource("1_csh3t")
damage_rate = 1.0
break_level = 0
hit_back_speed = 4.0
hit_back_duration = 0.05
hit_up_speed = 4.0
hit_up_duration = 0.05
pause_time = 0.1
is_floating = true

@ -33,6 +33,7 @@ aseprite_executable_path="D:/Steam/steamapps/common/Aseprite/Aseprite.exe"
InputManager="*res://script/manager/input_manager.gd" InputManager="*res://script/manager/input_manager.gd"
SignalManager="*res://script/manager/signal_manager.gd" SignalManager="*res://script/manager/signal_manager.gd"
ResourceManager="*res://script/manager/resource_manager.gd"
Setting="*res://script/_global/setting.gd" Setting="*res://script/_global/setting.gd"
Enum="*res://script/_global/enum.gd" Enum="*res://script/_global/enum.gd"
Util="*res://script/_global/util.gd" Util="*res://script/_global/util.gd"

@ -6,3 +6,5 @@
render_priority = 0 render_priority = 0
shader = ExtResource("1_ja5hr") shader = ExtResource("1_ja5hr")
shader_parameter/flash_white = null shader_parameter/flash_white = null
shader_parameter/deformation_dir = Vector2(1, 0)
shader_parameter/deformation_rate = 0.0

@ -6,10 +6,10 @@
[node name="Character" instance=ExtResource("1_pot50")] [node name="Character" instance=ExtResource("1_pot50")]
[node name="Combo" type="Node3D" parent="." index="7"]
unique_name_in_owner = true
script = ExtResource("2_i44w8")
[node name="PlayerInput" type="Node3D" parent="." index="8"] [node name="PlayerInput" type="Node3D" parent="." index="8"]
unique_name_in_owner = true unique_name_in_owner = true
script = ExtResource("3_n07go") script = ExtResource("3_n07go")
[node name="Combo" type="Node3D" parent="." index="9"]
unique_name_in_owner = true
script = ExtResource("2_i44w8")

@ -4,8 +4,8 @@
[ext_resource type="ArrayMesh" uid="uid://cap7t5iwpjpi2" path="res://resource/level/levelground0000.vox" id="1_u51ir"] [ext_resource type="ArrayMesh" uid="uid://cap7t5iwpjpi2" path="res://resource/level/levelground0000.vox" id="1_u51ir"]
[ext_resource type="Resource" uid="uid://bjvrih37ni5nx" path="res://config/character/hero01.tres" id="2_m8pa4"] [ext_resource type="Resource" uid="uid://bjvrih37ni5nx" path="res://config/character/hero01.tres" id="2_m8pa4"]
[ext_resource type="Resource" uid="uid://dmfh54jffhx28" path="res://config/character/monster02.tres" id="3_t5dvy"] [ext_resource type="Resource" uid="uid://dmfh54jffhx28" path="res://config/character/monster02.tres" id="3_t5dvy"]
[ext_resource type="Script" path="res://script/manager/CameraManager.gd" id="4_22ccm"]
[ext_resource type="Script" path="res://script/manager/character_manager.gd" id="4_oonkb"] [ext_resource type="Script" path="res://script/manager/character_manager.gd" id="4_oonkb"]
[ext_resource type="Script" path="res://script/manager/camera_manager.gd" id="4_yqiun"]
[ext_resource type="Script" path="res://script/editor_tool/editor_tool.gd" id="5_n3qhi"] [ext_resource type="Script" path="res://script/editor_tool/editor_tool.gd" id="5_n3qhi"]
[ext_resource type="PackedScene" uid="uid://cc525u8auypjf" path="res://scene/ui/profile_screen.tscn" id="6_u1fxn"] [ext_resource type="PackedScene" uid="uid://cc525u8auypjf" path="res://scene/ui/profile_screen.tscn" id="6_u1fxn"]
[ext_resource type="PackedScene" uid="uid://126wph4owvoy" path="res://scene/ui/hud_screen.tscn" id="7_gx646"] [ext_resource type="PackedScene" uid="uid://126wph4owvoy" path="res://scene/ui/hud_screen.tscn" id="7_gx646"]
@ -29,7 +29,7 @@ current = true
size = 5.0 size = 5.0
frustum_offset = Vector2(2, 0) frustum_offset = Vector2(2, 0)
far = 20.0 far = 20.0
script = ExtResource("4_22ccm") script = ExtResource("4_yqiun")
[node name="LevelManager" type="Node3D" parent="GameManager"] [node name="LevelManager" type="Node3D" parent="GameManager"]

@ -1,3 +1,4 @@
extends Node3D extends Node3D
var camera:CameraManager var camera_mgr:CameraManager
var character_mgr:CharacterManager

@ -23,7 +23,7 @@ func attack():
if attack_index >= len(attack_list): if attack_index >= len(attack_list):
attack_index = len(attack_list) - 1 attack_index = len(attack_list) - 1
var attack = attack_list[attack_index] var attack = attack_list[attack_index]
var enemy_list = character.manager().get_enemy_list(character.id()) var enemy_list = Global.character_mgr.get_enemy_list(character.id())
for enemy in enemy_list: for enemy in enemy_list:
var pos_dir = enemy.pos2D()-character.pos2D() var pos_dir = enemy.pos2D()-character.pos2D()
var distance = pos_dir.length() var distance = pos_dir.length()
@ -36,14 +36,22 @@ func attack():
hit_info.attack = attack hit_info.attack = attack
hit_info_list.append(hit_info) hit_info_list.append(hit_info)
func add_attack(from:int,dir:Vector3,attack:AttackCfg):
var hit_info = HitInfo.new()
hit_info.from = from
hit_info.to = character.id()
hit_info.dir = dir
hit_info.attack = attack
hit_info_list.append(hit_info)
func _process(delta): func _process(delta):
for hit_info in hit_info_list: for hit_info in hit_info_list:
settle(hit_info) settle(hit_info)
hit_info_list.clear() hit_info_list.clear()
func settle(hit_info:HitInfo): func settle(hit_info:HitInfo):
var character_from = character.manager().get_character(hit_info.from) as Character var character_from = Global.character_mgr.get_character(hit_info.from) as Character
var character_to = character.manager().get_character(hit_info.to) as Character var character_to = Global.character_mgr.get_character(hit_info.to) as Character
if !character_from or !character_to: if !character_from or !character_to:
return return
@ -82,5 +90,5 @@ func settle(hit_info:HitInfo):
character_to.add_buff("deformation",0.1) character_to.add_buff("deformation",0.1)
#卡帧 #卡帧
character_from.add_buff("pause",0.1) character_from.add_buff("pause",attack.pause_time)
character_to.add_buff("pause",0.1) character_to.add_buff("pause",attack.pause_time)

@ -63,8 +63,11 @@ func on_start_jumping(rate):status.is_jumping = true
func on_end_jumping(rate):status.is_jumping = false func on_end_jumping(rate):status.is_jumping = false
func on_start_floating(rate):status.is_floating = true func on_start_floating(rate):status.is_floating = true
func on_update_floating(rate): func on_update_floating(rate):
if status.is_on_floor: if not status.is_on_floor:
#反弹 return
if has_buff("hit_down"):
pass
else:
status.is_floating=false status.is_floating=false
#战斗状态 #战斗状态

@ -6,18 +6,14 @@ class_name Character
@onready var view = (%View as View) @onready var view = (%View as View)
@onready var buff = (%Buff as Buff) @onready var buff = (%Buff as Buff)
@onready var skill = (%Skill as Skill) @onready var skill = (%Skill as Skill)
@onready var battle = (%Battle as Battle)
var character_manager : CharacterManager func init(id:int,cfg:CharacterCfg,team:Enum.ETeam):
func init(mgr:CharacterManager,id:int,cfg:CharacterCfg,team:Enum.ETeam):
character_manager = mgr
status.id = id status.id = id
status.team = team status.team = team
status.cfg = cfg status.cfg = cfg
#view
var half_height = Setting.pixel_size * Setting.sprite_scale * cfg.sprite_harf_height var half_height = Setting.pixel_size * Setting.sprite_scale * cfg.sprite_harf_height
var width = Setting.pixel_size * Setting.sprite_scale * cfg.sprite_width var width = Setting.pixel_size * Setting.sprite_scale * cfg.sprite_width
collision.position = Vector3(0,half_height,0) collision.position = Vector3(0,half_height,0)
collision.scale = Vector3(width,half_height*2,width) collision.scale = Vector3(width,half_height*2,width)
status.basic_offset = Vector3(0,half_height,0) status.basic_offset = Vector3(0,half_height,0)
@ -26,7 +22,6 @@ func init(mgr:CharacterManager,id:int,cfg:CharacterCfg,team:Enum.ETeam):
skill.init() skill.init()
func init_after(): func init_after():
#battle
var cfg = status.cfg var cfg = status.cfg
set_status("hp",cfg.hp_max) set_status("hp",cfg.hp_max)
set_status("hp_max",cfg.hp_max) set_status("hp_max",cfg.hp_max)
@ -37,7 +32,6 @@ func set_material(material:ShaderMaterial):
view.material_override = material view.material_override = material
#==getter== #==getter==
func manager()->CharacterManager:return character_manager
func id()->int:return status.id func id()->int:return status.id
func team()->Enum.ETeam:return status.team func team()->Enum.ETeam:return status.team
func pos2D()->Vector2:return Vector2(position.x,position.z) func pos2D()->Vector2:return Vector2(position.x,position.z)
@ -56,3 +50,4 @@ func set_hit_move(hit_back_dir:Vector2,hit_back_speed:float,hit_up_speed:float):
status.hit_up_speed = hit_up_speed status.hit_up_speed = hit_up_speed
func cancel_skill():skill.cancel_skill() func cancel_skill():skill.cancel_skill()
func set_view_trigger(trigger_name:String):status.set("trigger_%s"%trigger_name,true) func set_view_trigger(trigger_name:String):status.set("trigger_%s"%trigger_name,true)
func add_attack(from:int,dir:Vector3,attack:AttackCfg):battle.add_attack(from,dir,attack)

@ -5,7 +5,7 @@ var target:int
var offset:Vector3 var offset:Vector3
func _ready(): func _ready():
Global.camera = self Global.camera_mgr = self
SignalManager.character_create.connect(on_character_create) SignalManager.character_create.connect(on_character_create)
SignalManager.character_pos_changed.connect(on_character_pos_changed) SignalManager.character_pos_changed.connect(on_character_pos_changed)
SignalManager.character_destroy.connect(on_character_destroy) SignalManager.character_destroy.connect(on_character_destroy)

@ -1,27 +1,26 @@
extends Node3D extends Node3D
class_name CharacterManager class_name CharacterManager
var scene_player = preload("res://scene/character/player.tscn")
var scene_monster = preload("res://scene/character/monster.tscn")
var character_material = preload("res://render/material/character.tres")
var character_map = {} var character_map = {}
var character_idx : int = 0 var character_idx : int = 0
func _ready():
Global.character_mgr = self
func create_character(cfg:CharacterCfg,team:Enum.ETeam,pos:Vector3): func create_character(cfg:CharacterCfg,team:Enum.ETeam,pos:Vector3):
var characterNode:Node var characterNode:Node
match cfg.type: match cfg.type:
Enum.ECharacterType.Player: Enum.ECharacterType.Player:
characterNode = scene_player.instantiate() characterNode = ResourceManager.scene_player.instantiate()
Enum.ECharacterType.Monster: Enum.ECharacterType.Monster:
characterNode = scene_monster.instantiate() characterNode = ResourceManager.scene_monster.instantiate()
add_child(characterNode) add_child(characterNode)
characterNode.name = cfg.name characterNode.name = cfg.name
var character = characterNode as Character var character = characterNode as Character
character_idx += 1 character_idx += 1
character_map[character_idx]=character character_map[character_idx]=character
character.init(self,character_idx,cfg,team) character.init(character_idx,cfg,team)
character.set_material(character_material.duplicate()) character.set_material(ResourceManager.character_material.duplicate())
character.set_pos(pos) character.set_pos(pos)
SignalManager.character_create.emit(character_idx,team,pos) SignalManager.character_create.emit(character_idx,team,pos)
character.init_after() character.init_after()

@ -0,0 +1,8 @@
extends Node3D
#scene
var scene_player = load("res://scene/character/player.tscn")
var scene_monster = load("res://scene/character/monster.tscn")
#material
var character_material = load("res://render/material/character.tres")

@ -1,7 +1,7 @@
extends Control extends Control
@onready var headbar_scene = preload("res://scene/ui/item/headbar.tscn") @onready var headbar_scene = preload("res://scene/ui/item/headbar.tscn")
@onready var camera: CameraManager = Global.camera @onready var camera: CameraManager = Global.camera_mgr
class HeadbarMeta: class HeadbarMeta:
var pos:Vector3 var pos:Vector3

Loading…
Cancel
Save