void NpcAppear(byte[] _packet) { // AsNotify.Log( "NpcAppear"); AS_SC_NPC_APPEAR_1 appear = new AS_SC_NPC_APPEAR_1(); appear.PacketBytesToClass(_packet); AsEntityManager.Instance.NpcAppear(appear); }
public void NpcAppear( AS_SC_NPC_APPEAR_1 _appear) { List<AS_SC_NPC_APPEAR_2> listAppear = new List<AS_SC_NPC_APPEAR_2>(); listAppear.AddRange( _appear.body); listAppear.Sort( AsUtil.DistanceCompare); foreach( AS_SC_NPC_APPEAR_2 apr in listAppear) { AS_SC_NPC_APPEAR_2 appear = apr; if( true == m_dicNpcEntity_SessionId.ContainsKey( appear.nNpcIdx)) { Debug.LogError( "[AsEntityManager]NpcAppear: already created character. id = " + appear.nNpcIdx); continue; } // check in game event if (AsInGameEventManager.instance.CheckEventViewNpc(apr.nNpcTableIdx)) { if (AsInGameEventManager.instance.CheckRunningEventviewNpc(apr.nNpcTableIdx)) { AsInGameEventManager.instance.AddNpcAppear(apr); continue; } } //create NpcAppearData creationData = new NpcAppearData( appear); switch( creationData.npcType_) { case eNPCType.Monster: AsEntityManager.Instance.CreateNpcEntity( "Monster", creationData); break; case eNPCType.NPC: case eNPCType.Portal: AsEntityManager.Instance.CreateNpcEntity( "Npc", creationData); break; case eNPCType.Object: { if( 0 == appear.nObjectStatus) { AsNpcEntity npcEntity = AsEntityManager.Instance.CreateNpcEntity( "Object", creationData); npcEntity.SetProperty( eComponentProperty.GROUP_INDEX, appear.nNpcGroupIdx); npcEntity.SetProperty( eComponentProperty.LINK_INDEX, appear.nNpcLinkIdx); if( ( 0 < appear.nNpcGroupIdx) && ( null != npcEntity)) ObjSteppingMgr.Instance.InsertObjStepping( appear.nNpcGroupIdx, appear.nNpcLinkIdx, npcEntity); } } break; case eNPCType.Collection: { AsNpcEntity npcEntity = AsEntityManager.Instance.CreateNpcEntity( "Collection", creationData); npcEntity.SetProperty( eComponentProperty.COLLECTOR_IDX, appear.nCollector); } break; } } }