build(project): 更新项目配置和代码结构

- 升级 Godot.NET.Sdk 版本至 4.4.0
- 更新场景文件中的资源引用方式
- 调整部分代码逻辑和数据结构
- 更新项目配置文件
This commit is contained in:
ZZY 2025-04-21 21:49:03 +08:00
parent e16f76e11f
commit b27abb55a2
36 changed files with 109 additions and 75 deletions

3
.gitignore vendored
View File

@ -18,6 +18,7 @@ mono_crash.*.json
# MyProject specific ignores
.vscode/
.vs/
android/
Bin/
bin/
*.aseprite
@ -32,4 +33,4 @@ bin/
# Test files
Test/bin
Test/obj
Test/obj

View File

@ -1,12 +1,10 @@
<Project Sdk="Godot.NET.Sdk/4.3.0">
<Project Sdk="Godot.NET.Sdk/4.4.0">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<EnableDynamicLoading>true</EnableDynamicLoading>
<Nullable>enable</Nullable>
<!-- <TreatWarningsAsErrors>true</TreatWarningsAsErrors> -->
</PropertyGroup>
<ItemGroup>
<Compile Remove="Test\**\*" />
</ItemGroup>

1
Main.cs.uid Normal file
View File

@ -0,0 +1 @@
uid://kdxc7ummin4b

View File

@ -1,6 +1,6 @@
[gd_scene load_steps=3 format=3 uid="uid://boa4od72355o4"]
[ext_resource type="Script" path="res://Main.cs" id="1_h4cv2"]
[ext_resource type="Script" uid="uid://kdxc7ummin4b" path="res://Main.cs" id="1_h4cv2"]
[ext_resource type="Theme" uid="uid://intlbeu8h82r" path="res://Asserts/defaultTheme.tres" id="2_afihr"]
[node name="Main" type="Node2D"]

View File

@ -1,6 +1,6 @@
[gd_scene load_steps=4 format=3 uid="uid://g40y10iaf7qb"]
[ext_resource type="Script" path="res://Scripts/Controllers/ChessGame.cs" id="1_3x8ac"]
[ext_resource type="Script" uid="uid://cqgctouhh8qok" path="res://Scripts/Controllers/ChessGame.cs" id="1_3x8ac"]
[ext_resource type="PackedScene" uid="uid://b1tx7v3230wab" path="res://Scenes/Entities/Chessboard.tscn" id="1_yheur"]
[ext_resource type="Theme" uid="uid://intlbeu8h82r" path="res://Asserts/defaultTheme.tres" id="3_rcfhx"]

View File

@ -1,8 +1,8 @@
[gd_scene load_steps=4 format=4 uid="uid://b1tx7v3230wab"]
[ext_resource type="Script" path="res://Scripts/Entities/ChessBoard.cs" id="1_pjakt"]
[ext_resource type="Script" uid="uid://dmc012tt32dkl" path="res://Scripts/Entities/ChessBoard.cs" id="1_pjakt"]
[ext_resource type="TileSet" uid="uid://bibjj3ay65ral" path="res://Asserts/Chessboard.tres" id="1_ws3cq"]
[ext_resource type="Script" path="res://Scripts/Entities/ChessPiece.cs" id="3_26g24"]
[ext_resource type="Script" uid="uid://c8eafskfpuesm" path="res://Scripts/Entities/ChessPiece.cs" id="3_26g24"]
[node name="Chessboard" type="Node2D"]
script = ExtResource("1_pjakt")

View File

@ -1,7 +1,7 @@
[gd_scene load_steps=3 format=3 uid="uid://gkbtavjf2273"]
[ext_resource type="Texture2D" uid="uid://bthav6cae4fni" path="res://Asserts/ChesspieceBase.tres" id="1_8v1j6"]
[ext_resource type="Script" path="res://Scripts/Entities/ChessPiece.cs" id="2_y54gx"]
[ext_resource type="Script" uid="uid://c8eafskfpuesm" path="res://Scripts/Entities/ChessPiece.cs" id="2_y54gx"]
[node name="Chesspiece" type="Node2D"]

View File

@ -1,7 +1,7 @@
[gd_scene load_steps=3 format=3 uid="uid://00jxjgnmfbn7"]
[ext_resource type="Theme" uid="uid://intlbeu8h82r" path="res://Asserts/defaultTheme.tres" id="1_ge0tq"]
[ext_resource type="Script" path="res://Scripts/Controllers/GameLobby.cs" id="2_blx46"]
[ext_resource type="Script" uid="uid://cn273e4u256r" path="res://Scripts/Controllers/GameLobby.cs" id="2_blx46"]
[node name="GameLobby" type="Control"]
layout_mode = 3

View File

@ -1,7 +1,7 @@
[gd_scene load_steps=4 format=3 uid="uid://c6gxufppw1fu3"]
[ext_resource type="Theme" uid="uid://intlbeu8h82r" path="res://Asserts/defaultTheme.tres" id="1_6yfoi"]
[ext_resource type="Script" path="res://Scripts/Controllers/Setting.cs" id="1_xbvb3"]
[ext_resource type="Script" uid="uid://71ril3nh84rw" path="res://Scripts/Controllers/Setting.cs" id="1_xbvb3"]
[ext_resource type="PackedScene" uid="uid://pc83bstfltn" path="res://Scenes/Entities/ServerStatus.tscn" id="3_e50hu"]
[node name="Setting" type="MarginContainer"]

View File

@ -23,7 +23,7 @@ public partial class ChessGame : Node2D {
.Text = global.GlobalData["player_color"].AsString();
LineEdit turnSideEdit = GetNode<LineEdit>("Control/VBoxContainer/MarginContainer3/HFlowContainer/LineEdit2");
turnSideEdit.Text = "red";
GD.PrintErr("ChessGame ", global.RPClient.GetUserId(), ":",global.GlobalData["player_color"]);
GD.Print("ChessGame uid:", global.RPClient.GetUserId(), " color:",global.GlobalData["player_color"]);
dialog = new ConfirmationDialog {
DialogAutowrap = true,
@ -40,13 +40,7 @@ public partial class ChessGame : Node2D {
sideOpposite = ChessCore.TurnsSideType.Red;
}
// if (isSession) {
// Game = new(ChessCore.Mode.MultiMode, sideSelf);
// } else {
// Game = new(ChessCore.Mode.SingleMode, sideSelf);
// }
Game = new(isSession ? ChessCore.Mode.MultiMode : ChessCore.Mode.SingleMode, sideSelf, board);
Game.Init();
board.OnStepsChanged += (sender, e) => {
turnSideEdit.Text = Game.GetTurnsType() == ChessCore.TurnsSideType.Red ? "red" : "black";

View File

@ -0,0 +1 @@
uid://cqgctouhh8qok

View File

@ -0,0 +1 @@
uid://cn273e4u256r

View File

@ -0,0 +1 @@
uid://71ril3nh84rw

View File

@ -0,0 +1 @@
uid://dmc012tt32dkl

View File

@ -0,0 +1 @@
uid://c8eafskfpuesm

1
Scripts/Global.cs.uid Normal file
View File

@ -0,0 +1 @@
uid://dd84v12101t1n

View File

@ -0,0 +1 @@
uid://piu7vpl63m2m

View File

@ -0,0 +1 @@
uid://bg8nobv3n6cek

View File

@ -0,0 +1 @@
uid://bunvpv6p54l78

1
Scripts/Lib/gdws.cs.uid Normal file
View File

@ -0,0 +1 @@
uid://bsali4mwx62tt

View File

@ -0,0 +1 @@
uid://d1xim7v5bes7j

View File

@ -0,0 +1 @@
uid://cxlgd4kjfae7i

View File

@ -0,0 +1 @@
uid://dpcteo12eebjn

View File

@ -61,6 +61,8 @@ public class ChessCore {
case Mode.DebugMode:
throw new NotImplementedException();
}
Init();
}
public void Init() {

View File

@ -0,0 +1 @@
uid://sgx62hxlp6fr

View File

@ -75,11 +75,11 @@ public class CCPiece : AbstractPiece {
return board.IsPosOutOfRange(Local2Global(pos));
}
protected CCPiece? GetRecursivePieceLocal(Vector2I origin, Vector2I pos) {
protected (CCPiece?, Vector2I) GetRecursivePieceLocal(Vector2I origin, Vector2I pos) {
Vector2I with = origin + pos;
while (!IsPosOutOfRangeLocal(with) && GetCCPieceLocal(with) == null) {
with += pos;
}
return GetCCPieceLocal(with);
return (GetCCPieceLocal(with), with);
}
}

View File

@ -0,0 +1 @@
uid://b6ajoxcxs66n1

View File

@ -0,0 +1 @@
uid://blpqjd37p3r38

View File

@ -14,18 +14,22 @@ public class CCGeneral : CCPiece {
}
public override List<Vector2I> CanMoveAllPosSelf() {
List<Vector2I> list = new() {
List<Vector2I> list = [
new(1, 0),
new(-1, 0),
new(0, 1),
new(0, -1),
};
];
// 移除不符合条件的元素
list.RemoveAll(item =>
localPos.X + item.X > 1 || localPos.X + item.X < -1 ||
localPos.Y + item.Y > 2 || localPos.Y + item.Y < 0
|| GetRecursivePieceLocal(localPos + item, new(0, 1)) is CCGeneral);
localPos.Y + item.Y > 2 || localPos.Y + item.Y < 0);
(var piece, Vector2I pos) = GetRecursivePieceLocal(localPos, new(0, 1));
if (piece is CCGeneral) {
list.Add(pos);
}
return list;
}
}
@ -41,12 +45,12 @@ public class CCAdvisor : CCPiece {
}
public override List<Vector2I> CanMoveAllPosSelf() {
List<Vector2I> list = new() {
List<Vector2I> list = [
new(1, 1),
new(-1, 1),
new(1, -1),
new(-1, -1),
};
];
// 移除不符合条件的元素
list.RemoveAll(item =>
@ -68,12 +72,12 @@ public class CCElephant : CCPiece {
}
public override List<Vector2I> CanMoveAllPosSelf() {
List<Vector2I> list = new() {
List<Vector2I> list = [
new(2, 2),
new(-2, 2),
new(2, -2),
new(-2, -2),
};
];
list.RemoveAll(item => IsPosOutOfRangeLocal(localPos + item));
// 移除不符合条件的元素
@ -95,7 +99,7 @@ public class CCHorse : CCPiece {
}
public override List<Vector2I> CanMoveAllPosSelf() {
List<Vector2I> list = new () {
List<Vector2I> list = [
new Vector2I(1, 2),
new Vector2I(1, -2),
new Vector2I(2, 1),
@ -104,7 +108,7 @@ public class CCHorse : CCPiece {
new Vector2I(-1, 2),
new Vector2I(-2, -1),
new Vector2I(-2, 1),
};
];
list.RemoveAll(item => IsPosOutOfRangeLocal(localPos + item));
list.RemoveAll(item => {
@ -135,7 +139,7 @@ public class CCChariot : CCPiece {
}
public override List<Vector2I> CanMoveAllPosSelf() {
List<Vector2I> list = new ();
List<Vector2I> list = [];
void func(Vector2I added) {
Vector2I ptr = new(localPos);
@ -171,7 +175,7 @@ public class CCCannon : CCPiece {
}
public override List<Vector2I> CanMoveAllPosSelf() {
List<Vector2I> list = new ();
List<Vector2I> list = [];
void func(Vector2I added) {
Vector2I ptr = new(localPos);
@ -212,11 +216,11 @@ public class CCPawn : CCPiece {
}
public override List<Vector2I> CanMoveAllPosSelf() {
List<Vector2I> list = new () {
List<Vector2I> list = [
new(0, 1),
new(1, 0),
new(-1, 0),
};
];
list.RemoveAll(item => IsPosOutOfRangeLocal(localPos + item));
list.RemoveAll(item => localPos.Y <= 4 && item != new Vector2I(0, 1));

View File

@ -0,0 +1 @@
uid://mv1sbsok7q3k

View File

@ -0,0 +1 @@
uid://cgbntdvka6y2f

View File

@ -0,0 +1 @@
uid://dr1tx5gmpvy2h

View File

@ -0,0 +1 @@
uid://btjgh7imdrha1

View File

@ -0,0 +1 @@
uid://qfml5c031hb0

View File

@ -147,13 +147,15 @@ public class TestsTrans2DI {
var v2 = new Vector2I(1, 2);
var v3 = new Vector2I(v2);
// Assert
Assert.That(v1.X, Is.EqualTo(0));
Assert.That(v1.Y, Is.EqualTo(0));
Assert.That(v2.X, Is.EqualTo(1));
Assert.That(v2.Y, Is.EqualTo(2));
Assert.That(v3.X, Is.EqualTo(1));
Assert.That(v3.Y, Is.EqualTo(2));
Assert.Multiple(() => {
// Assert
Assert.That(v1.X, Is.EqualTo(0));
Assert.That(v1.Y, Is.EqualTo(0));
Assert.That(v2.X, Is.EqualTo(1));
Assert.That(v2.Y, Is.EqualTo(2));
Assert.That(v3.X, Is.EqualTo(1));
Assert.That(v3.Y, Is.EqualTo(2));
});
}
[Test]
@ -167,10 +169,12 @@ public class TestsTrans2DI {
var v4 = v1 - v2;
var v5 = v1 * v2;
// Assert
Assert.That(v3, Is.EqualTo(new Vector2I(4, 6)));
Assert.That(v4, Is.EqualTo(new Vector2I(-2, -2)));
Assert.That(v5, Is.EqualTo(new Vector2I(3, 8)));
Assert.Multiple(() => {
// Assert
Assert.That(v3, Is.EqualTo(new Vector2I(4, 6)));
Assert.That(v4, Is.EqualTo(new Vector2I(-2, -2)));
Assert.That(v5, Is.EqualTo(new Vector2I(3, 8)));
});
}
[Test]
@ -181,22 +185,24 @@ public class TestsTrans2DI {
var t3 = new Trans2DI(t2);
var t4 = new Trans2DI(1, 0, 0, 1, 0, 0);
// Assert
Assert.That(t1.XAxis, Is.EqualTo(new Vector2I(1, 0)));
Assert.That(t1.YAxis, Is.EqualTo(new Vector2I(0, 1)));
Assert.That(t1.Origin, Is.EqualTo(new Vector2I(0, 0)));
Assert.Multiple(() => {
// Assert
Assert.That(t1.XAxis, Is.EqualTo(new Vector2I(1, 0)));
Assert.That(t1.YAxis, Is.EqualTo(new Vector2I(0, 1)));
Assert.That(t1.Origin, Is.EqualTo(new Vector2I(0, 0)));
Assert.That(t2.XAxis, Is.EqualTo(new Vector2I(1, 0)));
Assert.That(t2.YAxis, Is.EqualTo(new Vector2I(0, 1)));
Assert.That(t2.Origin, Is.EqualTo(new Vector2I(0, 0)));
Assert.That(t2.XAxis, Is.EqualTo(new Vector2I(1, 0)));
Assert.That(t2.YAxis, Is.EqualTo(new Vector2I(0, 1)));
Assert.That(t2.Origin, Is.EqualTo(new Vector2I(0, 0)));
Assert.That(t3.XAxis, Is.EqualTo(new Vector2I(1, 0)));
Assert.That(t3.YAxis, Is.EqualTo(new Vector2I(0, 1)));
Assert.That(t3.Origin, Is.EqualTo(new Vector2I(0, 0)));
Assert.That(t3.XAxis, Is.EqualTo(new Vector2I(1, 0)));
Assert.That(t3.YAxis, Is.EqualTo(new Vector2I(0, 1)));
Assert.That(t3.Origin, Is.EqualTo(new Vector2I(0, 0)));
Assert.That(t4.XAxis, Is.EqualTo(new Vector2I(1, 0)));
Assert.That(t4.YAxis, Is.EqualTo(new Vector2I(0, 1)));
Assert.That(t4.Origin, Is.EqualTo(new Vector2I(0, 0)));
Assert.That(t4.XAxis, Is.EqualTo(new Vector2I(1, 0)));
Assert.That(t4.YAxis, Is.EqualTo(new Vector2I(0, 1)));
Assert.That(t4.Origin, Is.EqualTo(new Vector2I(0, 0)));
});
}
[Test]
@ -209,9 +215,11 @@ public class TestsTrans2DI {
var v2 = t1 * v1;
var v3 = v1 * t1;
// Assert
Assert.That(v2, Is.EqualTo(new Vector2I(4, 6)));
Assert.That(v3, Is.EqualTo(new Vector2I(2, 2)));
Assert.Multiple(() => {
// Assert
Assert.That(v2, Is.EqualTo(new Vector2I(4, 6)));
Assert.That(v3, Is.EqualTo(new Vector2I(2, 2)));
});
}
[Test]
@ -225,9 +233,11 @@ public class TestsTrans2DI {
var v2 = t1 * v1;
var v3 = t2 * v1;
// Assert
Assert.That(v2, Is.EqualTo(new Vector2I(int.MaxValue, int.MaxValue)));
Assert.That(v3, Is.EqualTo(new Vector2I(int.MinValue, int.MinValue)));
Assert.Multiple(() => {
// Assert
Assert.That(v2, Is.EqualTo(new Vector2I(int.MaxValue, int.MaxValue)));
Assert.That(v3, Is.EqualTo(new Vector2I(int.MinValue, int.MinValue)));
});
}
[Test]
@ -241,9 +251,11 @@ public class TestsTrans2DI {
var v2 = t1 * v1;
var v3 = t2 * v1;
// Assert
Assert.That(v2, Is.EqualTo(new Vector2I(0, 0)));
Assert.That(v3, Is.EqualTo(new Vector2I(1, 1)));
Assert.Multiple(() => {
// Assert
Assert.That(v2, Is.EqualTo(new Vector2I(0, 0)));
Assert.That(v3, Is.EqualTo(new Vector2I(1, 1)));
});
}
[Test]
@ -255,9 +267,11 @@ public class TestsTrans2DI {
// Act
var t3 = t1 * t2;
// Assert
Assert.That(t3.XAxis, Is.EqualTo(new Vector2I(2, 0)));
Assert.That(t3.YAxis, Is.EqualTo(new Vector2I(0, 2)));
Assert.That(t3.Origin, Is.EqualTo(new Vector2I(5, 8)));
Assert.Multiple(() => {
// Assert
Assert.That(t3.XAxis, Is.EqualTo(new Vector2I(2, 0)));
Assert.That(t3.YAxis, Is.EqualTo(new Vector2I(0, 2)));
Assert.That(t3.Origin, Is.EqualTo(new Vector2I(5, 8)));
});
}
}

View File

@ -11,10 +11,10 @@ config_version=5
[application]
config/name="ChessGame"
config/version="0.0.5"
config/version="0.0.6"
run/main_scene="res://Main.tscn"
config/features=PackedStringArray("4.3", "C#", "Mobile")
config/icon="res://Asserts/icon.svg"
config/features=PackedStringArray("4.4", "C#", "Mobile")
config/icon="uid://c0wpthj7y1ayp"
[autoload]
@ -38,5 +38,4 @@ project/assembly_name="ChessGame"
[rendering]
renderer/rendering_method="mobile"
textures/vram_compression/import_etc2_astc=true