public void CreateNpc() { Utils.Assert(curChapConfig == null, "Chapter Configdata is null."); if (reader.loadSceneConfig(curChapConfig.scene_config)) { NPCInSceneData[] npcInScene = reader.GetSceneEditorElementData <NPCInSceneData>(); if (npcInScene != null && npcInScene.Length > 0) { int len = npcInScene.Length; CrtHero[] toClient = new CrtHero[len]; for (int i = 0; i < len; i++) { NPCInSceneData sceneD = npcInScene [i]; ServerNPC npc = virNpcLoader.Load(sceneD.npcID, sceneD.camp, WarPoint); if (npc == null) { ConsoleEx.DebugWarning("Create npc fail!!!!!!!!! id:: " + sceneD.npcID); continue; } npc.transform.localPosition = new Vector3(sceneD.pos [0], sceneD.pos [1], sceneD.pos [2]); npc.transform.localScale = new Vector3(sceneD.scale [0], sceneD.scale [1], sceneD.scale [2]); npc.transform.localEulerAngles = new Vector3(sceneD.rotation [0], sceneD.rotation [1], sceneD.rotation [2]); npc.spawnPos = npc.transform.position; npc.spawnRot = npc.transform.rotation; npc.dataInScene = sceneD; npc.data.btData.way = sceneD.way; //初始化buff InitBuff(npc); //初始化AI InitAi(npc); toClient[i] = new CrtHero() { npcID = sceneD.npcID, uniqueId = npc.UniqueID, pos = VectorWrap.ToVector(npc.transform.position), rotation = VectorWrap.ToVector(npc.transform.eulerAngles), camp = (int)npc.Camp, }; } //send creating npc message to client IpcCreateNpcMsg msg = new IpcCreateNpcMsg() { npclist = toClient, }; WarSMgr.realServer.proxyCli.CtorNpc(msg); } } else { ConsoleEx.DebugWarning(curChapConfig.scene_config + " scene config is not find."); } }
/// <summary> /// 创建Npc /// </summary> public void CtorNpc(IpcCreateNpcMsg msg) { ConsoleEx.DebugLog(war.Side.ToString() + " Sub Received : CtorNpc.", ConsoleEx.YELLOW); if (CtorNPC != null) { AsyncTask.QueueOnMainThread( () => { CtorNPC(msg); } ); } }
public override void OnAwake() { loader = Core.ResEng.getLoader <VirtualNpcLoader>(); mWarPoint = GameObject.FindGameObjectWithTag("WarServer"); freshGroupModel = Core.Data.getIModelConfig <FreshGroupModel>(); freshPoolModel = Core.Data.getIModelConfig <FreshPoolModel>(); AiLoader = Core.ResEng.getLoader <AILoader>(); myHero = gameObject.GetComponent <BNPC>(); curPool = freshPoolModel.GetNPCFreshPool(myHero.dataInScene.freshParam.freshPoolID); crtMsg = new IpcCreateNpcMsg(); crtMsg.npclist = new CrtHero[1]; crtMsg.npclist[0] = new CrtHero(); hpMsg = new IpcNpcHpMsg(); }
void SendCrtBulletMsg(ServerNPC npc) { IpcCreateNpcMsg msg = new IpcCreateNpcMsg(); msg.npclist = new CrtHero[1]; msg.npclist[0] = new CrtHero(); msg.npclist[0].npcID = npc.data.configData.ID; msg.npclist[0].uniqueId = npc.UniqueID; msg.npclist[0].camp = (int)npc.Camp; msg.npclist[0].pos = VectorWrap.ToVector(npc.transform.position); msg.npclist[0].rotation = VectorWrap.ToVector(npc.transform.eulerAngles); WarServerManager mgr = WarServerManager.Instance; if (mgr != null) { mgr.realServer.proxyCli.CtorNpc(msg); } }
public void CreateNpc(IpcCreateNpcMsg msg) { int len = msg.npclist.Length; for (int i = 0; i < len; i++) { CrtHero hero = msg.npclist[i]; ClientNPC npc = Npcloader.Load(hero.npcID, hero.uniqueId, (CAMP)hero.camp, WarPoint); // Debug.Log(fastJSON.JSON.Instance.ToJSON(msg)); if (npc == null) { ConsoleEx.DebugWarning("Create npc fail!!!!!!!!! id:: " + hero.npcID); continue; } npc.transform.localPosition = new Vector3(hero.pos.x, hero.pos.y, hero.pos.z); npc.transform.localScale = Vector3.one; npc.transform.localEulerAngles = new Vector3(hero.rotation.x, hero.rotation.y, hero.rotation.z); } }
/// <summary> /// 所有消息的处理地方 /// </summary> /// <param name="msg">Message.</param> void HandleIpcMsg(IpcMsg msg) { if (msg != null) { switch (msg.op) { case OP.CtorMap: IpcCreateMapMsg ctor = msg as IpcCreateMapMsg; MapInfo amap = new MapInfo() { ID = ctor.MapId, type = (ConfigType)Enum.ToObject(typeof(ConfigType), ctor.MapType), }; CtorEnv(amap); break; case OP.CtorNpc: IpcCreateNpcMsg ctorNpc = msg as IpcCreateNpcMsg; CtorNpc(ctorNpc); break; case OP.CtorHero: IpcCreateHeroMsg crtHero = msg as IpcCreateHeroMsg; CtorHero(crtHero); break; case OP.NpcMove: IpcNpcMoveMsg moveMsg = msg as IpcNpcMoveMsg; NPCMove(moveMsg); break; case OP.NpcHp: IpcNpcHpMsg hpMsg = msg as IpcNpcHpMsg; NPChp(hpMsg); break; case OP.NpcAnim: IpcNpcAnimMsg animMsg = msg as IpcNpcAnimMsg; NPCAnim(animMsg); break; case OP.NpcStatus: IpcNpcStatusMsg statusMsg = msg as IpcNpcStatusMsg; NPCStatus(statusMsg); break; case OP.ServerReady: IpcServerReadyMsg SerInfo = msg as IpcServerReadyMsg; ServerInfo server = new ServerInfo(SerInfo); ServerReady(server); break; case OP.AsyncClient: IpcSyncClientMsg Sync = msg as IpcSyncClientMsg; SyncClient(Sync); break; case OP.EnterWar: IpcEnterWar enter = msg as IpcEnterWar; ServerInfo aserver = new ServerInfo() { ServerName = enter.ServerName, ServerID = enter.ServerID, }; MapInfo map = new MapInfo() { ID = enter.MapId, type = (ConfigType)Enum.ToObject(typeof(ConfigType), enter.MapType), }; EnterWar(aserver, map); break; case OP.ServerQuit: IpcServerQuitMsg quit = msg as IpcServerQuitMsg; ServerQuit(quit.ServerID); break; case OP.DestroyNpc: IpcDestroyNpcMsg des = msg as IpcDestroyNpcMsg; NpcDestroy(des); break; case OP.SkillCD: IpcSkillMsg skMsg = msg as IpcSkillMsg; NpcSkillCD(skMsg); break; } } }
/// <summary> /// 创建Npc /// </summary> public void CtorNpc(IpcCreateNpcMsg msg) { publisher.send(msg); }