コード例 #1
0
ファイル: AsSceneLoader.cs プロジェクト: ftcaicai/ArkClient
	//$yde
	
	public void LoadSameMap( int iMapID, eLoadType type)
	{
		ActivateLoadInfo( true);
		
		AsEntityManager.Instance.RemoveAllMonster();
		AsEntityManager.Instance.RemoveAllNpc();
		AsEntityManager.Instance.RemoveAllOtherUser();
		
		AsEntityManager.Instance.UserEntity.SetRePosition(AsUserInfo.Instance.GetCurrentUserCharacterPosition());
		AsEntityManager.Instance.UserEntity.HandleMessage( new Msg_MoveStopIndication());
		AsEntityManager.Instance.UserEntity.HandleMessage( new Msg_ZoneWarpEnd());
		
		if( null != ItemMgr.DropItemManagement )
			ItemMgr.DropItemManagement.Clear();
		
		switch( type)
		{
		case eLoadType.ENTER_WORLD:
			{
				AS_CG_ENTER_WORLD_END enterWorld = new AS_CG_ENTER_WORLD_END();
				byte[] data = enterWorld.ClassToPacketBytes();
				AsNetworkMessageHandler.Instance.Send( data);
				
				AsGameMain.s_gameState = GAME_STATE.STATE_INGAME;
			}
			break;
		case eLoadType.WARP:
			AsCommonSender.SendWarpEnd();
			AsGameMain.s_gameState = GAME_STATE.STATE_INGAME;
			break;
		case eLoadType.WARPXZ:
			AsCommonSender.SendWarpXZEnd( iMapID, AsUserInfo.Instance.GetCurrentUserCharacterPosition());
			AsGameMain.s_gameState = GAME_STATE.STATE_INGAME;
			break;
		case eLoadType.PARTY_WARPXZ:
			AsPartySender.SendWarpXZEnd();
			AsGameMain.s_gameState = GAME_STATE.STATE_INGAME;
			break;	
		case eLoadType.GOTO_TOWN:
			AsCommonSender.SendGotoTownEnd();
			AsGameMain.s_gameState = GAME_STATE.STATE_INGAME;
			#region -GameGuide_Death
			AsGameGuideManager.Instance.CheckUp( eGameGuideType.Death, AsUserInfo.Instance.SavedCharStat.level_);
			#endregion
			break;
		case eLoadType.INSTANCE_DUNGEON_ENTER:
			AsInstanceDungeonManager.Instance.Send_InDun_Enter_End();
			AsGameMain.s_gameState = GAME_STATE.STATE_INGAME;
			break;
		case eLoadType.ARENA_ENTER:
			AsInstanceDungeonManager.Instance.Send_InDun_Enter_End();
			AsGameMain.s_gameState = GAME_STATE.STATE_INGAME;
			AsInputManager.Instance.m_Activate = false;
			break;
		case eLoadType.INSTANCE_DUNGEON_EXIT:
			AsInstanceDungeonManager.Instance.Send_InDun_Exit_End();
			AsGameMain.s_gameState = GAME_STATE.STATE_INGAME;
			break;
		}
		
		ActivateLoadInfo( false);
		
		if( eLoadType.ARENA_ENTER != type)
			AsInputManager.Instance.m_Activate = true;
		
		AsIntoMapTriggerManager.instance.UpdateIntoMapTrigger(iMapID);
		AsUseItemInMapMarkManager.instance.UpdateUseItemInMapMark( iMapID);
		
		AsEntityManager.Instance.MessageToPlayer( new Msg_PetPositionRefresh());
		AsEmotionManager.Instance.ReleaseBlock();//$yde
		
		System.GC.Collect();
		Resources.UnloadUnusedAssets();
	}
コード例 #2
0
ファイル: AsSceneLoader.cs プロジェクト: ftcaicai/ArkClient
	IEnumerator MapLoad( int iMapID, eLoadType type)
	{
		AsGameMain.SetBackGroundProc( true);
		
		ActivateLoadInfo( true);
		loadInfo.Init( iMapID);
		ItemMgr.HadItemManagement.Inven.ResetInvenSlotMoveLock();	// kij
		
		yield return null;
		
		AsNotify.Instance.Hidden();
		AsHUDController.SetActiveRecursively( false);
		ObjSteppingMgr.Instance.Clear();
		AsEntityManager.Instance.RemoveAllEntitiesAsync();
		while(true)
		{
			if(AsEntityManager.Instance.RemoveAllEntitiesAsyncFinished == true)
			{
				Debug.Log("AsSceneLoader::MapLoad: << RemoveAllEntitiesAsync process ends >> ");
				break;
			}
			
			yield return null;
		}
		AsEntityManager.Instance.RemoveAllEntities();
		ItemMgr.DropItemManagement.Clear();
		
		yield return null;
		
		if( true == AssetbundleManager.Instance.useAssetbundle)
			AssetbundleManager.Instance.ClearAssetbundle();
		
		Map map = TerrainMgr.Instance.GetMap( iMapID);
		Debug.Assert( null != map);
		AsHUDController.Instance.SetMapFogColor( map.MapData.RimLightColor);
		if( true == AssetbundleManager.Instance.useAssetbundle)
		{
			WWW downloadCache = AssetbundleManager.Instance.SceneAssetbundleLoadCache( map.MapData.GetPath());
			yield return downloadCache;
		}

		AsyncOperation async = Application.LoadLevelAsync( map.MapData.GetPath());
		yield return async;
		
		TerrainMgr.Instance.LoadMap( iMapID);
		
		yield return null;

		//$yde
		AsUserEntity userChar = AsEntityManager.Instance.CreateUserEntity( "PlayerChar", AsUserInfo.Instance.SavedCharStat, true, true);
		userChar.SetRePosition( AsUserInfo.Instance.GetCurrentUserCharacterPosition());
		userChar.HandleMessage( new Msg_BuffRefresh( PlayerBuffMgr.Instance.CharBuffDataList));

		if( true == AsUserInfo.Instance.isProductionProgress)
			userChar.HandleMessage( new Msg_PRODUCT( true));
		
		userChar.gameObject.AddComponent<AudioListener>();
		
		AsUserInfo.Instance.ApplyPlayerStat();
		AsPetManager.Instance.PlayerEnterWorld();
		//~$yde
		
		yield return null;
		
		TerrainMgr.Instance.Initialize( iMapID);
		
		yield return null;

		bool ret = CameraMgr.Instance.AttachPlayerCamera( userChar.transform, map.MapData.GetMapNameShowTime());
		Debug.Assert( false != ret);
		
		while( eModelLoadingState.Finished != userChar.CheckModelLoadingState())
			yield return null;

		#region -AccountGender
		userChar.UserGender = AsUserInfo.Instance.accountGender;
		#region -GMMark
		userChar.IsGM = AsUserInfo.Instance.isGM;
		#endregion
#if NEW_DELEGATE_IMAGE
		if( null != userChar.namePanel)
		{
			DelegateImageData DelegateImageData = AsDelegateImageManager.Instance.GetSelectDelegateImage();
			if( null == DelegateImageData)
			{
				DelegateImageData = AsDelegateImageManager.Instance.GetAssignedDelegateImage();
				if( null != DelegateImageData)
					userChar.nUserDelegateImageIndex = DelegateImageData.id;
			}
			else
				userChar.nUserDelegateImageIndex = DelegateImageData.id;

			userChar.namePanel.SetDelegateImage( AsPanel_Name.eNamePanelType.eNamePanelType_User, userChar);
		}
#else
		if( null != userChar.namePanel)
			userChar.namePanel.SetGenderMark( AsPanel_Name.eNamePanelType.eNamePanelType_User, userChar);
#endif
		#endregion
		
		AsCommonSender.ResetSendCheck();
		AsGameMain.SetBackGroundProc( false);
		switch( type)
		{
		case eLoadType.ENTER_WORLD:
			{
				AS_CG_ENTER_WORLD_END enterWorld = new AS_CG_ENTER_WORLD_END();
				byte[] data = enterWorld.ClassToPacketBytes();
				ArkQuestmanager.instance.CheckVisibleTimeUI();
				AsNetworkMessageHandler.Instance.Send( data);
				AsGameMain.s_gameState = GAME_STATE.STATE_INGAME;
			
				if( null != AsEntityManager.Instance && null != AsEntityManager.Instance.GetPlayerCharFsm() &&
					null != AsChatManager.Instance)
				{
					Tbl_GlobalWeight_Record levelrecord = AsTableManager.Instance.GetTbl_GlobalWeight_Record( 69);
					if( null != levelrecord)
					{
						int iCurLevel = AsEntityManager.Instance.GetPlayerCharFsm().UserEntity.GetProperty<int>( eComponentProperty.LEVEL);
						if( iCurLevel >= (int)levelrecord.Value)
							AsChatManager.Instance.InsertSystemChat( AsTableManager.Instance.GetTbl_String(4083), eCHATTYPE.eCHATTYPE_SYSTEM);
					}
				}

                ArkQuestmanager.instance.ShowProgressInQuestMsgBox();
			
				AsCommonSender.SendWayPoint();
			}
			break;
		case eLoadType.WARP:
			AsCommonSender.SendWarpEnd();
			AsGameMain.s_gameState = GAME_STATE.STATE_INGAME;
			break;
		case eLoadType.WARPXZ:
			AsCommonSender.SendWarpXZEnd( iMapID, AsUserInfo.Instance.GetCurrentUserCharacterPosition());
			AsGameMain.s_gameState = GAME_STATE.STATE_INGAME;
			break;
		case eLoadType.PARTY_WARPXZ:
			AsPartySender.SendWarpXZEnd();
			AsGameMain.s_gameState = GAME_STATE.STATE_INGAME;
			break;		
		case eLoadType.GOTO_TOWN:
			AsCommonSender.SendGotoTownEnd();
			AsGameMain.s_gameState = GAME_STATE.STATE_INGAME;
			#region -GameGuide_Death
			AsGameGuideManager.Instance.CheckUp( eGameGuideType.Death, AsUserInfo.Instance.SavedCharStat.level_);
			#endregion
			break;
		case eLoadType.INSTANCE_DUNGEON_ENTER:
			AsInstanceDungeonManager.Instance.Send_InDun_Enter_End();
			AsGameMain.s_gameState = GAME_STATE.STATE_INGAME;
			break;
		case eLoadType.ARENA_ENTER:
			AsInstanceDungeonManager.Instance.Send_InDun_Enter_End();
			AsPvpManager.Instance.EnterArena();
			AsGameMain.s_gameState = GAME_STATE.STATE_INGAME;
			AsInputManager.Instance.m_Activate = false;
			break;
		case eLoadType.INSTANCE_DUNGEON_EXIT:
			AsInstanceDungeonManager.Instance.Send_InDun_Exit_End();
			AsGameMain.s_gameState = GAME_STATE.STATE_INGAME;
			break;
		}
		
		//$yde
		if( eLoadType.ARENA_ENTER != type)
			AsInputManager.Instance.m_Activate = true;
		CoolTimeGroupMgr.Instance.CheckLoadMap();
		
		yield return null;
		
		AsIntoMapTriggerManager.instance.UpdateIntoMapTrigger( iMapID);
		AsUseItemInMapMarkManager.instance.UpdateUseItemInMapMark( iMapID);
		ArkQuestmanager.instance.CheckVisibleTimeUI();
		AsHudDlgMgr.Instance.UpdateQuestBookBtn();
		QuestHolderManager.instance.UpdateQuestHolder();
		AsInGameEventManager.instance.ForcedUpdate();

		if( AsHudDlgMgr.Instance != null)
		{
			AsHudDlgMgr.Instance.cashShopBtn.GetComponent<CashShopBtnController>().SetMiracleTxt(AsUserInfo.Instance.nMiracle);
			AsHudDlgMgr.Instance.SetCashStoreBtnFreeMark(AsUserInfo.Instance.FreeGachaPoint == 1);
			AsHudDlgMgr.Instance.partyAndQuestToggleMgr.Initilize();
			AsHudDlgMgr.Instance.CheckNewMenuImg();
		}
		
		yield return null;
		
		AsCharacterTextureManager.Instance.Clear();
		
		System.GC.Collect();
		Resources.UnloadUnusedAssets();
		
		ActivateLoadInfo( false);
		
		if( true == IsInvoking( "ConditionAlarm"))
			CancelInvoke( "ConditionAlarm");
		
		InvokeRepeating( "ConditionAlarm", 0.0f, 1800.0f);
		
		#region -GameGuide_Map
		AsGameGuideManager.Instance.CheckUp( eGameGuideType.Map, iMapID);
		#endregion
		TerrainMgr.Instance.ShowMapNameShow(iMapID);

		#region -AccountGender
#if !NEW_DELEGATE_IMAGE
		PromptGenderDialog();
#endif
		#endregion
		
		BonusManager.Instance.SceneLoaded();//$yde
		AsEmotionManager.Instance.ReleaseBlock();//$yde
		

		AsUseItemToMonTriggerManager.instance.CreateAllTrigger();
		AsUseItemToMonTriggerManager.instance.RepoisitionTrigger();
		ArkQuestmanager.instance.UpdateSortQuestList();
		AsHudDlgMgr.Instance.UpdateQuestMiniView();
		AsPromotionManager.Instance.SceneLoaded();
		AutoCombatManager.Instance.ZoneWarpFinished();
		
		Debug.LogWarning("map Load end");
	}