88 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
			
		
		
	
	
			88 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
| /*
 | |
| 文件名:NpcObjectClass.nut
 | |
| 路径:User/Object/ActiveObject/NpcObjectClass.nut
 | |
| 创建日期:2024-12-28	11:11
 | |
| 文件用途:NPC类
 | |
| */
 | |
| class GameObject.NPC extends GameObject.BaseClass {
 | |
| 
 | |
|     //ID
 | |
|     Id = 0;
 | |
|     //信息
 | |
|     Info = null;
 | |
|     //Ani动画
 | |
|     Ani = null;
 | |
|     //名字
 | |
|     Name = null;
 | |
| 
 | |
|     //识别高度
 | |
|     IdentifyHeight = 0;
 | |
|     //识别宽度
 | |
|     IdentifyWidth = 0;
 | |
| 
 | |
|     //是否悬停
 | |
|     IsHover = false;
 | |
| 
 | |
|     function _typeof() {
 | |
|         return "npc";
 | |
|     }
 | |
| 
 | |
|     //初始化装配
 | |
|     function InitAssembly(IndexKey, SetKey, Func) {
 | |
|         if (Info.rawin(IndexKey)) {
 | |
|             this[SetKey] = Func(Info[IndexKey]);
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     constructor(Id) {
 | |
|         this.Id = Id;
 | |
|         base.constructor();
 | |
|         Info = AssetManager.GetNpc(Id);
 | |
|         if (Info) {
 | |
|             //构造Ani
 | |
|             InitAssembly("field_animation", "Ani", function(Data) {
 | |
|                 local Ani = Animation(Data);
 | |
|                 Addchild(Ani);
 | |
|                 local Size = Ani.GetSize();
 | |
|                 IdentifyHeight = Size.h;
 | |
|                 IdentifyWidth = Size.w;
 | |
|                 return Ani;
 | |
|             });
 | |
|             //构造名字
 | |
|             InitAssembly("name", "Name", function(Data) {
 | |
|                 //创建名字对象
 | |
|                 local NameObj = FontAssetManager.GenerateNormal(Data, true, {
 | |
|                     color = sq_RGBA(242, 209, 175, 255),
 | |
|                 });
 | |
|                 local Height = Ani ? Ani.GetSize().h : 0;
 | |
|                 NameObj.SetPosition(0 - (NameObj.GetSize().w / 2), -Height - 25);
 | |
|                 NameObj.SetZOrder(80000);
 | |
|                 Addchild(NameObj);
 | |
|                 return NameObj;
 | |
|             });
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     function OnMouseLogic(MouseState, Wheel, MousePos_X, MousePos_Y) {
 | |
|         //悬停事件
 | |
|         if (!IsHover) {
 | |
|             IsHover = true;
 | |
|             //设置Ani描边
 | |
|             Ani.SetOutline(true, sq_RGBA(155, 255, 0, 250));
 | |
|             //设置鼠标
 | |
|             IMouse.ChangeActive(120, 4);
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     function OutMouseLogic() {
 | |
|         //悬停事件
 | |
|         if (IsHover) {
 | |
|             IsHover = false;
 | |
|             Ani.SetOutline(false);
 | |
|             //设置鼠标
 | |
|             IMouse.Change(0);
 | |
|         }
 | |
|     }
 | |
| 
 | |
| 
 | |
| } |