From 26043a6a73671d4e7810b41c4aa0d230d284536d Mon Sep 17 00:00:00 2001
From: Lightczx <1686188646@qq.com>
Date: Mon, 26 Feb 2024 16:35:36 +0800
Subject: [PATCH] Add furniture data struct
---
.../Snap.Hutao/IdentityStructs.json | 24 +++++++++
.../Intrinsic/FurnitureDeploySurfaceType.cs | 25 ++++++++++
.../Model/Intrinsic/FurnitureDeployType.cs | 13 +++++
.../Model/Intrinsic/GroupRecordType.cs | 14 ++++++
.../Model/Intrinsic/SpecialFurnitureType.cs | 26 ++++++++++
.../Model/Metadata/Achievement/Reward.cs | 13 +----
.../Model/Metadata/Furniture/Furniture.cs | 50 +++++++++++++++++++
.../Model/Metadata/Furniture/FurnitureMake.cs | 18 +++++++
.../Metadata/Furniture/FurnitureSuite.cs | 26 ++++++++++
.../Model/Metadata/Furniture/FurnitureType.cs | 28 +++++++++++
.../Snap.Hutao/Model/Metadata/IdCount.cs | 20 ++++++++
11 files changed, 245 insertions(+), 12 deletions(-)
create mode 100644 src/Snap.Hutao/Snap.Hutao/Model/Intrinsic/FurnitureDeploySurfaceType.cs
create mode 100644 src/Snap.Hutao/Snap.Hutao/Model/Intrinsic/FurnitureDeployType.cs
create mode 100644 src/Snap.Hutao/Snap.Hutao/Model/Intrinsic/GroupRecordType.cs
create mode 100644 src/Snap.Hutao/Snap.Hutao/Model/Intrinsic/SpecialFurnitureType.cs
create mode 100644 src/Snap.Hutao/Snap.Hutao/Model/Metadata/Furniture/Furniture.cs
create mode 100644 src/Snap.Hutao/Snap.Hutao/Model/Metadata/Furniture/FurnitureMake.cs
create mode 100644 src/Snap.Hutao/Snap.Hutao/Model/Metadata/Furniture/FurnitureSuite.cs
create mode 100644 src/Snap.Hutao/Snap.Hutao/Model/Metadata/Furniture/FurnitureType.cs
create mode 100644 src/Snap.Hutao/Snap.Hutao/Model/Metadata/IdCount.cs
diff --git a/src/Snap.Hutao/Snap.Hutao/IdentityStructs.json b/src/Snap.Hutao/Snap.Hutao/IdentityStructs.json
index b1a73ff9..cd8c0019 100644
--- a/src/Snap.Hutao/Snap.Hutao/IdentityStructs.json
+++ b/src/Snap.Hutao/Snap.Hutao/IdentityStructs.json
@@ -41,6 +41,30 @@
"Equatable": true,
"EqualityOperators": true
},
+ {
+ "Name": "FurnitureId",
+ "Documentation": "家具 Id",
+ "Equatable": true,
+ "EqualityOperators": true
+ },
+ {
+ "Name": "FurnitureMakeId",
+ "Documentation": "家具配方 Id",
+ "Equatable": true,
+ "EqualityOperators": true
+ },
+ {
+ "Name": "FurnitureSuiteId",
+ "Documentation": "家具套装 Id",
+ "Equatable": true,
+ "EqualityOperators": true
+ },
+ {
+ "Name": "FurnitureTypeId",
+ "Documentation": "家具分类 Id",
+ "Equatable": true,
+ "EqualityOperators": true
+ },
{
"Name": "Level",
"Documentation": "等级 1 - 90",
diff --git a/src/Snap.Hutao/Snap.Hutao/Model/Intrinsic/FurnitureDeploySurfaceType.cs b/src/Snap.Hutao/Snap.Hutao/Model/Intrinsic/FurnitureDeploySurfaceType.cs
new file mode 100644
index 00000000..bd625992
--- /dev/null
+++ b/src/Snap.Hutao/Snap.Hutao/Model/Intrinsic/FurnitureDeploySurfaceType.cs
@@ -0,0 +1,25 @@
+// Copyright (c) DGP Studio. All rights reserved.
+// Licensed under the MIT license.
+
+namespace Snap.Hutao.Model.Intrinsic;
+
+internal enum FurnitureDeploySurfaceType
+{
+ Ground = 0,
+ Wall = 1,
+ Ceil = 2,
+ StackObjPlane = 3,
+ Door = 4,
+ Chandelier = 5,
+ Floor = 6,
+ WallBody = 7,
+ Carpet = 8,
+ LegoRockery = 9,
+ Stair = 10,
+ NPC = 11,
+ Animal = 12,
+ Apartment = 13,
+ FurnitureSuite = 14,
+ Road = 15,
+ Terrain = 16,
+}
\ No newline at end of file
diff --git a/src/Snap.Hutao/Snap.Hutao/Model/Intrinsic/FurnitureDeployType.cs b/src/Snap.Hutao/Snap.Hutao/Model/Intrinsic/FurnitureDeployType.cs
new file mode 100644
index 00000000..3da44628
--- /dev/null
+++ b/src/Snap.Hutao/Snap.Hutao/Model/Intrinsic/FurnitureDeployType.cs
@@ -0,0 +1,13 @@
+// Copyright (c) DGP Studio. All rights reserved.
+// Licensed under the MIT license.
+
+namespace Snap.Hutao.Model.Intrinsic;
+
+internal enum FurnitureDeployType
+{
+ Interior,
+ Exterior,
+ InteriorRoom,
+ InteriorHall,
+ Skybox,
+}
\ No newline at end of file
diff --git a/src/Snap.Hutao/Snap.Hutao/Model/Intrinsic/GroupRecordType.cs b/src/Snap.Hutao/Snap.Hutao/Model/Intrinsic/GroupRecordType.cs
new file mode 100644
index 00000000..90f2aebc
--- /dev/null
+++ b/src/Snap.Hutao/Snap.Hutao/Model/Intrinsic/GroupRecordType.cs
@@ -0,0 +1,14 @@
+// Copyright (c) DGP Studio. All rights reserved.
+// Licensed under the MIT license.
+
+namespace Snap.Hutao.Model.Intrinsic;
+
+internal enum GroupRecordType
+{
+ None,
+ Racing,
+ Balloon,
+ Stake,
+ Seek,
+ Explosion,
+}
\ No newline at end of file
diff --git a/src/Snap.Hutao/Snap.Hutao/Model/Intrinsic/SpecialFurnitureType.cs b/src/Snap.Hutao/Snap.Hutao/Model/Intrinsic/SpecialFurnitureType.cs
new file mode 100644
index 00000000..2b4e0ac7
--- /dev/null
+++ b/src/Snap.Hutao/Snap.Hutao/Model/Intrinsic/SpecialFurnitureType.cs
@@ -0,0 +1,26 @@
+// Copyright (c) DGP Studio. All rights reserved.
+// Licensed under the MIT license.
+
+namespace Snap.Hutao.Model.Intrinsic;
+
+internal enum SpecialFurnitureType
+{
+ NormalFurniture,
+ BlockDependent,
+ FarmField,
+ TeleportPoint,
+ Fishpond,
+ Npc,
+ Apartment,
+ FurnitureSuite,
+ Paimon,
+ Fish,
+ CustomBaseFurniture,
+ CustomNodeFurniture,
+ VirtualFurniture,
+ GroupFurniture,
+ CoopPictureFrame,
+ ChangeBgmFurniture,
+ ServerGadget,
+ Fishtank,
+}
\ No newline at end of file
diff --git a/src/Snap.Hutao/Snap.Hutao/Model/Metadata/Achievement/Reward.cs b/src/Snap.Hutao/Snap.Hutao/Model/Metadata/Achievement/Reward.cs
index 40749e14..7f3d2440 100644
--- a/src/Snap.Hutao/Snap.Hutao/Model/Metadata/Achievement/Reward.cs
+++ b/src/Snap.Hutao/Snap.Hutao/Model/Metadata/Achievement/Reward.cs
@@ -8,15 +8,4 @@ namespace Snap.Hutao.Model.Metadata.Achievement;
///
/// 奖励
///
-internal sealed class Reward
-{
- ///
- /// Id
- ///
- public MaterialId Id { get; set; }
-
- ///
- /// 数量
- ///
- public uint Count { get; set; }
-}
\ No newline at end of file
+internal sealed class Reward : IdCount;
\ No newline at end of file
diff --git a/src/Snap.Hutao/Snap.Hutao/Model/Metadata/Furniture/Furniture.cs b/src/Snap.Hutao/Snap.Hutao/Model/Metadata/Furniture/Furniture.cs
new file mode 100644
index 00000000..8f2ca0ca
--- /dev/null
+++ b/src/Snap.Hutao/Snap.Hutao/Model/Metadata/Furniture/Furniture.cs
@@ -0,0 +1,50 @@
+// Copyright (c) DGP Studio. All rights reserved.
+// Licensed under the MIT license.
+
+using Snap.Hutao.Model.Intrinsic;
+using Snap.Hutao.Model.Primitive;
+
+namespace Snap.Hutao.Model.Metadata.Furniture;
+
+internal sealed class Furniture
+{
+ public List Types { get; set; } = default!;
+
+ public FurnitureDeploySurfaceType SurfaceType { get; set; }
+
+ public bool IsSpecial { get; set; }
+
+ public SpecialFurnitureType SpecialType { get; set; }
+
+ public uint Comfort { get; set; }
+
+ public uint Cost { get; set; }
+
+ public uint DiscountCost { get; set; }
+
+ public bool CanFloat { get; set; }
+
+ public bool IsUnique { get; set; }
+
+ public string? ItemIcon { get; set; }
+
+ public string? EffectIcon { get; set; }
+
+ public QualityType RankLevel { get; set; }
+
+ public List GruopUnits { get; set; } = default!;
+
+ public GroupRecordType GroupRecordType { get; set; }
+
+ public List SourceTexts { get; set; } = default!;
+
+ public FurnitureId Id { get; set; }
+
+ public string Name { get; set; } = default!;
+
+ public string Description { get; set; } = default!;
+
+ public string? Icon { get; set; }
+
+ public uint Rank { get; set; }
+}
\ No newline at end of file
diff --git a/src/Snap.Hutao/Snap.Hutao/Model/Metadata/Furniture/FurnitureMake.cs b/src/Snap.Hutao/Snap.Hutao/Model/Metadata/Furniture/FurnitureMake.cs
new file mode 100644
index 00000000..eb322ef1
--- /dev/null
+++ b/src/Snap.Hutao/Snap.Hutao/Model/Metadata/Furniture/FurnitureMake.cs
@@ -0,0 +1,18 @@
+// Copyright (c) DGP Studio. All rights reserved.
+// Licensed under the MIT license.
+
+using Snap.Hutao.Model.Intrinsic;
+using Snap.Hutao.Model.Primitive;
+
+namespace Snap.Hutao.Model.Metadata.Furniture;
+
+internal sealed class FurnitureMake
+{
+ public FurnitureMakeId Id { get; set; }
+
+ public FurnitureId ItemId { get; set; }
+
+ public uint Experience { get; set; }
+
+ public List Materials { get; set; } = default!;
+}
\ No newline at end of file
diff --git a/src/Snap.Hutao/Snap.Hutao/Model/Metadata/Furniture/FurnitureSuite.cs b/src/Snap.Hutao/Snap.Hutao/Model/Metadata/Furniture/FurnitureSuite.cs
new file mode 100644
index 00000000..e3a75316
--- /dev/null
+++ b/src/Snap.Hutao/Snap.Hutao/Model/Metadata/Furniture/FurnitureSuite.cs
@@ -0,0 +1,26 @@
+// Copyright (c) DGP Studio. All rights reserved.
+// Licensed under the MIT license.
+
+using Snap.Hutao.Model.Intrinsic;
+using Snap.Hutao.Model.Primitive;
+
+namespace Snap.Hutao.Model.Metadata.Furniture;
+
+internal sealed class FurnitureSuite
+{
+ public FurnitureSuiteId Id { get; set; }
+
+ public List Types { get; set; } = default!;
+
+ public string Name { get; set; } = default!;
+
+ public string Description { get; set; } = default!;
+
+ public string ItemIcon { get; set; } = default!;
+
+ public string? MapIcon { get; set; }
+
+ public List? FavoriteNpcs { get; set; }
+
+ public List Units { get; set; } = default!;
+}
\ No newline at end of file
diff --git a/src/Snap.Hutao/Snap.Hutao/Model/Metadata/Furniture/FurnitureType.cs b/src/Snap.Hutao/Snap.Hutao/Model/Metadata/Furniture/FurnitureType.cs
new file mode 100644
index 00000000..54450a5c
--- /dev/null
+++ b/src/Snap.Hutao/Snap.Hutao/Model/Metadata/Furniture/FurnitureType.cs
@@ -0,0 +1,28 @@
+// Copyright (c) DGP Studio. All rights reserved.
+// Licensed under the MIT license.
+
+using Snap.Hutao.Model.Intrinsic;
+using Snap.Hutao.Model.Primitive;
+
+namespace Snap.Hutao.Model.Metadata.Furniture;
+
+internal sealed class FurnitureType
+{
+ public FurnitureTypeId Id { get; set; }
+
+ public uint Category { get; set; }
+
+ public string Name { get; set; } = default!;
+
+ public string Name2 { get; set; } = default!;
+
+ public string TabIcon { get; set; } = default!;
+
+ public FurnitureDeployType SceneType { get; set; }
+
+ public bool BagPageOnly { get; set; }
+
+ public bool IsShowInBag { get; set; }
+
+ public uint Sort { get; set; }
+}
\ No newline at end of file
diff --git a/src/Snap.Hutao/Snap.Hutao/Model/Metadata/IdCount.cs b/src/Snap.Hutao/Snap.Hutao/Model/Metadata/IdCount.cs
new file mode 100644
index 00000000..c4d301f8
--- /dev/null
+++ b/src/Snap.Hutao/Snap.Hutao/Model/Metadata/IdCount.cs
@@ -0,0 +1,20 @@
+// Copyright (c) DGP Studio. All rights reserved.
+// Licensed under the MIT license.
+
+using Snap.Hutao.Model.Intrinsic;
+using Snap.Hutao.Model.Primitive;
+
+namespace Snap.Hutao.Model.Metadata;
+
+internal class IdCount
+{
+ ///
+ /// Id
+ ///
+ public MaterialId Id { get; set; }
+
+ ///
+ /// 数量
+ ///
+ public uint Count { get; set; }
+}
\ No newline at end of file