/// <summary>
    /// 获得当前游戏数据,方便存储
    /// </summary>
    /// <returns></returns>
    public Model_Archiving GetHeroCurrentData()
    {
        Model_Archiving archiving = new Model_Archiving();

        archiving.x      = (int)transform.position.x;
        archiving.y      = (int)transform.position.y;
        archiving.z      = (int)transform.position.z;
        archiving.hp     = GetCurrentHealth();
        archiving.mp     = GetMaxMagic();
        archiving.exp    = GetExp();
        archiving.gold   = GetGold();
        archiving.diamod = GetDiamods();
        archiving.level  = GetLevel();

        foreach (Ctrl_Slot ctrlSlot in Ctrl_InventoryManager.Instance.ActiveSlot())
        {
            archiving.items.Add(new Model_Archiving.Item()
            {
                itemId       = ctrlSlot.Item.id,
                currentCount = ctrlSlot.Item.currentNumber
            });
        }

        archiving.equips = GetComponent <Ctrl_PlayerEquipmentProperty>().GetEquipData();

        return(archiving);
    }
 /// <summary>
 /// 存档,读档有重复性,这里获得当前父对象的激活状态来判断当前是存档还是读档,读档和存档只会机会一个脚本
 /// </summary>
 /// <param name="eventData"></param>
 public void OnPointerDown(PointerEventData eventData)
 {
     //如果是存档模式
     if (Ctrl_PlayerAccessFile.Instance.IsArchiving)
     {
         //当前插槽没有任何数据
         if (Archiving == null)
         {
             Model_Archiving archiving = Ctrl_HeroProperty.Instance.GetHeroCurrentData(); //存档的属性
             Archiving = archiving;                                                       //存储存档赋值
             Ctrl_GameReading.Instance.SaveGame(Index);                                   //存档操作
             GetComponent <View_ArchivingItem>().UpdateIndex("存档" + (Index + 1));         //存档名称
             deleteBtn.SetActive(true);                                                   //显示删档按钮
         }
         else
         {
             Ctrl_TootipManager.Instance.ShowAgreeCancel("是否覆盖当前存档");
             Ctrl_TootipManager.Instance.AgreeCancel.GetComponent <Ctrl_AgreeCancelTootip>().del_AgreeCancel +=
                 OverwriteArchive;
         }
     }
     //读档模式
     else
     {
         if (Archiving != null)
         {
             Ctrl_GameReading.Instance.LoadGame(Archiving);
         }
     }
 }
    /// <summary>
    /// 覆盖存档
    /// </summary>
    private void OverwriteArchive()
    {
        Model_Archiving archiving = Ctrl_HeroProperty.Instance.GetHeroCurrentData(); //存档的属性

        Archiving = archiving;                                                       //存储存档赋值
        Ctrl_GameReading.Instance.SaveGame(Index);                                   //存档操作
        GetComponent <View_ArchivingItem>().UpdateIndex("存档" + (Index + 1).ToString());
    }
Beispiel #4
0
    /// <summary>
    /// 读档
    /// </summary>
    /// <param name="archiving"></param>
    public void LoadGame(Model_Archiving archiving)
    {
        Ctrl_HeroProperty.Instance.Gold    = archiving.gold;
        Ctrl_HeroProperty.Instance.Diamods = archiving.diamod;
        Ctrl_HeroProperty.Instance.gameObject.transform.position = new Vector3(archiving.x, archiving.y, archiving.z);
        Ctrl_HeroProperty.Instance.SetCurrentHealth(archiving.hp);
        Ctrl_HeroProperty.Instance.SetCurrentMagic(archiving.mp);
        Ctrl_HeroProperty.Instance.SetLevel(archiving.level);
        Ctrl_HeroProperty.Instance.SetCurrentExp(archiving.exp);
        //清空现有的物品
        foreach (Ctrl_Slot slot in Ctrl_InventoryManager.Instance.ActiveSlot())
        {
            slot.Item = null;
        }

        //得到存档的物品
        foreach (Model_Archiving.Item item in archiving.items)
        {
            for (int i = 0; i < item.currentCount; i++)
            {
                Ctrl_InventoryManager.Instance.AddItem(item.itemId);
            }
        }

        foreach (Model_Archiving.Equip equip in archiving.equips)
        {
            switch (equip.equip)
            {
            case GlobalParametr.EquipmentType.None:
                break;

            case GlobalParametr.EquipmentType.Head:


                if (equip.itemId != -1)
                {
                    Ctrl_PlayerCharacter.Instance.GetCtrlEquipmentSlot(GlobalParametr.EquipmentType.Head.ToString())
                    .Item =
                        Ctrl_InventoryManager.Instance.NewItem(equip.itemId);
                }
                else
                {
                    Ctrl_PlayerCharacter.Instance.GetCtrlEquipmentSlot(GlobalParametr.EquipmentType.Head.ToString())
                    .Item = null;
                }

                break;

            case GlobalParametr.EquipmentType.Neck:
                if (equip.itemId != -1)
                {
                    Ctrl_PlayerCharacter.Instance.GetCtrlEquipmentSlot(GlobalParametr.EquipmentType.Neck.ToString())
                    .Item =
                        Ctrl_InventoryManager.Instance.NewItem(equip.itemId);
                }
                else
                {
                    Ctrl_PlayerCharacter.Instance.GetCtrlEquipmentSlot(GlobalParametr.EquipmentType.Neck.ToString())
                    .Item = null;
                }

                break;

            case GlobalParametr.EquipmentType.Shoulders:
                if (equip.itemId != -1)
                {
                    Ctrl_PlayerCharacter.Instance
                    .GetCtrlEquipmentSlot(GlobalParametr.EquipmentType.Shoulders.ToString())
                    .Item =
                        Ctrl_InventoryManager.Instance.NewItem(equip.itemId);
                }
                else
                {
                    Ctrl_PlayerCharacter.Instance
                    .GetCtrlEquipmentSlot(GlobalParametr.EquipmentType.Shoulders.ToString())
                    .Item = null;
                }

                break;

            case GlobalParametr.EquipmentType.Chest:
                if (equip.itemId != -1)
                {
                    Ctrl_PlayerCharacter.Instance
                    .GetCtrlEquipmentSlot(GlobalParametr.EquipmentType.Chest.ToString())
                    .Item =
                        Ctrl_InventoryManager.Instance.NewItem(equip.itemId);
                }
                else
                {
                    Ctrl_PlayerCharacter.Instance
                    .GetCtrlEquipmentSlot(GlobalParametr.EquipmentType.Chest.ToString())
                    .Item = null;
                }

                break;

            case GlobalParametr.EquipmentType.Back:
                if (equip.itemId != -1)
                {
                    Ctrl_PlayerCharacter.Instance.GetCtrlEquipmentSlot(GlobalParametr.EquipmentType.Back.ToString())
                    .Item =
                        Ctrl_InventoryManager.Instance.NewItem(equip.itemId);
                }
                else
                {
                    Ctrl_PlayerCharacter.Instance.GetCtrlEquipmentSlot(GlobalParametr.EquipmentType.Back.ToString())
                    .Item = null;
                }

                break;

            case GlobalParametr.EquipmentType.Bracer:
                if (equip.itemId != -1)
                {
                    Ctrl_PlayerCharacter.Instance
                    .GetCtrlEquipmentSlot(GlobalParametr.EquipmentType.Bracer.ToString())
                    .Item =
                        Ctrl_InventoryManager.Instance.NewItem(equip.itemId);
                }
                else
                {
                    Ctrl_PlayerCharacter.Instance
                    .GetCtrlEquipmentSlot(GlobalParametr.EquipmentType.Bracer.ToString())
                    .Item = null;
                }

                break;

            case GlobalParametr.EquipmentType.Gloves:
                if (equip.itemId != -1)
                {
                    Ctrl_PlayerCharacter.Instance
                    .GetCtrlEquipmentSlot(GlobalParametr.EquipmentType.Gloves.ToString())
                    .Item =
                        Ctrl_InventoryManager.Instance.NewItem(equip.itemId);
                }
                else
                {
                    Ctrl_PlayerCharacter.Instance
                    .GetCtrlEquipmentSlot(GlobalParametr.EquipmentType.Gloves.ToString())
                    .Item = null;
                }

                break;

            case GlobalParametr.EquipmentType.Belt:
                if (equip.itemId != -1)
                {
                    Ctrl_PlayerCharacter.Instance.GetCtrlEquipmentSlot(GlobalParametr.EquipmentType.Belt.ToString())
                    .Item =
                        Ctrl_InventoryManager.Instance.NewItem(equip.itemId);
                }
                else
                {
                    Ctrl_PlayerCharacter.Instance.GetCtrlEquipmentSlot(GlobalParametr.EquipmentType.Belt.ToString())
                    .Item = null;
                }

                break;

            case GlobalParametr.EquipmentType.Pants:
                if (equip.itemId != -1)
                {
                    Ctrl_PlayerCharacter.Instance
                    .GetCtrlEquipmentSlot(GlobalParametr.EquipmentType.Pants.ToString())
                    .Item =
                        Ctrl_InventoryManager.Instance.NewItem(equip.itemId);
                }
                else
                {
                    Ctrl_PlayerCharacter.Instance
                    .GetCtrlEquipmentSlot(GlobalParametr.EquipmentType.Pants.ToString())
                    .Item = null;
                }

                break;

            case GlobalParametr.EquipmentType.Boots:
                if (equip.itemId != -1)
                {
                    Ctrl_PlayerCharacter.Instance
                    .GetCtrlEquipmentSlot(GlobalParametr.EquipmentType.Boots.ToString())
                    .Item =
                        Ctrl_InventoryManager.Instance.NewItem(equip.itemId);
                }
                else
                {
                    Ctrl_PlayerCharacter.Instance
                    .GetCtrlEquipmentSlot(GlobalParametr.EquipmentType.Boots.ToString())
                    .Item = null;
                }


                break;

            case GlobalParametr.EquipmentType.Finger:
                if (equip.itemId != -1)
                {
                    Ctrl_PlayerCharacter.Instance
                    .GetCtrlEquipmentSlot(GlobalParametr.EquipmentType.Finger.ToString())
                    .Item =
                        Ctrl_InventoryManager.Instance.NewItem(equip.itemId);
                }
                else
                {
                    Ctrl_PlayerCharacter.Instance
                    .GetCtrlEquipmentSlot(GlobalParametr.EquipmentType.Finger.ToString())
                    .Item = null;
                }

                break;

            case GlobalParametr.EquipmentType.Trinket:
                if (equip.itemId != -1)
                {
                    Ctrl_PlayerCharacter.Instance
                    .GetCtrlEquipmentSlot(GlobalParametr.EquipmentType.Trinket.ToString())
                    .Item =
                        Ctrl_InventoryManager.Instance.NewItem(equip.itemId);
                }
                else
                {
                    Ctrl_PlayerCharacter.Instance
                    .GetCtrlEquipmentSlot(GlobalParametr.EquipmentType.Trinket.ToString())
                    .Item = null;
                }

                break;

            case GlobalParametr.EquipmentType.Weapon:
                if (equip.itemId != -1)
                {
                    Ctrl_PlayerCharacter.Instance
                    .GetCtrlEquipmentSlot(GlobalParametr.EquipmentType.Weapon.ToString())
                    .Item =
                        Ctrl_InventoryManager.Instance.NewItem(equip.itemId);
                }
                else
                {
                    Ctrl_PlayerCharacter.Instance
                    .GetCtrlEquipmentSlot(GlobalParametr.EquipmentType.Weapon.ToString())
                    .Item = null;
                }

                break;

            case GlobalParametr.EquipmentType.Shield:
                if (equip.itemId != -1)
                {
                    Ctrl_PlayerCharacter.Instance
                    .GetCtrlEquipmentSlot(GlobalParametr.EquipmentType.Shield.ToString())
                    .Item =
                        Ctrl_InventoryManager.Instance.NewItem(equip.itemId);
                }
                else
                {
                    Ctrl_PlayerCharacter.Instance
                    .GetCtrlEquipmentSlot(GlobalParametr.EquipmentType.Shield.ToString())
                    .Item = null;
                }

                break;

            default:
                throw new ArgumentOutOfRangeException();
            }
        }
    }