/* 文件名:Equipment.nut 路径:User/Asset/Item/Equipment.nut 创建日期:2024-12-12 19:03 文件用途: */ //装备信息标签类(信息类) if (!GameItem.rawin("EquipmentInfoTag")) GameItem.EquipmentInfoTag <- null; //装备信息窗口 class GameItem.EquipmentInfo extends Yosin_Window { //装备 Equipment = null; //画布 Canvas = null; //稀有度边框颜色对应Idx表 //白装 蓝装 紫装 粉装 金装 红装 橙装 RarityFrameColorIdx = [0, 1, 2, 4, 6, 3, 5]; //稀有度对应名称 RarityNameTag = ["普通", "高级", "稀有", "神器", "史诗", "勇者", "传说"]; //稀有度对应颜色 RarityColor = [0xffffffff, 0xff68d5ed, 0xffb36bff, 0xffff00f0, 0xffffb100, 0xffff6666, 0xffff5500]; //品级对应的文字显示 PercentageText = ["最下级", "下级", "中级", "上级", "最上级"]; // 定义每个品级对应的数值范围边界 PercentageRangeBoundaries = [20, 40, 60, 80]; //交易类型对应的文字显示 TradeTypeText = ["自由交易", "不可交易", "封装", "账号绑定"]; //交易类型对应的文字颜色 TradeTypeColor = [0xffffffff, 0xffbb3332, 0xff4ba157, 0xffff5500]; //装备类型描述 GroupNameTag = ["武器", "防具", "饰品", "光环"]; constructor(Equipment) { this.Equipment = Equipment.weakref(); base.constructor(clock() + "EquipmentInfo" + Equipment.Idx, 0, 0, 0, 0, 0); local background = Yosin_NineBoxStretch(0, 0, 208, 600, "sprite/interface/lenheartwindowcommon.img", 213); AddUIChild(background); //210 Init(); } function Init() { Canvas = CL_CanvasObject(); Canvas.ResizeAndClear(210, 600); Canvas.SetFillBrush(sq_RGBA(59, 56, 57, 250)); Canvas.SetStrokeBrush(sq_RGBA(59, 56, 57, 250)); Canvas.BeginDraw(); //构造图标 及图标边框 if (Equipment.Icon) { local Icon = CL_SpriteFrameObject(Equipment.Icon.path, Equipment.Icon.index); Canvas.DrawSpriteFrame(Icon, 7, 7); local IconFrame = CL_SpriteFrameObject("sprite/item/iconmark.img", 62 + RarityFrameColorIdx[Equipment.Rarity]); Canvas.DrawSpriteFrame(IconFrame, 7, 7); } //绘制装备名称 if (Equipment.Name.len() > 0) { local EquName = FontAssetManager.GenerateNormal(Equipment.Name, true, { color = RarityColor[Equipment.Rarity] }); Canvas.DrawActor(EquName, 41, 7); } //绘制分割线 Canvas.DrawLine(3, 37, 207, 38); //绘制品级 //TODO 现在默认100 local Percentage = 94; //品级文字 local PercentageGradeText = FontAssetManager.GenerateNormal(GetPercentageText(Percentage), true, { color = sq_RGBA(255, 240, 0, 255) }); //百分比UI local PercentageUI = CL_SpriteFrameObject("sprite/interface/lenheartwindowcommon.img", 633); Canvas.DrawSpriteFrame(PercentageUI, 48, 49, PercentageUI.GetSize().w * (Percentage.tofloat() / 100.0)); local PercentageUIBG = CL_SpriteFrameObject("sprite/interface/lenheartwindowcommon.img", 632); Canvas.DrawSpriteFrame(PercentageUIBG, 47, 48); //百分比文字 local PercentageText = FontAssetManager.GenerateNormal(format("(%d%%)", Percentage), true, { color = sq_RGBA(161, 131, 74, 255) }); Canvas.DrawActor(PercentageGradeText, 6, 41); Canvas.DrawActor(PercentageText, 130, 41); //绘制稀有度名称 local RarityTagName = FontAssetManager.GenerateNormal(RarityNameTag[Equipment.Rarity], true, { color = RarityColor[Equipment.Rarity] }); Canvas.DrawActor(RarityTagName, 210 - RarityTagName.GetSize().w - 6, 41); //绘制重量 local WeightText = FontAssetManager.GenerateNormal((Equipment.Weight.tofloat() / 1000.0) + "kg", true, { color = sq_RGBA(161, 131, 74, 255) }); Canvas.DrawActor(WeightText, 6, 57); //绘制最低多少级可以使用 local MinUseLevelText = FontAssetManager.GenerateNormal(Equipment.Minimum_level + "级以上可以使用", true, { color = sq_RGBA(161, 131, 74, 255) }); Canvas.DrawActor(MinUseLevelText, 210 - MinUseLevelText.GetSize().w - 6, 57); //绘制是否封装 如果有主体属性读取 否则一律为封装 local IsPackage = Equipment.Property ? Equipment.Property.IsPackage : 0; local IsPackageText = FontAssetManager.GenerateNormal(TradeTypeText[IsPackage], true, { color = TradeTypeColor[IsPackage] }); Canvas.DrawActor(IsPackageText, 210 - IsPackageText.GetSize().w - 6, 73); //绘制装备类型 local GroupNameText = FontAssetManager.GenerateNormal(GameItem.EquipmentInfoTag.item_group_name_table[Equipment.GroupName], true, { color = sq_RGBA(194, 161, 56, 255) }); Canvas.DrawActor(GroupNameText, 210 - GroupNameText.GetSize().w - 6, 89); //绘制售价 local RealSellPrice = (Equipment.SellPrice == -1 ? (Equipment.Price == -1 ? 0 : Equipment.Price) : Equipment.SellPrice) / 5; local SellPriceText = FontAssetManager.GenerateNormal(RealSellPrice + "金币", true, { color = sq_RGBA(133, 121, 78, 255) }); Canvas.DrawActor(SellPriceText, 210 - SellPriceText.GetSize().w - 6, 105); //绘制耐久度 local DurabilityText = FontAssetManager.GenerateNormal("耐久度 " + (Equipment.Property ? Equipment.Property.Durability : Equipment.Durability) + "/" + Equipment.Durability, true, { color = sq_RGBA(133, 121, 80, 255) }); Canvas.DrawActor(DurabilityText, 6, 121); //绘制分割线 Canvas.DrawLine(3, 139, 207, 139); Canvas.EndDraw(); Addchild(Canvas); } // 根据数值获取对应的品级文字 function GetPercentageText(num) { if (num< PercentageRangeBoundaries[0]) { return PercentageText[0]; } for (local i = 0; i< PercentageRangeBoundaries.len(); i++) { if (num <= PercentageRangeBoundaries[i]) { return PercentageText[i + 1]; } } return PercentageText.top(); } } if (!getroottable().rawin("chongzaiflag")) { getroottable()["chongzaiflag"] <- true; } else { //遍历窗口队列 如果可见则调用Show for (local i = 0; i< _SYS_WINDOW_LIST_.len(); i++) { local Window = _SYS_WINDOW_LIST_[i]; Window.Visible = false; Window.RemoveSelf(); } TestStage(); } class GameItem.Equipment extends GameItem.Item { //装备ID Idx = -1; //装备名称 Name = ""; //装备类型 Type = -1; //装备槽位 SlotType = -1; //装备可穿戴等级 Minimum_level = -1; //装备等级组 Grade = null; //装备稀有度 Rarity = 0; //重量 Weight = 0; //装备组名 GroupName = "null"; //购买价格 Price = -1; //维修价格 RepairPrice = -1; //出售价格 SellPrice = -1; //耐久度 Durability = -1; //装备可穿戴职业 Job = 0; //装备图标 Icon = null; //动画 Animation_Job = null; //装备描述 Description = ""; //文件路径 DirPath = null; //光环特效 Aurora_effects = null; //装备属性 Property = null; constructor(...) { //直接裸构造 if (vargv.len() == 0) { } //通过参数构造 else if (vargv.len() == 1) { //通过ID构造 if (typeof vargv[0] == "integer") { local EquInfo = AssetManager.GetEquipment(vargv[0]); if (EquInfo) { Idx = vargv[0]; //名称 if (EquInfo.rawin("name")) Name = EquInfo["name"]; //类型 if (EquInfo.rawin("type")) GetRealEquipmentType(EquInfo["type"].path); //最低使用等级 if (EquInfo.rawin("minimum level")) Minimum_level = EquInfo["minimum level"]; //等级组 if (EquInfo.rawin("grade")) Grade = EquInfo["grade"]; //稀有度 if (EquInfo.rawin("rarity")) Rarity = EquInfo["rarity"]; //重量 if (EquInfo.rawin("weight")) Weight = EquInfo["weight"]; //组名 if (EquInfo.rawin("item group name")) GroupName = EquInfo["item group name"]; //购买价格 if (EquInfo.rawin("price")) Price = EquInfo["price"]; //维修价格 if (EquInfo.rawin("repair price")) RepairPrice = EquInfo["repair price"]; //出售价格 if (EquInfo.rawin("value")) SellPrice = EquInfo["value"]; //耐久度 if (EquInfo.rawin("durability")) Durability = EquInfo["durability"]; //职业 if (EquInfo.rawin("usable_job")) Job = EquInfo["usable_job"]; //图标 if (EquInfo.rawin("icon")) Icon = EquInfo["icon"]; if (EquInfo.rawin("Ani")) Animation_Job = EquInfo["Ani"]; if (EquInfo.rawin("DirPath")) DirPath = EquInfo["DirPath"]; if (EquInfo.rawin("aurora_effects")) Aurora_effects = EquInfo["aurora_effects"]; } } } } //设置真实装备类型 function SetRealEquipmentType(AType, BType) { SlotType = AType; Type = BType; } //获取真实装备类型 function GetRealEquipmentType(EType) { if (EType == "skin avatar") SetRealEquipmentType("skin", "avatar"); else if (EType == "weapon") SetRealEquipmentType("weapon", "equipment"); else if (EType == "hat avatar") SetRealEquipmentType("hat", "avatar"); else if (EType == "hair avatar") SetRealEquipmentType("hair", "avatar"); else if (EType == "coat avatar") SetRealEquipmentType("coat", "avatar"); else if (EType == "pants avatar") SetRealEquipmentType("pants", "avatar"); else if (EType == "waist avatar") SetRealEquipmentType("waist", "avatar"); else if (EType == "shoes avatar") SetRealEquipmentType("shoes", "avatar"); else if (EType == "breast avatar") SetRealEquipmentType("breast", "avatar"); else if (EType == "face avatar") SetRealEquipmentType("face", "avatar"); else if (EType == "aurora avatar") SetRealEquipmentType("aurora", "aurora"); } //获取装备信息窗口 function GetEquipmentInfoWindow() { if (Property) { } else { return GameItem.EquipmentInfo(this); } } //穿戴装备回调 function OnWearStart() { } //穿戴时 function OnWearProc(Dt) { } //卸载时 function OnWearEnd() { } }