Item containers are now retrieved from the game scene.
物品容器现在从游戏场景获取了。
This commit is contained in:
parent
015efbc271
commit
549248cf6b
|
@ -33,7 +33,7 @@ log_start_item_register_from_file,开始从文件注册物品信息,Start regist
|
||||||
log_found_files,找到{0}个文件,Found {0} files,{0}ファイルが見つかりました
|
log_found_files,找到{0}个文件,Found {0} files,{0}ファイルが見つかりました
|
||||||
log_found_item_types,从文件中找到{0}个物品类型,Found {0} item types in files,ファイルから{0}個のアイテム・タイプが見つかった
|
log_found_item_types,从文件中找到{0}个物品类型,Found {0} item types in files,ファイルから{0}個のアイテム・タイプが見つかった
|
||||||
log_register_item,注册物品类型{0}结果为{1},Registered item type {0}; results in {1},登録されたアイテム・タイプ {0} の結果は {1} です。
|
log_register_item,注册物品类型{0}结果为{1},Registered item type {0}; results in {1},登録されたアイテム・タイプ {0} の結果は {1} です。
|
||||||
log_error_when_open_item_regs_dir,尝试打开物品信息目录时发生错误,错误代码:{1},"An error occurred when trying to open the item information directory, error code: {1}",アイテム情報ディレクトリを開こうとしてエラーが発生しました、エラーコード:{1}
|
log_error_when_open_item_regs_dir,尝试打开物品信息目录{0}时发生错误,错误代码:{1},"An error occurred when trying to open the item information directory {0}, error code: {1}",アイテム情報ディレクトリ{0}を開こうとしてエラーが発生しました、エラーコード:{1}
|
||||||
log_wrong_custom_arg,不匹配的参数:类型为{0}而值为{1},Mismatched parameter: type {0} and value {1},パラメータの不一致:型{0}と値{1}。
|
log_wrong_custom_arg,不匹配的参数:类型为{0}而值为{1},Mismatched parameter: type {0} and value {1},パラメータの不一致:型{0}と値{1}。
|
||||||
log_item_container_is_null,物品容器为空,Item container is null,アイテム・コンテナが空です
|
log_item_container_is_null,物品容器为空,Item container is null,アイテム・コンテナが空です
|
||||||
log_item_has_no_owner,物品没有所有者,Item has no owner,アイテムに所有者がいません
|
log_item_has_no_owner,物品没有所有者,Item has no owner,アイテムに所有者がいません
|
||||||
|
@ -102,3 +102,6 @@ log_mod_not_contain_dll,模组{0}不包含DLL文件。,The module {0} does not c
|
||||||
log_mod_not_contain_pck,模组{0}不包含PCK文件。,The module {0} does not contain a PCK file.,モジュール{0}にPCKファイルが含まれていません。
|
log_mod_not_contain_pck,模组{0}不包含PCK文件。,The module {0} does not contain a PCK file.,モジュール{0}にPCKファイルが含まれていません。
|
||||||
log_load_pck_success,成功加载位于{0}的PCK文件。,Successfully loaded the PCK file located at {0}.,{0}にあるPCKファイルを正常にロードしました。
|
log_load_pck_success,成功加载位于{0}的PCK文件。,Successfully loaded the PCK file located at {0}.,{0}にあるPCKファイルを正常にロードしました。
|
||||||
log_load_pck_failed,加载PCK文件{0}失败。,Failed to load the PCK file {0}.,PCKファイル{0}のロードに失敗しました。
|
log_load_pck_failed,加载PCK文件{0}失败。,Failed to load the PCK file {0}.,PCKファイル{0}のロードに失敗しました。
|
||||||
|
log_projectile_container_is_null,抛射体容器为空。,Projectile container is null.,射出体コンテナが空です。
|
||||||
|
log_marker2d_is_null,Marker2D为空。,Marker2D is null.,Marker2Dが空です。
|
||||||
|
log_owner_is_null,所有者为空。,Owner is null.,所有者が空です。
|
|
|
@ -35,6 +35,12 @@ public static class GameSceneNodeHolder
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// <para>ProjectileContainer</para>
|
||||||
|
/// <para>抛射体容器</para>
|
||||||
|
/// </summary>
|
||||||
|
public static Node2D? ProjectileContainer { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// <para>WeaponContainer</para>
|
/// <para>WeaponContainer</para>
|
||||||
/// <para>武器容器</para>
|
/// <para>武器容器</para>
|
||||||
|
|
|
@ -31,12 +31,14 @@ public static class ItemTypeRegister
|
||||||
LogCat.Log("start_item_register_from_file");
|
LogCat.Log("start_item_register_from_file");
|
||||||
//初始化文件目录
|
//初始化文件目录
|
||||||
//initialize file dir
|
//initialize file dir
|
||||||
var itemRegsDirPath = "res://data/itemRegs/";
|
var itemRegsDirPath = "res://data/itemRegs";
|
||||||
var itemRegsDir = DirAccess.Open(itemRegsDirPath);
|
var itemRegsDir = DirAccess.Open(itemRegsDirPath);
|
||||||
var error = DirAccess.GetOpenError();
|
var error = DirAccess.GetOpenError();
|
||||||
if (error is not Error.Ok)
|
if (error is not Error.Ok)
|
||||||
{
|
{
|
||||||
LogCat.LogError("error_when_open_item_regs_dir", error.ToString());
|
LogCat.LogErrorWithFormat("error_when_open_item_regs_dir", LogCat.LogLabel.Default, true, itemRegsDirPath,
|
||||||
|
error.ToString());
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
//找到文件
|
//找到文件
|
||||||
|
|
|
@ -39,6 +39,10 @@ public partial class GameSceneLoader : SceneLoaderTemplate
|
||||||
//加载武器容器
|
//加载武器容器
|
||||||
var weaponContainer = GetNode<Node2D>("WeaponContainer");
|
var weaponContainer = GetNode<Node2D>("WeaponContainer");
|
||||||
GameSceneNodeHolder.WeaponContainer = weaponContainer;
|
GameSceneNodeHolder.WeaponContainer = weaponContainer;
|
||||||
|
//Load projectile container
|
||||||
|
//加载抛射体容器
|
||||||
|
var projectileContainer = GetNode<Node2D>("ProjectileContainer");
|
||||||
|
GameSceneNodeHolder.ProjectileContainer = projectileContainer;
|
||||||
//Load Packsack container
|
//Load Packsack container
|
||||||
//加载背包容器
|
//加载背包容器
|
||||||
var packsackContainer = GetNode<Node2D>("PacksackContainer");
|
var packsackContainer = GetNode<Node2D>("PacksackContainer");
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using ColdMint.scripts.debug;
|
using ColdMint.scripts.debug;
|
||||||
|
using ColdMint.scripts.projectile;
|
||||||
using Godot;
|
using Godot;
|
||||||
using Packsack = ColdMint.scripts.inventory.Packsack;
|
using Packsack = ColdMint.scripts.inventory.Packsack;
|
||||||
using PacksackUi = ColdMint.scripts.loader.uiLoader.PacksackUi;
|
using PacksackUi = ColdMint.scripts.loader.uiLoader.PacksackUi;
|
||||||
|
@ -235,6 +236,11 @@ public static class NodeUtils
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public static Node FindContainerNode(Node childNode, Node defaultParentNode)
|
public static Node FindContainerNode(Node childNode, Node defaultParentNode)
|
||||||
{
|
{
|
||||||
|
if (GameSceneNodeHolder.ProjectileContainer != null && childNode is Projectile)
|
||||||
|
{
|
||||||
|
return GameSceneNodeHolder.ProjectileContainer;
|
||||||
|
}
|
||||||
|
|
||||||
if (GameSceneNodeHolder.WeaponContainer != null && childNode is WeaponTemplate)
|
if (GameSceneNodeHolder.WeaponContainer != null && childNode is WeaponTemplate)
|
||||||
{
|
{
|
||||||
return GameSceneNodeHolder.WeaponContainer;
|
return GameSceneNodeHolder.WeaponContainer;
|
||||||
|
|
|
@ -23,21 +23,33 @@ public partial class ProjectileWeapon : WeaponTemplate
|
||||||
|
|
||||||
[Export] protected PackedScene[] ProjectileScenes { get; set; } = [];
|
[Export] protected PackedScene[] ProjectileScenes { get; set; } = [];
|
||||||
|
|
||||||
private Node2D? _projectileContainer;
|
|
||||||
|
|
||||||
public override void _Ready()
|
public override void _Ready()
|
||||||
{
|
{
|
||||||
base._Ready();
|
base._Ready();
|
||||||
_marker2D = GetNode<Marker2D>("Marker2D");
|
_marker2D = GetNode<Marker2D>("Marker2D");
|
||||||
|
|
||||||
_projectileContainer = GetNode("/root/Game/ProjectileContainer") as Node2D;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
protected override void DoFire(Node2D? owner, Vector2 enemyGlobalPosition)
|
protected override void DoFire(Node2D? owner, Vector2 enemyGlobalPosition)
|
||||||
{
|
{
|
||||||
if (owner == null || _projectileContainer == null || _marker2D == null) return;
|
if (owner == null)
|
||||||
|
{
|
||||||
|
LogCat.LogError("owner_is_null");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (_marker2D == null)
|
||||||
|
{
|
||||||
|
LogCat.LogError("marker2d_is_null");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (GameSceneNodeHolder.ProjectileContainer == null)
|
||||||
|
{
|
||||||
|
LogCat.LogError("projectile_container_is_null");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
//Empty list check
|
||||||
//空列表检查
|
//空列表检查
|
||||||
if (ProjectileScenes is [])
|
if (ProjectileScenes is [])
|
||||||
{
|
{
|
||||||
|
@ -51,7 +63,7 @@ public partial class ProjectileWeapon : WeaponTemplate
|
||||||
// var projectileScene = _projectileCache[_projectiles[0]];
|
// var projectileScene = _projectileCache[_projectiles[0]];
|
||||||
var projectile = NodeUtils.InstantiatePackedScene<ProjectileTemplate>(projectileScene);
|
var projectile = NodeUtils.InstantiatePackedScene<ProjectileTemplate>(projectileScene);
|
||||||
if (projectile == null) return;
|
if (projectile == null) return;
|
||||||
NodeUtils.CallDeferredAddChild(_projectileContainer, projectile);
|
NodeUtils.CallDeferredAddChild(GameSceneNodeHolder.ProjectileContainer, projectile);
|
||||||
projectile.Owner = owner;
|
projectile.Owner = owner;
|
||||||
projectile.Velocity = (enemyGlobalPosition - _marker2D.GlobalPosition).Normalized() * projectile.Speed;
|
projectile.Velocity = (enemyGlobalPosition - _marker2D.GlobalPosition).Normalized() * projectile.Speed;
|
||||||
projectile.Position = _marker2D.GlobalPosition;
|
projectile.Position = _marker2D.GlobalPosition;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user