コード例 #1
0
    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);
    }
コード例 #2
0
    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();
        }
    }
コード例 #3
0
    //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);
        }
    }
コード例 #4
0
    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);
    }
コード例 #5
0
 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();
 }
コード例 #6
0
 public void ReceiveIsoObj(int dungeonId, ulong isoCode, int instanceId)
 {
     //--to do: iosList
     //update randomRareItem
     RandomDungenMgrData.RareItemReady(instanceId, dungeonId);
 }