void RPC_S2C_EnterDungeon(uLink.BitStream stream, uLink.NetworkMessageInfo info) { bool success = stream.Read <bool>(); if (!success) { MessageBox_N.CancelMask(MsgInfoType.DungeonGeneratingMask); return; } Vector3 genPlayerPos = stream.Read <Vector3>(); int seed = stream.Read <int>(); int dungeonId = stream.Read <int>(); int dungeonDataId = stream.Read <int>(); RandomDungenMgr.Instance.LoadDataFromId(dungeonDataId); //UILoadScenceEffect.Instance.EnableProgress(true); RandomDungenMgrData.DungeonId = dungeonId; RandomDungenMgrData.SetPosByGenPlayerPos(genPlayerPos); int failCount = 0; while (!RandomDungenMgr.Instance.GenDungeon(seed)) { failCount++; Debug.Log("generation failed: " + failCount); } RandomDungenMgr.Instance.LoadPathFinding(); RequestFastTravel(0, RandomDungenMgrData.revivePos, 0); // FastTravel.TravelTo(RandomDungenMgrData.revivePos); }
public void EnterDungen(Vector3 entrancePos, int dungeonDataId) { RandomDungenMgrData.Clear(); MissionManager.Instance.m_PlayerMission.AbortFollowMission(); RandomDungenMgrData.AddServants(); LoadDataFromId(dungeonDataId); SetWaterType(entrancePos); if (PeGameMgr.IsMulti) { MessageBox_N.ShowMaskBox(MsgInfoType.DungeonGeneratingMask, "Generating", 20f); RandomDungenMgrData.entrancePos = entrancePos; RandomDungenMgrData.enterPos = PeCreature.Instance.mainPlayer.position; PlayerNetwork.mainPlayer.RequestEnterDungeon(entrancePos); } else { isActive = true; //UILoadScenceEffect.Instance.EnableProgress(false); MissionManager.Instance.yirdName = AdventureScene.Dungen.ToString(); //origin RandomDungenMgrData.SetPosByEnterPos(entrancePos); MissionManager.Instance.transPoint = RandomDungenMgrData.revivePos; //test // MissionManager.Instance.transPoint = new Vector3(enterPos.x,-100,enterPos.z); // RandomDungenMgrData.RevivePos = MissionManager.Instance.transPoint; // RandomDungenMgrData.genPos = RandomDungenMgrData.RevivePos+new Vector3 (0,0,-2); //TransFollower(RandomDungenMgrData.enterPos); MissionManager.Instance.SceneTranslate(); } }
//single void DeactiveObjNotUse() { List <int> followers = RandomDungenMgrData.GetAllFollowers(); int mainPlayerId = PeCreature.Instance.mainPlayerId; IEnumerable <PeEntity> allEntities = EntityMgr.Instance.All; foreach (PeEntity pe in allEntities) { if (pe.Id != mainPlayerId && !followers.Contains(pe.Id)) { if (pe.gameObject != null) { pe.gameObject.SetActive(false); MapCmpt mc = pe.GetCmpt <MapCmpt>(); pe.Remove(mc); } } } List <PeMap.ILabel> RemoveList = PeMap.LabelMgr.Instance.FindAll(itr => itr.GetType() == PeMap.ELabelType.Mission); foreach (PeMap.ILabel _ilabel in RemoveList) { PeMap.LabelMgr.Instance.Remove(_ilabel); } }
public void TryGenRareItem(Vector3 pos, int boxId, System.Random rand = null, List <ItemIdCount> specifiedItems = null) { if (ContainsPos(pos)) { return; } string path; List <ItemIdCount> itemIdNum = RandomItemDataMgr.GenItemDicByBoxId(boxId, out path, rand); if (itemIdNum == null) { Debug.LogError("boxId error: " + boxId); itemIdNum.Add(new ItemIdCount(1, 1)); } if (specifiedItems != null) { itemIdNum.AddRange(specifiedItems); } List <ItemIdCount> invalidList = itemIdNum.FindAll(it => it.protoId <= 0 || it.count <= 0 || ItemAsset.ItemProto.Mgr.Instance.Get(it.protoId) == null); if (invalidList != null && invalidList.Count > 0) { foreach (ItemIdCount idcount in invalidList) { Debug.LogError("randomItem error:" + idcount.protoId + " " + idcount.count); itemIdNum.Remove(idcount); } } int[] items = new int[itemIdNum.Count * 2]; int index = 0; foreach (ItemIdCount item in itemIdNum) { items[index++] = item.protoId; items[index++] = item.count; } RandomItemObj rio = new RandomItemObj(boxId, pos, items, path); if (pos.y >= 0) { AddToAllItems(rio); AddToIndex256(rio); } rio.AddRareProto(DunItemId.UNFINISHED_ISO, 5); mRandomItemsDic.Add(pos, rio); RandomDungenMgrData.AddRareItem(rio); }
public void DestroyDungeon() { GeneralSet(false); SceneMan.AddTerrainDependence(); if (generator != null && generator.CurrentDungeon != null && generator.CurrentDungeon.gameObject != null) { UnityUtil.Destroy(generator.CurrentDungeon.gameObject); } RandomDungenMgrData.Clear(); if (PeGameMgr.IsMulti) { ChangeOther(false); ResetPathFinding(); } if (dungeonWater != null) { GameObject.Destroy(dungeonWater); } FBSafePlane.instance.DeleteCol(); DragItemAgent.DestroyAllInDungeon(); }
public void ReceiveIsoObj(int dungeonId, ulong isoCode, int instanceId) { //--to do: iosList //update randomRareItem RandomDungenMgrData.RareItemReady(instanceId, dungeonId); }