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