From c2d805983447aceea8650d01ec1134e8bd7a72c7 Mon Sep 17 00:00:00 2001 From: Ggafrik <906823881@qq.com> Date: Sun, 3 Aug 2025 23:58:55 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../UI/Windows/ChaWindow/PackageShow.luau | 22 +++++++++++++- .../UI/Windows/ChaWindow/WearingShow.luau | 30 ++++++++++++++++--- .../UI/Windows/ChaWindow/init.luau | 2 +- .../Windows/EquipmentDetailWindow/init.luau | 23 ++++++++++++-- 4 files changed, 69 insertions(+), 8 deletions(-) diff --git a/src/StarterPlayerScripts/UI/Windows/ChaWindow/PackageShow.luau b/src/StarterPlayerScripts/UI/Windows/ChaWindow/PackageShow.luau index b91bcb3..874f2cc 100644 --- a/src/StarterPlayerScripts/UI/Windows/ChaWindow/PackageShow.luau +++ b/src/StarterPlayerScripts/UI/Windows/ChaWindow/PackageShow.luau @@ -8,6 +8,8 @@ local Localization = require(ReplicatedStorage.Tools.Localization) local JsonEquipment = require(ReplicatedStorage.Json.Equipment) local JsonItemProp = require(ReplicatedStorage.Json.ItemProp) +local FolderEquipment = ReplicatedStorage:WaitForChild("Prefabs"):WaitForChild("Equipments") + function PackageShow:Init(data: table) local self = {} self.Data = data @@ -15,6 +17,8 @@ function PackageShow:Init(data: table) ["_btnClick"] = 0, ["_imgIcon"] = 0, ["_tmpQuality"] = 0, + ["_tmpName"] = 0, + ["_imgView"] = 0, } self.Connections = {} @@ -27,7 +31,23 @@ function PackageShow:Refresh() local itemData = Utils:GetIdDataFromJson(JsonItemProp, self.Data.orgId) self.Variables._imgIcon.Image = Localization:GetImageData(itemData.iconId) self.Variables._imgIcon.Visible = false - self.Variables._tmpQuality.Text = self.Data.quality + self.Variables._tmpQuality.Text = Localization:GetColoredEquipmentQualityDesc(self.Data.quality) + self.Variables._tmpName.Text = Localization:GetLanguageData(itemData.nameId) + + local equipmentData = Utils:GetIdDataFromJson(JsonEquipment, self.Data.orgId) + -- 模型 + local part = FolderEquipment:FindFirstChild(equipmentData.modelName):Clone() + part.Handle.Position = Vector3.new(0, 0, 0) + part.Handle.CFrame = CFrame.new(0, 0, 0) * CFrame.Angles(math.rad(90), 0, 0) + part.Parent = self.Variables["_imgView"] + self.Prefab = part + + -- 相机 + local viewportCamera = Instance.new("Camera") + self.Variables["_imgView"].CurrentCamera = viewportCamera + viewportCamera.Parent = self.Variables["_imgView"] + viewportCamera.CFrame = CFrame.new(Vector3.new(0, 0, 6), part.Handle.Position) + self.ViewCamera = viewportCamera end function PackageShow:OnInitFinish() diff --git a/src/StarterPlayerScripts/UI/Windows/ChaWindow/WearingShow.luau b/src/StarterPlayerScripts/UI/Windows/ChaWindow/WearingShow.luau index 4af9fa0..0367b0b 100644 --- a/src/StarterPlayerScripts/UI/Windows/ChaWindow/WearingShow.luau +++ b/src/StarterPlayerScripts/UI/Windows/ChaWindow/WearingShow.luau @@ -8,14 +8,18 @@ local Localization = require(ReplicatedStorage.Tools.Localization) local JsonEquipment = require(ReplicatedStorage.Json.Equipment) local JsonItemProp = require(ReplicatedStorage.Json.ItemProp) +local FolderEquipment = ReplicatedStorage:WaitForChild("Prefabs"):WaitForChild("Equipments") + function WearingShow:Init(data: table) local self = {} self.Data = data self.Variables = { ["_btnClick"] = 0, + ["_imgBg"] = 0, ["_imgIcon"] = 0, - ["_imgbg"] = 0, ["_tmpQuality"] = 0, + ["_tmpName"] = 0, + ["_imgView"] = 0, } self.Connections = {} @@ -28,14 +32,32 @@ function WearingShow:Refresh() -- 槽位为空 if self.Data.id == nil then self.Variables._imgIcon.Image = "" - self.Variables._imgbg.Visible = true + self.Variables._imgBg.Visible = true self.Variables._tmpQuality.Text = "" + self.Variables._tmpName.Text = "" else -- 槽位有装备 local itemData = Utils:GetIdDataFromJson(JsonItemProp, self.Data.orgId) self.Variables._imgIcon.Image = Localization:GetImageData(itemData.iconId) - self.Variables._imgbg.Visible = false - self.Variables._tmpQuality.Text = self.Data.quality + self.Variables._imgBg.Visible = false + self.Variables._tmpQuality.Text = Localization:GetColoredEquipmentQualityDesc(self.Data.quality) + self.Variables._tmpName.Text = Localization:GetLanguageData(itemData.nameId) + + + local equipmentData = Utils:GetIdDataFromJson(JsonEquipment, self.Data.orgId) + -- 模型 + local part = FolderEquipment:FindFirstChild(equipmentData.modelName):Clone() + part.Handle.Position = Vector3.new(0, 0, 0) + part.Handle.CFrame = CFrame.new(0, 0, 0) * CFrame.Angles(math.rad(90), 0, 0) + part.Parent = self.Variables["_imgView"] + self.Prefab = part + + -- 相机 + local viewportCamera = Instance.new("Camera") + self.Variables["_imgView"].CurrentCamera = viewportCamera + viewportCamera.Parent = self.Variables["_imgView"] + viewportCamera.CFrame = CFrame.new(Vector3.new(0, 0, 6), part.Handle.Position) + self.ViewCamera = viewportCamera end end diff --git a/src/StarterPlayerScripts/UI/Windows/ChaWindow/init.luau b/src/StarterPlayerScripts/UI/Windows/ChaWindow/init.luau index d1d19c0..3fbae97 100644 --- a/src/StarterPlayerScripts/UI/Windows/ChaWindow/init.luau +++ b/src/StarterPlayerScripts/UI/Windows/ChaWindow/init.luau @@ -99,7 +99,7 @@ function ChaWindow:OnOpenWindow() UIWindow.OnOpenWindow(self) -- 自己进行数据处理 - local DataFolder = Utils:GetPlayerDataFolder(LocalPlayer):FindFirstChild("Equipment") + local DataFolder = Utils:WaitPlayerDataFolder(LocalPlayer):FindFirstChild("Equipment") local data = { Wearing = {}, Package = {}, diff --git a/src/StarterPlayerScripts/UI/Windows/EquipmentDetailWindow/init.luau b/src/StarterPlayerScripts/UI/Windows/EquipmentDetailWindow/init.luau index 87213cc..02bc048 100644 --- a/src/StarterPlayerScripts/UI/Windows/EquipmentDetailWindow/init.luau +++ b/src/StarterPlayerScripts/UI/Windows/EquipmentDetailWindow/init.luau @@ -24,6 +24,8 @@ local RE_WearEquipment = ReplicatedStorage.Events.RE_WearEquipment --> Variables local LocalPlayer = game.Players.LocalPlayer +local FolderEquipment = ReplicatedStorage:WaitForChild("Prefabs"):WaitForChild("Equipments") + -------------------------------------------------------------------------------- local EquipmentDetailWindow = {} @@ -46,6 +48,7 @@ function EquipmentDetailWindow:Init(UIManager: table, Data: table?) ["_tmpName"] = 0, ["_tmpQuality"] = 0, ["_tmpCombatValue"] = 0, + ["_imgView"] = 0, ["_goBottomPanel"] = 0, ["_btnUnwear"] = 0, @@ -111,6 +114,7 @@ function EquipmentDetailWindow:OnOpenWindow() -- 处理数据 local selfData = Utils:GetPlayerDataFolder(LocalPlayer):FindFirstChild("Equipment") + local equipmentInstance = selfData:FindFirstChild(self.Data.EquipmentUniqueId) local data = { EquipmentUniqueId = self.Data.EquipmentUniqueId, @@ -189,10 +193,25 @@ function EquipmentDetailWindow:OnOpenWindow() local equipmentInstance = Utils:GetPlayerDataFolder(LocalPlayer):FindFirstChild("Equipment"):FindFirstChild(self.Data.EquipmentUniqueId) local equipmentData = Utils:GetIdDataFromJson(JsonItemProp, equipmentInstance:GetAttribute("orgId")) self.Variables["_imgIcon"].Image = Localization:GetImageData(equipmentData.iconId) - self.Variables["_tmpName"].Text = Localization:GetLanguageData(equipmentData.textId) - self.Variables["_tmpQuality"].Text = equipmentInstance:GetAttribute("quality") + self.Variables["_tmpName"].Text = Localization:GetLanguageData(equipmentData.nameId) + self.Variables["_tmpQuality"].Text = Localization:GetColoredEquipmentQualityDesc(equipmentData.quality) self.Variables["_tmpCombatValue"].Text = 0 + local equipmentData = Utils:GetIdDataFromJson(JsonEquipment, equipmentInstance:GetAttribute("orgId")) + -- 模型 + local part = FolderEquipment:FindFirstChild(equipmentData.modelName):Clone() + part.Handle.Position = Vector3.new(0, 0, 0) + part.Handle.CFrame = CFrame.new(0, 0, 0) * CFrame.Angles(math.rad(90), 0, 0) + part.Parent = self.Variables["_imgView"] + self.Prefab = part + + -- 相机 + local viewportCamera = Instance.new("Camera") + self.Variables["_imgView"].CurrentCamera = viewportCamera + viewportCamera.Parent = self.Variables["_imgView"] + viewportCamera.CFrame = CFrame.new(Vector3.new(0, 0, 6), part.Handle.Position) + self.ViewCamera = viewportCamera + -- 穿戴状态按钮显示 self.Variables["_btnUnwear"].Visible = self.Data.base.wearing ~= 0 self.Variables["_btnWear"].Visible = self.Data.base.wearing == 0