Example #1
0
    // Use this for initialization
    void Start()
    {
        List <Archive> allArchives = DataCenter.Instance.GetAllArchive();

        //不存在id为1的存档就来一份吧~
        if (allArchives.All(a => a.ID != 1))
        {
            DataCenter.Instance.Save(1, "firstTest", "testIntro");
        }

        //加载存档1
        DataCenter.Instance.LoadArchive(1);

        //测试任务
        MetaTasksData metaTaskDataSystem = DataCenter.Instance.GetMetaData <MetaTasksData>();


        RuntimeTasksData runtimeTaskData = DataCenter.Instance.GetEntity <RuntimeTasksData>();

        List <RunTimeTaskInfo> allCanDotask = runtimeTaskData.GetAllToDoList();

        RunTimeTaskInfo firstTask = allCanDotask[0];

        //根据runtimetask的id去metaTask里拿Task的所有信息
        MetaTaskInfo firstTaskMetaInfo = metaTaskDataSystem[firstTask.ID];

        Debug.Log(firstTaskMetaInfo.MetaTaskNode.TaskLocation);
        Debug.Log(firstTaskMetaInfo.MetaTaskNode.TaskTitile);
        Debug.Log(firstTaskMetaInfo.MetaTaskNode.TaskType);

        //******任务具体逻辑************

        //任务完成
        firstTask.IsOver = true;
        //获取新任务继续
        var newTaskList = runtimeTaskData.GetAllToDoList();

        //获取按键数据
        KeyContactData keyContactData = DataCenter.Instance.GetEntity <KeyContactData>();

        keyContactData.SetKeyContactStruct(1, new KeyContactStruct()
        {
            id = 1, key = 2, keyContactType = EnumKeyContactType.Action
        });
        var keyDataStructs = keyContactData.GetKeyContactStruct(1);

        //获取 PlayerState
        PlayerState playerState = DataCenter.Instance.GetEntity <PlayerState>();

        playerState.Agility = 1;
        playerState.Level   = 20;



        //写入数据
        DataCenter.Instance.Save(2, "test2", "test2");
        Debug.Log("存档成功");
    }
Example #2
0
    /// <summary>
    /// 当隐藏时处理
    /// </summary>
    private void OnDisable()
    {
        UIManager.Instance.KeyUpHandle -= Instance_KeyUpHandle;
        if (nowKeySettingLattice)
        {
            nowKeySettingLattice.LostForcus();
        }
        //保存状态
        UIFocus[] uiKeySettingLatticeArray = keySettingFocusPath.UIFocuesArray;
        foreach (UIFocus item in uiKeySettingLatticeArray)
        {
            if (!item)
            {
                continue;
            }
            UIFocusKeySettingLattice uiKeySettingLattice = item as UIFocusKeySettingLattice;
            int inputKey = uiKeySettingLattice.GetKeySettingInput();//输入的按键值
            if (uiKeySettingLattice)
            {
                //KeyContactStruct[] keyContactStructs = keyContactData.GetKeyContactStruct(inputKey);
                KeyContactStruct newTarget = new KeyContactStruct();
                newTarget.id             = uiKeySettingLattice.id;
                newTarget.keyContactType = uiKeySettingLattice.keyLatticeType;
                //if (keyContactStructs.Length > 0)
                //{
                //    newTarget = keyContactStructs[0];
                //}
                //else
                //{
                //设置对象的名字
                switch (newTarget.keyContactType)
                {
                case EnumKeyContactType.None:
                    newTarget.name = "None";
                    break;

                case EnumKeyContactType.Skill:
                    EnumSkillType[] skillTypes = SkillCombineStaticTools.GetCombineSkills(newTarget.id);
                    newTarget.name = SkillCombineStaticTools.GetCombineSkillsName(skillTypes);
                    //如果是火球术
                    if (newTarget.id == SkillCombineStaticTools.GetCombineSkillKey(new EnumSkillType[] { EnumSkillType.FS01, EnumSkillType.YSX01 }))
                    {
                        //给任务系统填入状态
                        INowTaskState iNowTaskState = GameState.Instance.GetEntity <INowTaskState>();
                        iNowTaskState.CheckNowTask(EnumCheckTaskType.Special, (int)TaskMap.Enums.EnumTaskSpecialCheck.SetFireSkillToLattice);
                    }
                    break;

                case EnumKeyContactType.Prap:
                    PlayGoods playGoods = playerState.PlayerAllGoods.FirstOrDefault(temp => temp.ID == newTarget.id);
                    newTarget.name = playGoods.GoodsInfo.GoodsName;
                    break;

                case EnumKeyContactType.Action:
                    newTarget.name = "暂无功能";
                    break;
                }
                //}
                keyContactData.SetKeyContactStruct(inputKey, newTarget);
            }
        }
    }
    /// <summary>
    /// 新游戏按钮按下事件
    /// </summary>
    public void NewGameButtonClick()
    {
        if (isLoadedScene || entranceType != EnumEntranceType.Start)
        {
            return;
        }
        //切换场景
        nowStartFocus = EventSystem.current.currentSelectedGameObject.GetComponent <UIFocus>();
        List <Archive> archiveList    = DataCenter.Instance.GetAllArchive();//获取所有存档名
        Archive        defaultArchive = archiveList.FirstOrDefault(temp => temp.ID == 1);

        if (defaultArchive == null)
        {
            DataCenter.Instance.Save(1, "存档", "默认存档");
            DataCenter.Instance.LoadArchive(1);
            //设置默认数据
            //设置默认的按键 1:1_183
            KeyContactData keyContactData = DataCenter.Instance.GetEntity <KeyContactData>();
            //设置采集键
            Sprite collectSprite = SpriteManager.GetSrpite("1:1_183");
            keyContactData.SetKeyContactStruct((int)EnumInputType.A, new KeyContactStruct()
            {
                keyContactType = EnumKeyContactType.Action, name = "采集", Sprite = collectSprite, id = 1
            }, EnumKeyContactDataZone.Collect);
            //设置对话键
            Sprite talkSprite = SpriteManager.GetSrpite("1:1_165");
            keyContactData.SetKeyContactStruct((int)EnumInputType.A, new KeyContactStruct()
            {
                keyContactType = EnumKeyContactType.Action, name = "交谈", Sprite = talkSprite, id = 2
            }, EnumKeyContactDataZone.Dialogue);
            //设置功能键
            Sprite actionSprite = SpriteManager.GetSrpite("1:1_183");
            keyContactData.SetKeyContactStruct((int)EnumInputType.A, new KeyContactStruct()
            {
                keyContactType = EnumKeyContactType.Action, name = "交互", Sprite = actionSprite, id = 3
            }, EnumKeyContactDataZone.Action);
            //设置默认的等级
            PlayerState playerState = DataCenter.Instance.GetEntity <PlayerState>();
            playerState.Level           = 1;
            playerState.Experience      = 0;
            playerState.RoleOfRaceRoute = new List <RoleOfRace>();
            //再次保存
            DataCenter.Instance.Save(1, "存档", "默认存档");

            #region 测试用添加的数据
            /*测试代码*/
            //添加技能点
            EnumSkillType[] enumSkillTypes = Enum.GetValues(typeof(EnumSkillType)).OfType <EnumSkillType>().Where(temp =>
                                                                                                                  (temp <EnumSkillType.MagicCombinedLevel1End && temp> EnumSkillType.MagicCombinedLevel1Start) ||
                                                                                                                  (temp <EnumSkillType.MagicCombinedLevel2End && temp> EnumSkillType.MagicCombinedLevel2Start) ||
                                                                                                                  (temp <EnumSkillType.MagicCombinedLevel3End && temp> EnumSkillType.MagicCombinedLevel3Start) ||
                                                                                                                  (temp <EnumSkillType.MagicCombinedLevel4End && temp> EnumSkillType.MagicCombinedLevel4Start)
                                                                                                                  ).ToArray();
            enumSkillTypes = Enum.GetValues(typeof(EnumSkillType)).OfType <EnumSkillType>().Distinct().ToArray();//所有技能加1
            foreach (var item in enumSkillTypes)
            {
                playerState.SkillPoint.Add(item, 1);
            }
            //playerState.SkillPoint.Add(EnumSkillType.MagicRelease, 1);
            playerState.FreedomPoint = 2;
            //添加按键
            keyContactData = DataCenter.Instance.GetEntity <KeyContactData>();
            keyContactData.SetKeyContactStruct((int)EnumInputType.A, new KeyContactStruct()
            {
                id = 199, key = (int)EnumInputType.A, keyContactType = EnumKeyContactType.Skill, name = "释放魔法"
            });
            keyContactData.SetKeyContactStruct((int)EnumInputType.Up, new KeyContactStruct()
            {
                id = 1001, key = (int)EnumInputType.Up, keyContactType = EnumKeyContactType.Skill, name = "奥术弹"
            });
            keyContactData.SetKeyContactStruct((int)EnumInputType.Right, new KeyContactStruct()
            {
                id = 1101, key = (int)EnumInputType.Right, keyContactType = EnumKeyContactType.Skill, name = "火元素"
            });
            keyContactData.SetKeyContactStruct((int)EnumInputType.Left, new KeyContactStruct()
            {
                id = 1004, key = (int)EnumInputType.Left, keyContactType = EnumKeyContactType.Skill, name = "魔力导向"
            });
            keyContactData.SetKeyContactStruct((int)EnumInputType.Down, new KeyContactStruct()
            {
                id = 1201, key = (int)EnumInputType.Down, keyContactType = EnumKeyContactType.Skill, name = "连续魔力导向"
            });
            keyContactData.SetKeyContactStruct((int)EnumInputType.X, new KeyContactStruct()
            {
                id = 201, key = (int)EnumInputType.X, keyContactType = EnumKeyContactType.Skill, name = "普通攻击"
            });
            keyContactData.SetKeyContactStruct((int)EnumInputType.Y, new KeyContactStruct()
            {
                id = (int)EnumSkillType.JAS03, /*key = (int)EnumInputType.Y,*/ keyContactType = EnumKeyContactType.Skill, name = "燕返"
            });
            keyContactData.SetKeyContactStruct((int)EnumInputType.B, new KeyContactStruct()
            {
                id = (int)EnumSkillType.ZS03, keyContactType = EnumKeyContactType.Skill, name = "冲锋"
            });
            int key = (int)(EnumInputType.A | EnumInputType.LB);
            keyContactData.SetKeyContactStruct(key, new KeyContactStruct()
            {
                id = (int)EnumSkillType.KZS03, key = key, keyContactType = EnumKeyContactType.Skill, name = "战吼"
            });
            //添加装备
            //int playGoodsID = NowTimeToID.GetNowID(DataCenter.Instance.GetEntity<GameRunnedState>());
            //Goods goods = new Goods(EnumGoodsType.XJJ, "测试武器", 1, 10, "123");
            //goods.goodsAbilities.Add(new GoodsAbility() { AbilibityKind = EnumGoodsAbility.ASPD, Value = 10 });
            //goods.SpriteName = "1:1_226";

            //PlayGoods playGoods = new PlayGoods(playGoodsID, goods, GoodsLocation.Package);
            //playerState.PlayerAllGoods.Add(playGoods);
            //playerState.Sprice = 10000;
            /*****测试代码结束*****/

            #endregion

            //隐藏该面板显示创建面板的种族选择面板
            entranceType = EnumEntranceType.Transition;
            StartCoroutine(CrossoverMaskImageAlpha(1, () =>
            {
                startRect.gameObject.SetActive(false);
                createRect.gameObject.SetActive(true);
                roleOfRaceRect.gameObject.SetActive(true);
                nameInputRect.gameObject.SetActive(false);
                StartCoroutine(CrossoverMaskImageAlpha(0, () =>
                {
                    entranceType = EnumEntranceType.Create_SelectRoleOfRace;
                    InitCreateSelectRoleOfRace();
                }));
            }));
            #region 老版的直接加载
            //DataCenter.Instance.Save(1, "存档", "默认存档");
            //DataCenter.Instance.LoadArchive(1);
            ////设置默认数据
            ////设置默认的按键 1:1_183
            //KeyContactData keyContactData = DataCenter.Instance.GetEntity<KeyContactData>();
            ////设置采集键
            //Sprite collectSprite = SpriteManager.GetSrpite("1:1_183");
            //keyContactData.SetKeyContactStruct((int)EnumInputType.A, new KeyContactStruct() { keyContactType = EnumKeyContactType.Action, name = "采集", Sprite = collectSprite, id = 1 }, EnumKeyContactDataZone.Collect);
            ////设置对话键
            //Sprite talkSprite = SpriteManager.GetSrpite("1:1_165");
            //keyContactData.SetKeyContactStruct((int)EnumInputType.A, new KeyContactStruct() { keyContactType = EnumKeyContactType.Action, name = "交谈", Sprite = talkSprite, id = 2 }, EnumKeyContactDataZone.Dialogue);
            ////设置默认的等级
            //PlayerState playerState = DataCenter.Instance.GetEntity<PlayerState>();
            //playerState.Level = 1;
            //playerState.Experience = 0;
            //playerState.RoleOfRaceRoute = RoleOfRaceHelper.GetAllEvolvePath(RoleOfRace.Human).FirstOrDefault();
            ////再次保存
            //DataCenter.Instance.Save(1, "存档", "默认存档");
            ////获取数据并切换场景
            //GetArchiveData();
            #endregion
        }
    }