Пример #1
0
        private bool ComponentMatch(Component x, TypeSearchData typeData)
        {
            if (typeData.Type.SystemType != x.GetType())
            {
                return(false);
            }

            if (typeData.SerializedVars != null && typeData.SerializedVars.Count > 0)
            {
                SerializedObject serializedObject = new SerializedObject(x);

                foreach (string typeDataSerializedVar in typeData.SerializedVars)
                {
                    SerializedProperty property              = serializedObject.FindProperty(typeDataSerializedVar);
                    Component          dummyComponent        = dummyObj.GetComponent(x.GetType());
                    SerializedObject   serializedDummyObject = new SerializedObject(dummyComponent);
                    SerializedProperty dummyProperty         = serializedDummyObject.FindProperty(typeDataSerializedVar);

                    if (!AreSerializedPropertiesEqualValue(property, dummyProperty))
                    {
                        return(false);
                    }
                }
            }

            return(true);
        }
    void RPC_S2C_CreateDiscoveryPos(uLink.BitStream stream, uLink.NetworkMessageInfo info)
    {
        float x         = stream.Read <float>();
        float y         = stream.Read <float>();
        int   targetid  = stream.Read <int>();
        int   missionId = stream.Read <int>();

        TypeSearchData data = MissionManager.GetTypeSearchData(targetid);

        if (data == null)
        {
            return;
        }

        data.m_DistPos    = new Vector3(x, VFDataRTGen.GetPosHeight(x, y), y);
        data.m_DistRadius = data.m_mr.radius2;
        if (IsOwner)
        {
            if (data.m_mr.refertoType == ReferToType.Transcript)
            {
                RandomDungenMgr.Instance.GenTaskEntrance(new IntVector2((int)data.m_DistPos.x, (int)data.m_DistPos.z), data.m_mr.referToID);
            }

            if (MissionManager.Instance.m_bHadInitMission)
            {
                for (int i = 0; i < data.m_CreateNpcList.Count; i++)
                {
                    Vector3 createpos = StroyManager.Instance.GetPatrolPoint(data.m_DistPos, 3, 8, false);
                    EntityCreateMgr.Instance.CreateRandomNpc(data.m_CreateNpcList[i], createpos);
                }
            }
            if (null != PlayerNetwork.mainPlayer)
            {
                PlayerNetwork.mainPlayer.RPCServer(EPacketType.PT_InGame_MissionDiscoveryPos, data.m_DistPos, targetid);
            }
        }
        UpdateMissionMapLabelPos(missionId, targetid, data.m_DistPos);
    }
Пример #3
0
    public static void CreateRandomMission(int id)
    {
        int type = 1;

        if (MissionRepository.m_MissionCommonMap.ContainsKey(id))
        {
            MissionCommonData data1 = MissionManager.GetMissionCommonData(id);

            if (data1 != null)
            {
                return;
            }
        }

        MutiPlayMissionRand rand = GetMissRand(id);

        if (rand == null)
        {
            return;
        }

        //  0小怪、1BOSS、2收集、3护送、4探索、5塔防
        if (GameConfig.IsMultiServer)
        {
            type = UnityEngine.Random.Range(1, 3);          //随机1
            //PlayerFactory.RandIds[0] = type;
        }
        else
        {
            //type = PlayerFactory.RandIds[0];
        }

        MissionType          misstype = MissionType.MissionType_Main;
        TypeMonsterData      monData  = null;
        TypeCollectData      colData  = null;
        TypeMessengerData    mesData  = null;
        TypeFollowData       folData  = null;
        TypeSearchData       seaData  = null;
        TypeTowerDefendsData towData  = null;

        //switch (type)
        //{
        //    case 0:
        //        monData = new TypeMonsterData();
        //        break;
        //    case 1:
        //        monData = new TypeMonsterData();
        //        break;
        //    case 2:
        //        colData = new TypeCollectData();
        //        break;
        //    case 3:
        //        folData = new TypeFollowData();
        //        break;
        //    case 4:
        //        seaData = new TypeSearchData();
        //        break;
        //    case 5:
        //        towData = new TypeTowerDefendsData();
        //        break;
        //}

        int idx = 0;
        MissionCommonData data = new MissionCommonData();

        data.m_ID = id;
//        string[] listName = { "Monster Hunter", "Boss Hunter", "Gather", "Escort", "Exploration", "Defend" };

        //data.m_MissionName = listName[type];
        data.m_iNpc      = 0;
        data.m_iReplyNpc = 0;
        data.m_Type      = misstype;
        data.m_MaxNum    = 1;

        TalkData talkdata = TalkRespository.GetTalkData(911);

        if (talkdata != null)
        {
            data.m_Description = talkdata.m_Content;
        }

        if (type == 0 || type == 1)
        {
            if (GameConfig.IsMultiServer)
            {
                idx = 0;                          //随机2
                //PlayerFactory.RandIds[1] = idx;
            }
            else
            {
                //idx = PlayerFactory.RandIds[1];
            }

            monData.m_TargetID   = 1100;
            monData.m_MonsterID  = rand.m_MulKillID[idx];
            monData.m_MonsterNum = rand.m_MulKillNum[idx];
            monData.m_Desc       = "KillMonster : " + AiDataBlock.GetAIDataName(monData.m_MonsterID);

            data.m_TargetIDList.Add(monData.m_TargetID);
        }
        else if (type == 2)
        {
            if (GameConfig.IsMultiServer)
            {
                idx = UnityEngine.Random.Range(0, rand.m_MulCollectID.Count);            //随机3
                //PlayerFactory.RandIds[2] = idx;
            }
            else
            {
                //idx = PlayerFactory.RandIds[2];
            }

            colData.m_TargetID = 2100;

            colData.ItemID  = rand.m_MulCollectID[idx];
            idx             = UnityEngine.Random.Range(0, rand.m_MulCollectNum.Count);
            colData.ItemNum = rand.m_MulCollectNum[idx];
            colData.m_Desc  = "Gather : " + ItemAsset.ItemProto.GetName(colData.ItemID);

            data.m_TargetIDList.Add(colData.m_TargetID);
        }
        if (type == 5)
        {
            towData.m_TargetID = 7100;
            towData.m_Time     = 5;
            towData.m_Desc     = data.m_MissionName;

            //towData.m_Pos = npcobj.transform.position;
            //towData.m_NpcList.Add(npcname);
            if (idx == 1)
            {
                towData.m_Count = UnityEngine.Random.Range(3, 6);
            }
            else if (idx == 2)
            {
                towData.m_Count = UnityEngine.Random.Range(5, 9);
            }
            else
            {
                towData.m_Count = UnityEngine.Random.Range(8, 13);
            }

            //for (int i = 0; i < towData.m_Count; i++)
            //{
            //    if (idx == 1)
            //    {
            //        towData.m_TDInfoList.Add(UnityEngine.Random.Range(17, 22));
            //    }
            //    else if (idx == 2)
            //    {
            //        towData.m_TDInfoList.Add(UnityEngine.Random.Range(22, 26));
            //    }
            //    else
            //    {
            //        towData.m_TDInfoList.Add(UnityEngine.Random.Range(26, 30));
            //    }
            //}

            data.m_TargetIDList.Add(towData.m_TargetID);
        }

        ////  0.小怪、1.BOSS、2.收集、3.护送、4.探索、5.塔防
        MissionIDNum idnum = new MissionIDNum();

        switch (type)
        {
        case 0:
        case 1:
        case 2:
        {
            if (GameConfig.IsMultiServer)
            {
                idx = UnityEngine.Random.Range(0, rand.m_MulRD.Count);                          //随机4
                //PlayerFactory.RandIds[3] = idx;
            }
            else
            {
                //idx = PlayerFactory.RandIds[3];
            }

            idnum.id  = 30000000;                               //统一奖励货币
            idnum.num = rand.m_MulRD[idx];
            data.m_Com_RewardItem.Add(idnum);
        }
        break;

        case 3:
        {
            if (GameConfig.IsMultiServer)
            {
                idx = UnityEngine.Random.Range(0, rand.m_MulEscort.Count);                              //随机4
                //PlayerFactory.RandIds[3] = idx;
            }
            else
            {
                //idx = PlayerFactory.RandIds[3];
            }
            idnum.id  = 30000000;                               //
            idnum.num = rand.m_MulEscort[idx];
            data.m_Com_RewardItem.Add(idnum);
        }
        break;

        case 4:
        {
            if (GameConfig.IsMultiServer)
            {
                idx = UnityEngine.Random.Range(0, rand.m_MulExplore.Count);                             //随机4
                //PlayerFactory.RandIds[3] = idx;
            }
            else
            {
                //idx = PlayerFactory.RandIds[3];
            }

            idnum.id  = 30000000;                               //
            idnum.num = rand.m_MulExplore[idx];
            data.m_Com_RewardItem.Add(idnum);
        }
        break;

        case 5:
        {
            if (GameConfig.IsMultiServer)
            {
                idx = UnityEngine.Random.Range(0, rand.m_MulTD.Count);                                  //随机4
                //PlayerFactory.RandIds[3] = idx;
            }
            else
            {
                //idx = PlayerFactory.RandIds[3];
            }

            idnum.id  = 30000000;                               //
            idnum.num = rand.m_MulTD[idx];
            data.m_Com_RewardItem.Add(idnum);
        }
        break;
        }

        if (monData != null)
        {
            MissionRepository.AddTypeMonsterData(monData.m_TargetID, monData);
        }
        else if (colData != null)
        {
            MissionRepository.AddTypeCollectData(colData.m_TargetID, colData);
        }
        else if (folData != null)
        {
            MissionRepository.AddTypeFollowData(folData.m_TargetID, folData);
        }
        else if (seaData != null)
        {
            MissionRepository.AddTypeSearchData(seaData.m_TargetID, seaData);
        }
        else if (mesData != null)
        {
            MissionRepository.AddTypeMessengerData(mesData.m_TargetID, mesData);
        }
        else if (towData != null)
        {
            MissionRepository.AddTypeTowerDefendsData(towData.m_TargetID, towData);
        }

        if (!MissionRepository.m_MissionCommonMap.ContainsKey(data.m_ID))
        {
            MissionRepository.m_MissionCommonMap.Add(data.m_ID, data);
        }
    }
Пример #4
0
        public override void DrawSearchGui()
        {
            TypeSearchData removeMe = null;

            GUILayout.BeginHorizontal();

            GUILayout.Label("Components:", GUILayout.Width(EditorGUIUtility.labelWidth));

            if (GUILayout.Button("Add Component", GUILayout.Height(EditorGUIUtility.singleLineHeight),
                                 GUILayout.ExpandWidth(true)))
            {
                Rect r = main.position;
                r.yMax = r.yMin + 80 + components.Count * 18;
                // main.ShowAddComponentWindow(new Rect(0, 0, main.position.width, 140 + components.Count * 19));
                _addComponentWindowProxy.Show(AddComponents, new Rect(0, 0, main.position.width, 76));
            }

            GUILayout.EndHorizontal();

            if (components.Count > 0)
            {
                GUILayout.BeginVertical(EditorStyles.textArea);
                foreach (TypeSearchData typeSearch in components)
                {
                    GUILayout.BeginHorizontal();


                    if (typeSearch.Type != null)
                    {
                        Texture2D tex = AssetPreview.GetMiniTypeThumbnail(typeSearch.Type);
                        GUILayout.Label(new GUIContent(typeSearch.Type.Name, tex), GUILayout.Height(16),
                                        GUILayout.Width(main.position.width / 2f));
                    }

                    if (typeSearch.Amount < 0)
                    {
                        GUILayout.Label("Amount: ");

                        if (GUILayout.Button("Any", EditorStyles.miniButton))
                        {
                            typeSearch.Amount = 1;
                        }
                    }
                    else
                    {
                        // GUILayout.Label(" x" + typeSearch.Amount);
                        EditorGUIUtility.labelWidth = 60;
                        typeSearch.Amount           = EditorGUILayout.IntField("Amount: ", typeSearch.Amount);
                    }

                    typeSearch.Expanded = GUILayout.Toggle(typeSearch.Expanded, "?", EditorStyles.miniButton, GUILayout.ExpandWidth(false));


                    if (GUILayout.Button("X", EditorStyles.miniButton, GUILayout.ExpandWidth(false)))
                    {
                        removeMe = typeSearch;
                    }


                    GUILayout.EndHorizontal();

                    // if (typeSearch.Expanded)
                    {
                        InitFakeObj();

                        Component dummyComponent = dummyObj.GetComponent(typeSearch.Type);

                        SerializedObject   obj      = new SerializedObject(dummyComponent);
                        SerializedProperty iterator = obj.GetIterator();

                        bool enterChildren = true;
                        while (iterator.NextVisible(enterChildren))
                        {
                            using (new EditorGUI.DisabledScope("m_Script" == iterator.propertyPath))
                            {
                                if (typeSearch.Expanded)
                                {
                                    if (typeSearch.SerializedVars.Contains(iterator.name))
                                    {
                                        if (!GUILayout.Toggle(true, iterator.displayName))
                                        {
                                            typeSearch.SerializedVars.Remove(iterator.name);
                                        }
                                    }
                                    else
                                    {
                                        if (GUILayout.Toggle(false, iterator.displayName))
                                        {
                                            typeSearch.SerializedVars.Add(iterator.name);
                                        }
                                    }
                                }
                                else
                                {
                                    if (typeSearch.SerializedVars.Contains(iterator.name))
                                    {
                                        GUILayout.BeginHorizontal();
                                        EditorGUILayout.PropertyField(iterator, true);

                                        if (GUILayout.Button("X", GUILayout.Height(14), GUILayout.Width(20)))
                                        {
                                            typeSearch.SerializedVars.Remove(iterator.name);
                                        }

                                        GUILayout.EndHorizontal();
                                    }
                                }
                            }

                            enterChildren = false;
                        }

                        obj.ApplyModifiedProperties();
                    }
                }

                if (removeMe != null)
                {
                    components.Remove(removeMe);
                }
                GUILayout.EndVertical();
            }

            base.DrawSearchGui();
        }