/* 文件名:Equipment.nut 路径:User/Asset/Item/Equipment.nut 创建日期:2024-12-12 19:03 文件用途: */ //装备信息窗口 class GameItem.EquipmentInfo extends Yosin_Window { //装备 Equipment = null; //画布 Canvas = null; //稀有度边框颜色对应Idx表 RarityColorIdx = [ 0, //白装 普通 1, //蓝装 高级 2, //紫装 稀有 4, //粉装 神器 6, //金装 史诗 3, //红装 勇者 5, //橙装 传说 ]; //品级对应的文件显示 PercentageText = ["最下级", "下级", "中级", "上级", "最上级"]; // 定义每个品级对应的数值范围边界 PercentageRangeBoundaries = [20, 40, 60, 80]; constructor(Equipment) { this.Equipment = Equipment.weakref(); base.constructor(clock() + "EquipmentInfo" + Equipment.Idx, 0, 0, 0, 0, 0); local background = Yosin_NineBoxStretch(0, 0, 210, 600, "sprite/interface/lenheartwindowcommon.img", 213); AddUIChild(background); //210 Init(); } function Init() { Canvas = CL_CanvasObject(); Canvas.ResizeAndClear(210, 600); Canvas.SetFillBrush(sq_RGBA(38, 38, 38, 250)); Canvas.SetStrokeBrush(sq_RGBA(38, 38, 38, 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 + RarityColorIdx[Equipment.Rarity]); Canvas.DrawSpriteFrame(IconFrame, 7, 7); } //绘制装备名称 if (Equipment.Name.len() > 0) { local EquName = FontAssetManager.GenerateNormal(Equipment.Name, true, { color = sq_RGBA(255, 0, 255, 255) }); Canvas.DrawActor(EquName, 41, 7); } //绘制分割线 Canvas.DrawLine(3, 37, 207, 38); //绘制品级 //TODO 现在默认100 local Percentage = 100; local PercentageGradeText = FontAssetManager.GenerateNormal(GetPercentageText(Percentage), true, { color = sq_RGBA(255, 240, 0, 255) }); local PercentageText = FontAssetManager.GenerateNormal(format("(%d%%)", Percentage), true, { color = sq_RGBA(161, 131, 74, 255) }); Canvas.DrawActor(PercentageGradeText, 6, 41); Canvas.DrawActor(PercentageText, 52, 41); 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; //装备可穿戴职业 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("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() { } }