//------------------------------------------------------------------------------------------------------- /** * @brief 构建实体创建数据 * @param type 实体类型 * @param data 服务器数据 */ public static EntityCreateData BuildCreateEntityData(EntityType type, GameCmd.t_MapUserData data) { EntityCreateData entityData = new EntityCreateData(); // 构建EntityCreateData entityData.ID = data.userdata.dwUserID; if (UserData.IsMainRoleID(data.userdata.dwUserID)) { entityData.strName = UserData.CurrentRole.name; } else { entityData.strName = ""; } switch (type) { case EntityType.EntityType_Player: { entityData.PropList = new EntityAttr[(int)PlayerProp.End - (int)EntityProp.Begin]; entityData.ViewList = new EntityViewProp[(int)Client.EquipPos.EquipPos_Max]; BuildPlayerPropList(data, ref entityData.PropList); // 根据时装数据决定是否使用外观 BuildPlayerViewProp(data, ref entityData.ViewList); break; } } return(entityData); }
public static EntityCreateData BuildRobotEntityData(uint dwTempID, uint baseID, uint job, uint level, string name = "", uint moveSpeed = 1) { EntityCreateData entityData = new EntityCreateData(); entityData.ID = dwTempID; table.NpcDataBase npcdb = GameTableManager.Instance.GetTableItem <table.NpcDataBase>(baseID); if (npcdb != null) { if (string.IsNullOrEmpty(name)) { entityData.strName = npcdb.strName; } else { entityData.strName = name; } } entityData.PropList = new EntityAttr[(int)RobotProp.End - (int)EntityProp.Begin]; entityData.ViewList = new EntityViewProp[(int)Client.EquipPos.EquipPos_Max]; table.RobotDataBase robotdata = GameTableManager.Instance.GetTableItem <table.RobotDataBase>(job, (int)level); if (robotdata != null) { BuildRobotPropList(robotdata, npcdb, moveSpeed, ref entityData.PropList); BuildRobotViewProp(robotdata, ref entityData.ViewList); } return(entityData); }
public int SetDisplayData(uint uID) { IEntitySystem es = ClientGlobal.Instance().GetEntitySystem(); table.NpcDataBase npctable = GameTableManager.Instance.GetTableItem <table.NpcDataBase>(uID); if (npctable == null) { return(0); } GameCmd.t_MapNpcDataPos npcdata = new GameCmd.t_MapNpcDataPos(); npcdata.mapnpcdata = new GameCmd.t_MapNpcData(); npcdata.mapnpcdata.npcdata = new GameCmd.t_NpcData(); npcdata.mapnpcdata.npcdata.dwBaseID = uID; npcdata.mapnpcdata.npcdata.dwTempID = this.m_dwID; npcdata.mapnpcdata.npcdata.movespeed = 600; EntityCreateData data = RoleUtil.BuildCreateEntityData(EntityType.EntityType_NPC, npcdata, 0); IEntity npc = es.CreateEntity(EntityType.EntityType_NPC, data, true) as INPC; //ISkillPart skillPart = npc.GetPart(EntityPart.Skill) as ISkillPart; //skillPart.ReqNpcUseSkill(208); m_pEntity = npc; return(1); }
public void Execute(stMainUserDataUserCmd_S cmd) { //MainRole.Instance.MainData = cmd.data; // TODO: 后面再来处理 IEntitySystem es = ClientGlobal.Instance().GetEntitySystem(); if (es == null) { Engine.Utility.Log.Error("严重错误:EntitySystem is null!"); return; } EntityCreateData data = new EntityCreateData(); data.PropList = new EntityAttr[(int)PlayerProp.End - (int)EntityProp.Begin]; data.ID = cmd.data.dwUserID; RoleUtil.BuildPlayerPropList(cmd.data, ref data.PropList); IPlayer player = es.FindPlayer(cmd.data.dwUserID); if (player != null) { player.UpdateProp(data); DataManager.Manager <UIPanelManager>().SendMsg(PanelID.MainPanel, UIMsgID.eSetRoleProperty, player); } }
///////////////////////////////////////////////////////////////////////////////////////////////////////// //------------------------------------------------------------------------------------------------------- /** * @brief 构建实体创建数据 * @param type 实体类型 * @param data 服务器数据 */ public EntityCreateData BuildCreateEntityData(EntityType type, uint nBaseID, int nState) { EntityCreateData entityData = new EntityCreateData(); // 构建EntityCreateData entityData.ID = ++m_uEntityID; entityData.strName = ""; switch (type) { case EntityType.EntityType_Plant: { entityData.PropList = new EntityAttr[(int)PlantProp.End - (int)EntityProp.Begin]; int index = 0; entityData.PropList[index++] = new EntityAttr((int)HomeProp.State, nState); entityData.PropList[index++] = new EntityAttr((int)EntityProp.BaseID, (int)nBaseID); break; } case EntityType.EntityType_Animal: { entityData.PropList = new EntityAttr[(int)AnimalProp.End - (int)EntityProp.Begin]; int index = 0; entityData.PropList[index++] = new EntityAttr((int)HomeProp.State, nState); entityData.PropList[index++] = new EntityAttr((int)EntityProp.BaseID, (int)nBaseID); break; } case EntityType.EntityType_Tree: { entityData.PropList = new EntityAttr[(int)TreeProp.End - (int)EntityProp.Begin]; int index = 0; entityData.PropList[index++] = new EntityAttr((int)HomeProp.State, nState); entityData.PropList[index++] = new EntityAttr((int)EntityProp.BaseID, (int)nBaseID); break; } case EntityType.EntityType_Minerals: { entityData.PropList = new EntityAttr[(int)MineralsProp.End - (int)EntityProp.Begin]; int index = 0; entityData.PropList[index++] = new EntityAttr((int)HomeProp.State, nState); entityData.PropList[index++] = new EntityAttr((int)EntityProp.BaseID, (int)nBaseID); break; } case EntityType.EntityType_Soil: { entityData.PropList = new EntityAttr[(int)SoilProp.End - (int)EntityProp.Begin]; int index = 0; entityData.PropList[index++] = new EntityAttr((int)HomeProp.State, nState); entityData.PropList[index++] = new EntityAttr((int)EntityProp.BaseID, (int)nBaseID); break; } } return(entityData); }
//bool isHide = false; //public bool IsHide //{ // set // { // isHide = value; // } // get // { // return isHide; // } //} public override bool Create(EntityCreateData data, ColliderCheckType colliderCheckType) { bool bRet = base.Create(data, colliderCheckType); // 创建状态机 CreateStateMachine(); return(bRet); }
//------------------------------------------------------------------------------------------------------- public virtual bool CreateEntityView(EntityCreateData data) { if (m_EntityView == null) { m_EntityView = new EntityView(this, data); } return(true); }
//------------------------------------------------------------------------------------------------------- /** * @brief 添加玩家(木偶) * @param strName 名称 * @param nJob 职业 * @param nSex 性别 * @param propList 外观属性 * @param bMainHost 是否是主角对象 */ public IPuppet AddPuppet(string strName, int nJob, int nSex, EntityViewProp[] propList, bool bMainHost = false) { EntityCreateData data = new EntityCreateData(); data.ID = ++m_uEntityID; data.strName = strName; int speed = 0; Client.IPlayer player = ClientGlobal.Instance().MainPlayer; if (player != null) { speed = player.GetProp((int)WorldObjProp.MoveSpeed); } data.PropList = new EntityAttr[(int)PuppetProp.End - (int)EntityProp.Begin]; int index = 0; data.PropList[index++] = new EntityAttr((int)PuppetProp.Job, nJob); data.PropList[index++] = new EntityAttr((int)PuppetProp.Sex, nSex); data.PropList[index++] = new EntityAttr((int)EntityProp.BaseID, 0); data.PropList[index++] = new EntityAttr((int)WorldObjProp.MoveSpeed, speed); data.ViewList = propList; IEntitySystem es = ClientGlobal.Instance().GetEntitySystem(); if (es == null) { Engine.Utility.Log.Error("严重错误:EntitySystem is null!"); return(null); } IPuppet entity = es.CreateEntity(EntityType.EntityType_Puppet, data) as IPuppet; if (entity == null) { Engine.Utility.Log.Error("AddEntity:创建家园对象失败!"); return(null); } if (bMainHost) { IControllerSystem cs = ClientGlobal.Instance().GetControllerSystem(); if (cs == null) { return(null); } cs.GetActiveCtrl().SetHost(entity); CameraFollow.Instance.target = entity; } m_dicPuppet.Add((int)entity.GetID(), entity); return(entity); }
//------------------------------------------------------------------------------------------------------- public override bool CreateEntityView(EntityCreateData data) { base.CreateEntityView(data); if (GetEntityType() != EntityType.EntityType_Box) { Engine.Utility.Log.Error("Box:CreateEntityView failed:{0}", GetName()); return(false); } int nID = GetProp((int)EntityProp.BaseID); string strResName = ""; var table_data = GameTableManager.Instance.GetTableItem <table.ItemDataBase>((uint)nID); if (table_data == null) { Engine.Utility.Log.Error("不存在这个NPC: " + nID); return(false); } if (nID == 0) { SetName(table_data.itemName + "X" + GetProp((int)BoxProp.Number)); } else { SetName(table_data.itemName); } table.ResourceDataBase resDB = GameTableManager.Instance.GetTableItem <table.ResourceDataBase>(table_data.dropIcon); if (resDB == null) { Engine.Utility.Log.Error("Box:找不到Box模型资源路径配置{0}", table_data.dropIcon); return(false); } strResName = resDB.strPath; string strPath, strFileName, strExt, strFileNameNoExt; Engine.Utility.StringUtility.ParseFileName(ref strResName, out strPath, out strFileName, out strFileNameNoExt, out strExt); m_strObjName = strFileNameNoExt; if (data.bImmediate) { // 立即创建 if (!m_EntityView.Create(ref strResName, OnCreateRenderObj)) { Engine.Utility.Log.Error("CreateEntityView failed:{0}", strResName); } } else { EntityViewCreator.Instance.AddView(GetUID(), m_EntityView, ref strResName, OnCreateRenderObj); } return(false); }
public override bool Create(EntityCreateData data, ColliderCheckType colliderCheckType) { // 设置属性 //InitProp(); //ApplyProp(data); //// 创建外观对象 //CreateEntityView(data); return(base.Create(data, colliderCheckType)); }
public virtual bool Create(EntityCreateData data, ColliderCheckType colliderCheckType) { if (data == null) { Engine.Utility.Log.Error("Create entity failed!"); return(false); } //m_strName = data.strName; m_ColliderCheckType = colliderCheckType; return(true); }
public override bool CreateEntityView(EntityCreateData data) { base.CreateEntityView(data); if (GetEntityType() != EntityType.EntityType_Monster) { Engine.Utility.Log.Error("CreateEntityView failed:{0}", GetName()); return(false); } int nID = GetProp((int)EntityProp.BaseID); string strResName = ""; if (nID == 0) { // 则使用默认数据 // strResName = data.strName; } else { var table_data = GameTableManager.Instance.GetTableItem <table.NpcDataBase>((uint)nID); if (table_data == null) { Engine.Utility.Log.Error("不存在这个NPC: " + nID); return(false); } table.ResourceDataBase resDB = GameTableManager.Instance.GetTableItem <table.ResourceDataBase>(table_data.dwModelSet); if (resDB == null) { Engine.Utility.Log.Error("NPC:找不到NPC模型资源路径配置{0}", table_data.dwModelSet); return(false); } strResName = resDB.strPath; SetName(table_data.strName); } string strPath, strFileName, strExt, strFileNameNoExt; Engine.Utility.StringUtility.ParseFileName(ref strResName, out strPath, out strFileName, out strFileNameNoExt, out strExt); m_strObjName = strFileNameNoExt; // TODO: 根据配置表读取数据 //if (!m_EntityView.Create(ref strResName, OnCreateRenderObj)) //{ // Engine.Utility.Log.Error("CreateEntityView failed:{0}", strResName); //} EntityViewCreator.Instance.AddView(GetUID(), m_EntityView, ref strResName, OnCreateRenderObj); return(false); }
public IEntity CreateEntity(EntityType etype, EntityCreateData data) { if (!CheckEntityType(etype)) { return(null); } // 设置属性 IEntity en = CreateEntityObj(etype, data); if (en != null) { en.UpdateProp(data); // 设置属性 } return(en); }
public override bool CreateEntityView(EntityCreateData data) { base.CreateEntityView(data); //if (GetEntityType() != EntityType.EntityType_NPC) //{ // Engine.Utility.Log.Error("NPC:CreateEntityView failed:{0}", GetName()); // return false; //} int nID = GetProp((int)EntityProp.BaseID); string strResName = ""; if (nID == 0) { // 则使用默认数据 // strResName = data.strName; } else { var table_data = GameTableManager.Instance.GetTableItem <table.HomeLandViewDatabase>((uint)nID, GetProp((int)HomeProp.State)); if (table_data == null) { Engine.Utility.Log.Error("不存在这个对象: " + nID); return(false); } table.ResourceDataBase resDB = GameTableManager.Instance.GetTableItem <table.ResourceDataBase>((uint)table_data.dwModelID); if (resDB == null) { Engine.Utility.Log.Error("Homeland:找不到Homeland模型资源路径配置{0}", table_data.dwModelID); return(false); } strResName = resDB.strPath; } SetName(data.strName); // TODO: 根据配置表读取数据 if (!m_EntityView.Create(ref strResName, OnCreateRenderObj)) { Engine.Utility.Log.Error("CreateEntityView failed:{0}", strResName); } return(false); }
//------------------------------------------------------------------------------------------------------- public override bool CreateEntityView(EntityCreateData data) { base.CreateEntityView(data); //if (GetEntityType() != EntityType.EntityType_NPC) //{ // Engine.Utility.Log.Error("NPC:CreateEntityView failed:{0}", GetName()); // return false; //} int nID = GetProp((int)EntityProp.BaseID); string strResName = ""; if (nID == 0) { // 则使用默认数据 // strResName = data.strName; } else { int nModepathID = GameTableManager.Instance.GetClientGlobalConst <int>("Homeland", "PastureObjPath"); table.ResourceDataBase resDB = GameTableManager.Instance.GetTableItem <table.ResourceDataBase>((uint)nModepathID); if (resDB == null) { Engine.Utility.Log.Error("Homeland:找不到Homeland模型资源路径配置{0}", nModepathID); return(false); } strResName = resDB.strPath; } SetName(data.strName); string strPath, strFileName, strExt, strFileNameNoExt; Engine.Utility.StringUtility.ParseFileName(ref strResName, out strPath, out strFileName, out strFileNameNoExt, out strExt); m_strObjName = strFileNameNoExt; // TODO: 根据配置表读取数据 //if (!m_EntityView.Create(ref strResName, OnCreateRenderObj)) //{ // Engine.Utility.Log.Error("CreateEntityView failed:{0}", strResName); //} EntityViewCreator.Instance.AddView(GetUID(), m_EntityView, ref strResName, OnCreateRenderObj); return(false); }
public override bool Create(EntityCreateData data, ColliderCheckType colliderCheckType) { // 设置属性 InitProp(); ApplyProp(data); // 创建组件 CreateCommpent(); // 初始化逻辑部件 CreatePart(); // 创建外观对象 CreateEntityView(data); // 创建状态机 //CreateStateMachine(); return(base.Create(data, colliderCheckType)); }
private EntityCreateData GetEntityCreateData(Entity entity) { var data = new EntityCreateData(); var dataList = new List <EData>(); foreach (var comp in entity.Components) { if (comp is NetComponent) { var netComp = (NetComponent)comp; if (netComp.HasEData) { dataList.Add(netComp.EntityData); } } } data.Data = dataList.ToArray(); return(data); }
//------------------------------------------------------------------------------------------------------- // 创建实体 /** * @brief 创建实体 * @param etype 实体类型 * @param data 实体数据 * @param bImmediate 是否立即创建 */ public IEntity CreateEntity(EntityType etype, EntityCreateData data, bool bImmediate = false) { data.bImmediate = bImmediate; if (bOnlyCreateMainPlayer) { if (data.bMainPlayer) { return(EntityFactory.Instance().CreateEntity(etype, data)); } else { return(null); } } else { return(EntityFactory.Instance().CreateEntity(etype, data)); } }
//------------------------------------------------------------------------------------------------------- /** * @brief 构建实体创建数据 * @param type 实体类型 * @param data 服务器数据 */ public static EntityCreateData BuildCreateEntityData(EntityType type, t_MapObjectData data) { EntityCreateData entityData = new EntityCreateData(); // 构建EntityCreateData entityData.ID = data.qwThisID; entityData.strName = ""; switch (type) { case EntityType.EntityType_Box: { entityData.PropList = new EntityAttr[(int)BoxProp.End - (int)EntityProp.Begin]; BuildBoxPropList(data, ref entityData.PropList); break; } } return(entityData); }
//------------------------------------------------------------------------------------------------------- public void ApplyProp(EntityCreateData data) { if (data == null) { return; } if (data.PropList == null) { return; } m_uID = data.ID; for (int i = 0; i < data.PropList.Length; ++i) { if (data.PropList[i] != null) { SetProp(data.PropList[i].nPropIndex, data.PropList[i].value); } } }
public void OnAddPet(stAddPetUserCmd_S cmd) { if (cmd.action == (uint)AddPetAction.AddPetAction_Refresh) { IEntitySystem es = ClientGlobal.Instance().GetEntitySystem(); if (es == null) { Engine.Utility.Log.Error("严重错误:EntitySystem is null!"); return; } EntityCreateData data = new EntityCreateData(); data.PropList = new EntityAttr[(int)PetProp.End - (int)EntityProp.Begin]; data.ID = cmd.obj.id; RoleUtil.BuildPetPropListByPetData(cmd.obj, ref data.PropList); IPet pet = es.FindPet(cmd.obj.id); if (pet != null) { pet.UpdateProp(data); pet.SetExtraData(cmd.obj); DataManager.Manager <PetDataManager>().RefreshPetProp(); } else { Log.Error("pet entity create failed !!!"); } } else { AddPet(cmd.obj); PetDataBase pdb = GameTableManager.Instance.GetTableItem <PetDataBase>(cmd.obj.base_id); if (pdb != null) { string tips = string.Format("{0}{1}", CommonData.GetLocalString("获得珍兽"), pdb.petName); TipsManager.Instance.ShowTips(tips); string txt = DataManager.Manager <TextManager>().GetLocalFormatText(LocalTextType.Talk_System_huodezhanghun, pdb.petName); ChatDataManager.SendToChatSystem(txt); } } }
public void Execute(GameCmd.stRobotLevelUpMagicUserCmd_S cmd) { Client.IEntitySystem es = Client.ClientGlobal.Instance().GetEntitySystem(); if (es == null) { return; } Client.IRobot robot = es.FindRobot(cmd.npc_id); if (robot == null) { return; } uint baseID = (uint)robot.GetProp((int)Client.EntityProp.BaseID); uint job = (uint)robot.GetProp((int)Client.RobotProp.Job); uint level = (uint)robot.GetProp((int)Client.CreatureProp.Level); string name = robot.GetName(); EntityCreateData createData = RoleUtil.BuildRobotEntityData(cmd.npc_id, baseID, job, level, name); stPropUpdate lvprop = new stPropUpdate(); stPropUpdate prop = new stPropUpdate(); prop.uid = robot.GetUID(); lvprop.uid = robot.GetUID(); prop.nPropIndex = (int)CreatureProp.Hp; lvprop.nPropIndex = (int)CreatureProp.Level; prop.oldValue = robot.GetProp((int)CreatureProp.Hp); lvprop.oldValue = robot.GetProp((int)CreatureProp.Level); robot.UpdateProp(createData); prop.newValue = robot.GetProp((int)CreatureProp.Hp); lvprop.newValue = robot.GetProp((int)CreatureProp.Level); Engine.Utility.EventEngine.Instance().DispatchEvent((int)GameEventID.ENTITYSYSTEM_HPUPDATE, prop); Engine.Utility.EventEngine.Instance().DispatchEvent((int)GameEventID.ENTITYSYSTEM_PROPUPDATE, lvprop); }
//------------------------------------------------------------------------------------------------------- /** * @brief 构建实体创建数据 * @param type 实体类型 * @param data 服务器数据 */ public static EntityCreateData BuildCreateEntityData(EntityType type, GameCmd.t_MapNpcDataPos data, uint master_id) { if (type == EntityType.EntityTYpe_Robot) { t_NpcData npcdata = data.mapnpcdata.npcdata; return(BuildRobotEntityData(npcdata.dwTempID, npcdata.dwBaseID, npcdata.job, npcdata.level, npcdata.name, npcdata.movespeed)); } EntityCreateData entityData = new EntityCreateData(); // 构建EntityCreateData entityData.ID = data.mapnpcdata.npcdata.dwTempID; entityData.strName = data.mapnpcdata.npcdata.name; switch (type) { case EntityType.EntityType_Monster: { entityData.PropList = new EntityAttr[(int)NPCProp.End - (int)EntityProp.Begin]; entityData.ViewList = new EntityViewProp[(int)Client.EquipPos.EquipPos_Max]; BuildNPCPropList(data, ref entityData.PropList); break; } case EntityType.EntityType_NPC: { entityData.PropList = new EntityAttr[(int)NPCProp.End - (int)EntityProp.Begin]; entityData.ViewList = new EntityViewProp[(int)Client.EquipPos.EquipPos_Max]; BuildNPCPropList(data, ref entityData.PropList, master_id); // 根据时装数据决定是否使用外观 BuildNPCViewProp(data, ref entityData.ViewList); break; } } return(entityData); }
//添加实体 public IEntity AddEntity(string strName, EntityType type, uint nBaseID, int nState) { EntityCreateData data = BuildCreateEntityData(type, nBaseID, nState); if (data == null) { return(null); } data.strName = strName; IEntitySystem es = ClientGlobal.Instance().GetEntitySystem(); if (es == null) { Engine.Utility.Log.Error("严重错误:EntitySystem is null!"); return(null); } IEntity entity = es.CreateEntity(type, data); if (entity == null) { Engine.Utility.Log.Error("AddEntity:创建家园对象失败!"); return(null); } if (entity.GetEntityType() == EntityType.EntityType_Animal) { m_AnimalManager.AddAnimal(entity as IAnimal); } m_dicEntity.Add((int)entity.GetID(), entity); return(entity); }
private IEntity CreateEntityObj(EntityType etype, EntityCreateData data) { IEntity en = null; switch (etype) { case EntityType.EntityType_Player: { Player player = new Player(); if (player != null) { player.SetUID(MakeUID(etype, data.ID)); EntityManager.Instance().AddEntity(player); if (data.bMainPlayer) { EntitySystem.m_ClientGlobal.MainPlayer = player; } player.Create(data, ColliderCheckType.ColliderCheckType_CloseTerrain | ColliderCheckType.ColliderCheckType_Wall); } en = player; break; } case EntityType.EntityType_Monster: { Monster monster = new Monster(); if (monster != null) { monster.SetUID(MakeUID(etype, data.ID)); EntityManager.Instance().AddEntity(monster); monster.Create(data, ColliderCheckType.ColliderCheckType_CloseTerrain | ColliderCheckType.ColliderCheckType_Wall); } en = monster; break; } case EntityType.EntityType_NPC: { NPC npc = new NPC(); if (npc != null) { npc.SetUID(MakeUID(etype, data.ID)); EntityManager.Instance().AddEntity(npc); npc.Create(data, ColliderCheckType.ColliderCheckType_CloseTerrain | ColliderCheckType.ColliderCheckType_Wall); } en = npc; break; } case EntityType.EntityTYpe_Robot: { Robot robot = new Robot(); if (robot != null) { robot.SetUID(MakeUID(etype, data.ID)); EntityManager.Instance().AddEntity(robot); robot.Create(data, ColliderCheckType.ColliderCheckType_CloseTerrain | ColliderCheckType.ColliderCheckType_Wall); } en = robot; break; } case EntityType.EntityType_Item: // 物品 { Item item = new Item(); if (item != null) { item.SetUID(MakeUID(etype, data.ID)); EntityManager.Instance().AddEntity(item); item.Create(data, ColliderCheckType.ColliderCheckType_null); } en = item; break; } case EntityType.EntityType_Pet: // 宠物 { Pet pet = new Pet(); if (pet != null) { pet.SetUID(MakeUID(etype, data.ID)); EntityManager.Instance().AddEntity(pet); pet.Create(data, ColliderCheckType.ColliderCheckType_CloseTerrain | ColliderCheckType.ColliderCheckType_Wall); } en = pet; break; } ///////////////////////////////////////////////////////////////////////////////////////////////////////// // 家园对象 case EntityType.EntityType_Plant: // 植物 { Plant plant = new Plant(); if (plant != null) { plant.SetUID(MakeUID(etype, data.ID)); EntityManager.Instance().AddEntity(plant); plant.Create(data, ColliderCheckType.ColliderCheckType_CloseTerrain | ColliderCheckType.ColliderCheckType_Wall); } en = plant; break; } case EntityType.EntityType_Animal: // 动物 { Animal animal = new Animal(); if (animal != null) { animal.SetUID(MakeUID(etype, data.ID)); EntityManager.Instance().AddEntity(animal); animal.Create(data, ColliderCheckType.ColliderCheckType_CloseTerrain | ColliderCheckType.ColliderCheckType_Wall); } en = animal; break; } case EntityType.EntityType_Tree: // 许愿树 { Tree tree = new Tree(); if (tree != null) { tree.SetUID(MakeUID(etype, data.ID)); EntityManager.Instance().AddEntity(tree); tree.Create(data, ColliderCheckType.ColliderCheckType_CloseTerrain | ColliderCheckType.ColliderCheckType_Wall); } en = tree; break; } case EntityType.EntityType_Minerals: // 矿产 { Minerals mine = new Minerals(); if (mine != null) { mine.SetUID(MakeUID(etype, data.ID)); EntityManager.Instance().AddEntity(mine); mine.Create(data, ColliderCheckType.ColliderCheckType_CloseTerrain | ColliderCheckType.ColliderCheckType_Wall); } en = mine; break; } case EntityType.EntityType_Soil: // 土地 { Soil soil = new Soil(); if (soil != null) { soil.SetUID(MakeUID(etype, data.ID)); EntityManager.Instance().AddEntity(soil); soil.Create(data, ColliderCheckType.ColliderCheckType_CloseTerrain | ColliderCheckType.ColliderCheckType_Wall); } en = soil; break; } case EntityType.EntityType_Puppet: // 木偶 { Puppet puppet = new Puppet(); if (puppet != null) { puppet.SetUID(MakeUID(etype, data.ID)); EntityManager.Instance().AddEntity(puppet); puppet.Create(data, ColliderCheckType.ColliderCheckType_CloseTerrain | ColliderCheckType.ColliderCheckType_Wall); } en = puppet; break; } case EntityType.EntityType_Box: { //UnityEngine.Sprite sp; Box box = new Box(); if (box != null) { box.SetUID(MakeUID(etype, data.ID)); EntityManager.Instance().AddEntity(box); box.Create(data, ColliderCheckType.ColliderCheckType_CloseTerrain | ColliderCheckType.ColliderCheckType_Wall); } en = box; break; } } //if(en!=null) //{ // Client.stCreateEntity createEntity = new Client.stCreateEntity(); // createEntity.uid = en.GetUID(); // Engine.Utility.EventEngine.Instance().DispatchEvent((int)GameEventID.ENTITYSYSTEM_CREATEENTITY, createEntity); //} return(en); }
private void OnCreateRenderObj(Engine.IRenderObj obj, object param) { // 加载部件 if (m_EntityView == null) { return; } //if (m_Data == null) //{ // Engine.Utility.Log.Error("m_data is null"); // return; //} //if (m_Data.ViewList == null) //{ // return; //} ////string strResName = ""; //for (int i = 0; i < m_Data.ViewList.Length; ++i) //{ // if (m_Data.ViewList[i] == null) // { // continue; // } // if (m_Data.ViewList[i].nPos == (int)EquipPos.EquipPos_Body) // { // var table_data = GameTableManager.Instance.GetTableItem<table.SuitDataBase>((uint)m_Data.ViewList[i].value); // m_EntityView.AddSuitData(EquipPos.EquipPos_Body, m_Data.ViewList[i].value, table_data == null ? 0 : (int)table_data.resid, obj); // } // if (m_Data.ViewList[i].nPos != (int)EquipPos.EquipPos_Body) // { // // 读取时装配置表,挂接装备 // ChangeEquip changeEquip = new ChangeEquip(); // changeEquip.pos = (EquipPos)m_Data.ViewList[i].nPos; // // 武器 // table.SuitDataBase table_data = null; // int nSuitID = m_Data.ViewList[i].value; // if (changeEquip.pos == EquipPos.EquipPos_Weapon) // { // if (m_Data.ViewList[i].value == 0) // { // table_data = GameTableManager.Instance.GetTableItem<table.SuitDataBase>((uint)m_Data.ViewList[i].value); // if (table_data == null) // { // var role_data = table.SelectRoleDataBase.Where((GameCmd.enumProfession)GetProp((int)PuppetProp.Job), (GameCmd.enmCharSex)GetProp((int)PuppetProp.Sex)); // if (role_data == null) // { // Engine.Utility.Log.Error("OnCreateRenderObj:job{0}或者sex{1}数据非法!", GetProp((int)PuppetProp.Job), GetProp((int)PuppetProp.Sex)); // return; // } // table_data = GameTableManager.Instance.GetTableItem<table.SuitDataBase>((uint)role_data.weaponPath); // } // } // else // { // table_data = GameTableManager.Instance.GetTableItem<table.SuitDataBase>((uint)m_Data.ViewList[i].value); // } // } // else // { // table_data = GameTableManager.Instance.GetTableItem<table.SuitDataBase>((uint)m_Data.ViewList[i].value); // } // if (table_data != null) // { // nSuitID = (int)table_data.base_id; // } // else // { // Engine.Utility.Log.Error("OnCreateRenderObj:{0}位置 资源{1}找不到资源数据!", changeEquip.pos, m_Data.ViewList[i].value); // return; // } // changeEquip.nSuitID = nSuitID; // changeEquip.nLayer = m_Data.nLayer; // SendMessage(EntityMessage.EntityCommand_ChangeEquip, changeEquip); // } //} m_Data = null; // 释放资源 // 根据全局配置设置阴影 int nShadowLevel = EntitySystem.m_ClientGlobal.gameOption.GetInt("Render", "shadow", 1); m_EntityView.SetShadowLevel(nShadowLevel); // 播放下动画 PlayAction(m_EntityView.GetCurAniName()); Client.stCreateEntity createEntity = new Client.stCreateEntity(); createEntity.uid = GetUID(); Engine.Utility.EventEngine.Instance().DispatchEvent((int)GameEventID.ENTITYSYSTEM_CREATEENTITY, createEntity); }
//------------------------------------------------------------------------------------------------------- public override bool CreateEntityView(EntityCreateData data) { base.CreateEntityView(data); m_Data = data; if (GetEntityType() != EntityType.EntityType_Puppet) { Engine.Utility.Log.Error("CreateEntityView failed:{0}", GetName()); return(false); } //int nID = GetProp((int)EntityProp.BaseID); string strResName = ""; //if (nID == 0) //{ // // 则使用默认数据 // strResName = data.strName; //} //else { if (data.ViewList != null) { //Profiler.BeginSample("CreateEntityView:Table:Query"); for (int i = 0; i < data.ViewList.Length; ++i) { if (data.ViewList[i] == null) { continue; } if (data.ViewList[i].nPos == (int)EquipPos.EquipPos_Body) { var table_data = GameTableManager.Instance.GetTableItem <table.SuitDataBase>((uint)data.ViewList[i].value); if (table_data == null) { var role_data = table.SelectRoleDataBase.Where((GameCmd.enumProfession)GetProp((int)PuppetProp.Job), (GameCmd.enmCharSex)GetProp((int)PuppetProp.Sex)); if (role_data == null) { Engine.Utility.Log.Error("CreateEntityView:job{0}或者sex{1}数据非法!", GetProp((int)PlayerProp.Job), GetProp((int)PlayerProp.Sex)); return(false); } table_data = GameTableManager.Instance.GetTableItem <table.SuitDataBase>((uint)role_data.bodyPathID); data.ViewList[i].value = (int)role_data.bodyPathID; } if (table_data != null) { table.ResourceDataBase db = GameTableManager.Instance.GetTableItem <table.ResourceDataBase>(table_data.resid); if (db == null) { Debug.LogError("ResourceDataBase is null bodypahtid is " + table_data.resid + " 请检查resource 表格"); return(false); } strResName = db.strPath; } else { strResName = ""; } //if (m_EntityView != null) //{ // m_EntityView.AddSuitData(EquipPos.EquipPos_Body, data.ViewList[i].value, (int)table_data.resid); //} } } //Profiler.EndSample(); } } // 设置名称 SetName(data.strName); //Profiler.BeginSample("EntityView:Create"); // TODO: 根据配置表读取数据 if (!m_EntityView.Create(ref strResName, OnCreateRenderObj, m_Data.bImmediate)) { Engine.Utility.Log.Error("CreateEntityView failed:{0}", strResName); } //Profiler.EndSample(); //Profiler.EndSample(); return(true); }
//------------------------------------------------------------------------------------------------------- public override bool CreateEntityView(EntityCreateData data) { m_Data = data; base.CreateEntityView(data); if (GetEntityType() != EntityType.EntityType_NPC) { Engine.Utility.Log.Error("NPC:CreateEntityView failed:{0}", GetName()); return(false); } int nID = GetProp((int)EntityProp.BaseID); int suitID = GetProp((int)NPCProp.SuitID); int masterID = GetProp((int)NPCProp.Masterid); int type = GetProp((int)NPCProp.MasterType); IEntity en = EntityHelper.GetEntity((GameCmd.SceneEntryType)type, (uint)masterID); if (en != null) { if (EntityHelper.IsMainPlayer(en)) { m_isMySlave = true; } } string strResName = ""; if (nID == 0) { // 则使用默认数据 // strResName = data.strName; } else { var table_data = GameTableManager.Instance.GetTableItem <table.NpcDataBase>((uint)nID); if (table_data == null) { Engine.Utility.Log.Error("不存在这个NPC: " + nID); return(false); } m_bCanSelect = table_data.dwCanBeSelect == 1; if (m_Data.ViewList == null) { uint modelID = table_data.dwModelSet; if (suitID != 0) { table.SuitDataBase sdb = GameTableManager.Instance.GetTableItem <table.SuitDataBase>((uint)suitID, 1); if (sdb != null) { if (sdb.resid != 0) { modelID = sdb.resid; } } } table.ResourceDataBase resDB = GameTableManager.Instance.GetTableItem <table.ResourceDataBase>(modelID); if (resDB == null) { Engine.Utility.Log.Error("NPC:找不到NPC模型资源路径配置{0}", modelID); return(false); } strResName = resDB.strPath; } else { for (int i = 0; i < data.ViewList.Length; ++i) { if (data.ViewList[i] == null) { continue; } if (data.ViewList[i].nPos == (int)EquipPos.EquipPos_Body) { //if(data.ViewList[i].) var suit_data = GameTableManager.Instance.GetTableItem <table.SuitDataBase>((uint)data.ViewList[i].value); if (suit_data != null) { table.ResourceDataBase db = GameTableManager.Instance.GetTableItem <table.ResourceDataBase>(suit_data.resid); if (db == null) { Debug.LogError("ResourceDataBase is null bodypahtid is " + suit_data.resid + " 请检查resource 表格"); return(false); } //string bodyPath = db.strPath; //if (data.ViewList[i] != null) //{ // strResName = data.ViewList[i].value == 0 ? bodyPath : EntityHelper.GetModelPath((uint)data.ViewList[i].value, (Cmd.enmCharSex)GetProp((int)PlayerProp.Sex)); //} strResName = db.strPath; } else { strResName = ""; } } } } // 技能形态 m_Data.eSkillState = (SkillSettingState)GetProp((int)NPCProp.SkillStatus); if ((int)GameCmd.ArenaNpcType.ArenaNpcType_Player == GetProp((int)NPCProp.ArenaNpcType)) { SetName(m_Data.strName); } else { if (string.IsNullOrEmpty(data.strName)) { SetName(table_data.strName); } else { SetName(data.strName); } } if (IsSummon()) { IEntitySystem es = EntitySystem.m_ClientGlobal.GetEntitySystem(); if (es != null) { IPlayer player = es.FindEntity <IPlayer>((uint)masterID); if (player != null) { string playerName = player.GetName(); string summonName = GetName(); string tempName = playerName + "的" + summonName; SetName(tempName); } } } } // TODO: 根据配置表读取数据 //if ( !m_EntityView.Create( ref strResName , OnCreateRenderObj ) ) //{ // Engine.Utility.Log.Error( "CreateEntityView failed:{0}" , strResName ); //} string strPath, strFileName, strExt, strFileNameNoExt; Engine.Utility.StringUtility.ParseFileName(ref strResName, out strPath, out strFileName, out strFileNameNoExt, out strExt); m_strObjName = strFileNameNoExt; // 功能NPC立即创建 if (!IsMonster() && !IsPet() && !IsSummon()) { m_Data.bImmediate = true; } if (m_Data.bImmediate) { // 立即创建 if (!m_EntityView.Create(ref strResName, OnCreateRenderObj, false)) { Engine.Utility.Log.Error("CreateEntityView failed:{0}", strResName); } } else { EntityViewCreator.Instance.AddView(GetUID(), m_EntityView, ref strResName, OnCreateRenderObj); } return(false); }
public override bool CreateEntityView(EntityCreateData data) { //Profiler.BeginSample("CreateEntityView"); m_Data = data; base.CreateEntityView(data); if (GetEntityType() != EntityType.EntityType_Player) { m_bChangeRestore = false; Engine.Utility.Log.Error("CreateEntityView failed:{0}", GetName()); return(false); } string strResName = ""; //if (data.PropList != null) //{ // for (int i = 0; i < data.PropList.Length; ++i ) // { // if (data.PropList[i].nPropIndex == (int)PlayerProp.TransModelResId) // { int ntransModelID = GetProp((int)PlayerProp.TransModelResId);//.PropList[i].value; if (ntransModelID != 0) { table.ResourceDataBase resData = GameTableManager.Instance.GetTableItem <table.ResourceDataBase>((uint)ntransModelID); if (resData != null) { strResName = resData.strPath; } } // break; // } // } //} table.SuitDataBase table_data = null; if (string.IsNullOrEmpty(strResName) && data.ViewList != null) { //Profiler.BeginSample("CreateEntityView:Table:Query"); for (int i = 0; i < data.ViewList.Length; ++i) { if (data.ViewList[i] == null) { continue; } if (data.ViewList[i].nPos == (int)EquipPos.EquipPos_Body) { table_data = GameTableManager.Instance.GetTableItem <table.SuitDataBase>((uint)data.ViewList[i].value); if (table_data == null) { GameCmd.enumProfession profession = (GameCmd.enumProfession)GetProp((int)PlayerProp.Job); GameCmd.enmCharSex sex = (GameCmd.enmCharSex)GetProp((int)PlayerProp.Sex); var role_data = table.SelectRoleDataBase.Where(profession, sex); if (role_data == null) { Engine.Utility.Log.Error("CreateEntityView:job{0}或者sex{1}数据非法!", profession, sex); return(false); } table_data = GameTableManager.Instance.GetTableItem <table.SuitDataBase>((uint)role_data.bodyPathID); } if (table_data != null) { table.ResourceDataBase db = GameTableManager.Instance.GetTableItem <table.ResourceDataBase>(table_data.resid); if (db == null) { Debug.LogError("ResourceDataBase is null bodypahtid is " + table_data.resid + " 请检查resource 表格"); return(false); } strResName = db.strPath; } //else //{ // strResName = ""; //} //if(m_EntityView!=null) //{ // m_EntityView.AddSuitData(EquipPos.EquipPos_Body, data.ViewList[i].value, (int)table_data.resid); //} } } //Profiler.EndSample(); } // 修改技能形态值 m_Data.eSkillState = (SkillSettingState)GetProp((int)PlayerProp.SkillStatus); // 设置名称 SetName(data.strName); string strPath, strFileName, strExt, strFileNameNoExt; Engine.Utility.StringUtility.ParseFileName(ref strResName, out strPath, out strFileName, out strFileNameNoExt, out strExt); m_strObjName = strFileNameNoExt; if (m_Data.bImmediate) { // 立即创建 if (!m_EntityView.Create(ref strResName, OnCreateRenderObj, m_Data.bImmediate)) { Engine.Utility.Log.Error("CreateEntityView failed:{0}", strResName); return(false); } } else { EntityViewCreator.Instance.AddView(GetUID(), m_EntityView, ref strResName, OnCreateRenderObj); } //Profiler.EndSample(); //Profiler.EndSample(); return(true); }
// 更新多条属性 public virtual void UpdateProp(EntityCreateData data) { ApplyProp(data); }