Ejemplo n.º 1
0
    /// <summary> 업그레이드 </summary>
    public void Upgrade(BattleQuest battleQuest, int upgradeAmount = 1)
    {
        //if (battleQuest.level == 1)
        //    UnlockQuest(battleQuest);

        //업그레이드 비용
        double upgradeCost = battleQuest.GetUpgradeCost(upgradeAmount);

        //비용 모자라면 아무일 없음
        if (battleGroup.battleLevelUpController.totalExp < upgradeCost)
        {
            return;
        }

        //비용 차감
        battleGroup.battleLevelUpController.totalExp -= upgradeCost;

        //레벨 증가
        battleQuest.level += upgradeAmount;

        //데이타 저장
        SaveQuestData(battleQuest);

        //if (battleQuest.level == 1)
        //    UpdateUnlockableIndex();
    }
Ejemplo n.º 2
0
    public void SaveQuestData(BattleQuest quest)
    {
        BattleQuestSaveDataQuest data = quest.saveData;

        if (data == null)
        {
            data           = new BattleQuestSaveDataQuest(quest);
            quest.saveData = data;
        }

        quest.lastSaveTime = Time.time;

        data.InitData(quest);

        JsonWriter jsonWriter = new JsonWriter();

        jsonWriter.PrettyPrint = true;
        JsonMapper.ToJson(data.saveForm, jsonWriter);
        string json = jsonWriter.ToString();
        //string json2 = JsonUtility.ToJson(data);  //이걸로 하면 몇몇 타입의 필드가 json에서 누락됨

        string fileName = GetSaveFileName(quest);

        File.WriteAllText(fileName, json);
    }
Ejemplo n.º 3
0
    /// <summary> 퀘스트 자동 실행 해금 </summary>
    public void UnlockAutoQuestGold()
    {
        if (currentBattleQuestAuto == null)
        {
            return;
        }

        double autoQuestCost = currentBattleQuestAuto.autoQuestCost;

        if (autoQuestCost > battleGroup.battleLevelUpController.totalExp)
        {
            return;
        }

        //비용 차감
        battleGroup.battleLevelUpController.totalExp -= autoQuestCost;

        //자동 실행 on
        currentBattleQuestAuto.isAutoRepeat = true;

        //데이타 저장
        SaveQuestData(currentBattleQuestAuto);

        int curIndex = battleQuestList.IndexOf(currentBattleQuestAuto);

        if (curIndex + 1 < battleQuestList.Count)
        {
            currentBattleQuestAuto = battleQuestList[curIndex + 1];
        }
    }
Ejemplo n.º 4
0
    void OnRestartBattle(BattleGroup b)
    {
        for (int i = 0; i < battleQuestList.Count; i++)
        {
            BattleQuest quest = battleQuestList[i];
            if (quest.baseData.tier == 1)
            {
                quest.level = 1;
            }
            else
            {
                quest.level = 0;
            }

            quest.isAutoRepeat = false;
        }

        currentBattleQuestAuto = battleQuestList[0];

        unlockableIndex = 1;

        totalIncome = 0d;

        ClearSaveData();
    }
Ejemplo n.º 5
0
    void UpdateAutoQuestInfo()
    {
        BattleQuest quest = battleQuestController.currentBattleQuestAuto;

        if (quest == null)
        {
            buttonAutoQuestGold.interactable = false;
            buttonAutoQuestRuby.interactable = false;
            return;
        }

        //이미지
        AssetLoader.AssignImage(imageAutoQuestIcon, "sprite/quest", "Atlas_Quest_Icon", quest.baseData.image);

        //퀘스트 이름, 해금 비용(골드, 루비) 표시
        textAutoQuestName.text = quest.baseData.name;
        double autoQuestCost = quest.autoQuestCost;

        textAutoQuestCost.text     = autoQuestCost.ToStringABC();
        textAutoQuestCostRuby.text = quest.autoQuestCostRuby.ToString();

        buttonAutoQuestGold.interactable = quest.level > 0;
        buttonAutoQuestRuby.interactable = quest.level > 0;

        quest.onUnlocked += OnUnlockedCureentAutoQuest;
    }
Ejemplo n.º 6
0
    static public void UpdateQuestInfo()
    {
        double questIncome      = 0d;
        double questIncomeAuto  = 0d;
        double questIncomeTotal = 0d;

        questIncomeTotal = Instance.battleGroup.battleQuestController.totalIncome;

        for (int i = 0; i < Instance.battleGroup.battleQuestController.battleQuestList.Count; i++)
        {
            BattleQuest quest = Instance.battleGroup.battleQuestController.battleQuestList[i];
            if (quest.level == 0)
            {
                break;
            }

            if (quest.isAutoRepeat)
            {
                questIncomeAuto += quest.baseIncome * quest.level;
            }
            else
            {
                questIncome += quest.baseIncome * quest.level;
            }
        }

        Instance.textTotalQuestIcome.text      = questIncomeTotal.ToStringABC();
        Instance.textQuestIcomePerSec.text     = questIncome.ToStringABC();
        Instance.textQuestIcomeAutoPerSec.text = questIncomeAuto.ToStringABC();
    }
Ejemplo n.º 7
0
 public void InitData(BattleQuest battleQuest)
 {
     saveForm.Clear();
     saveForm.Add("id", battleQuest.baseData.id);
     saveForm.Add("level", battleQuest.level.ToString());
     //saveForm.Add("startTime", battleQuest.startTime.ToString());
     saveForm.Add("progress", battleQuest.progress.ToString());
     saveForm.Add("isAutoRepeat", battleQuest.isAutoRepeat.ToString());
 }
Ejemplo n.º 8
0
    void OnChangedTotalExp(BattleGroup b)
    {
        BattleQuest quest = battleQuestController.currentBattleQuestAuto;

        if (quest == null)
        {
            return;
        }

        //자동 퀘스트 버튼 활성/비활성
        buttonAutoQuestGold.interactable = quest.level > 0 && quest.autoQuestCost <= b.battleLevelUpController.totalExp;
    }
Ejemplo n.º 9
0
    IEnumerator UnlockAutoQuestRubyA()
    {
        if (currentBattleQuestAuto == null)
        {
            yield break;
        }

        //클라에서 먼저 한 번 검사
        double autoQuestCost = currentBattleQuestAuto.autoQuestCostRuby;

        if (autoQuestCost > MoneyManager.GetMoney(MoneyType.ruby).value)
        {
            UIPopupManager.ShowOKPopup("", "루비가 부족합니다.", null);
            yield break;
        }


        //서버 통신
        LoadingManager.Show();

        string  result = null;
        string  php    = "Battle.php";
        WWWForm form   = new WWWForm();

        form.AddField("type", 3);
        form.AddField("userID", User.Instance.userID);
        form.AddField("questID", currentBattleQuestAuto.baseData.id);

        yield return(StartCoroutine(WebServerConnectManager.Instance.WWWCoroutine(php, form, x => result = x)));

        LoadingManager.Close();

        //실제로 가지고 있는 루비 부족하면 실패 처리
        if (result == "false")
        {
            UIPopupManager.ShowOKPopup("", "루비가 부족합니다.", null);
            yield break;
        }

        //자동 실행 on
        currentBattleQuestAuto.isAutoRepeat = true;

        //데이타 저장
        SaveQuestData(currentBattleQuestAuto);

        int curIndex = battleQuestList.IndexOf(currentBattleQuestAuto);

        if (curIndex + 1 < battleQuestList.Count)
        {
            currentBattleQuestAuto = battleQuestList[curIndex + 1];
        }
    }
Ejemplo n.º 10
0
    /// <summary> 퀘스트 시작 </summary>
    public void StartQuest(BattleQuest battleQuest)
    {
        if (battleQuest.coroutineDoQuest != null)
        {
            return;
        }

        float startTime = Time.time;

        if (battleQuest.progress > 0f)
        {
            startTime = Time.time - battleQuest.baseData.time * battleQuest.progress;
        }

        battleQuest.coroutineDoQuest = StartCoroutine(battleQuest.DoQuest(startTime));
    }
Ejemplo n.º 11
0
    public void LoadData()
    {
        for (int i = 0; i < battleQuestList.Count; i++)
        {
            BattleQuest quest    = battleQuestList[i];
            string      fileName = GetSaveFileName(quest);

            if (!File.Exists(fileName))
            {
                continue;
            }

            string json = File.ReadAllText(fileName);

            //Debug.Log("[Load]" + fileName + ", " + json);

            JsonData jsonData = JsonMapper.ToObject(json);

            string id = JsonParser.ToString(jsonData["id"]);
            if (id != quest.baseData.id)
            {
                continue;
            }

            int level = JsonParser.ToInt(jsonData["level"]);
            //float startTime = JsonParser.ToFloat(jsonData["startTime"]);
            float progress = JsonParser.ToFloat(jsonData["progress"]);
            //bool isAutoRepeat = false;
            //if (jsonData.ContainsKey("isAutoRepeat"))
            bool isAutoRepeat = JsonParser.ToBool(jsonData["isAutoRepeat"]);

            quest.level = level;
            //quest.startTime = startTime;
            quest.progress     = progress;
            quest.isAutoRepeat = isAutoRepeat;

            quest.startTime = Time.time - quest.baseData.time * quest.progress;
            //Debug.Log(quest.isAutoRepeat + ", " + quest.progress);


            if (quest.isAutoRepeat || quest.progress > 0f)
            {
                StartQuest(quest);
            }
        }
    }
Ejemplo n.º 12
0
    void InitData()
    {
        List <BattleQuestBaseData> baseDataList = GameDataManager.battleQuestBaseDataDic.Values.ToList();

        for (int i = 0; i < baseDataList.Count; i++)
        {
            BattleQuestBaseData baseData = baseDataList[i];

            BattleQuest quest = new BattleQuest(this);
            quest.baseData = baseData;

            quest.onUnlocked += UpdateUnlockableIndex;

            battleQuestList.Add(quest);
        }

        //UpdateAutoQuest();

        isInitialized = true;
    }
Ejemplo n.º 13
0
    public void UnlockQuest(BattleQuest battleQuest)
    {
        //업그레이드 비용
        double cost = battleQuest.unlockCost;

        //비용 모자라면 아무일 없음
        if (battleGroup.battleLevelUpController.totalExp < cost)
        {
            return;
        }

        //비용 차감
        battleGroup.battleLevelUpController.totalExp -= cost;

        //레벨 증가
        battleQuest.level = 1;

        //데이타 저장
        SaveQuestData(battleQuest);

        UpdateUnlockableIndex();
    }
Ejemplo n.º 14
0
    /// <summary> 현재 해금 가능한 자동 퀘스트 갱신 </summary>
    void UpdateAutoQuest()
    {
        int index = -1;

        for (int i = 0; i < battleQuestList.Count; i++)
        {
            if (!battleQuestList[i].isAutoRepeat)
            {
                index = i;
                break;
            }
        }

        if (index == -1)
        {
            currentBattleQuestAuto = null;
        }
        else
        {
            currentBattleQuestAuto = battleQuestList[index];
        }
    }
Ejemplo n.º 15
0
    string GetSaveFileName(BattleQuest quest)
    {
        string fileName = Application.persistentDataPath + "/" + battleGroup.battleType + "_" + User.Instance.userID + "_" + quest.baseData.id + ".dat";

        return(fileName);
    }
Ejemplo n.º 16
0
 public BattleQuestSaveDataQuest(BattleQuest battleQuest)
 {
     InitData(battleQuest);
 }