Пример #1
0
    public void AddTarget(string desc, string id_target, int max)
    {
        QuestTarget target = new QuestTarget();

        target.set(desc, id_target, max);
        targets.Add(target);
    }
Пример #2
0
 // for reach quests
 public QuestBase(QuestType _questtype, int _amt, int _completeamount, int _rewardamount, RewardType _rewardtype)
 {
     m_QuestType       = _questtype;
     m_QuestTarget     = QuestTarget.NONE;
     m_Amount          = _amt;
     m_CompleteAmount  = _completeamount;
     m_QuestComplete   = false;
     m_questString     = _questtype + " level " + _completeamount;
     m_QuestReward     = _rewardamount;
     m_QuestRewardType = _rewardtype;
 }
Пример #3
0
 public QuestBase()
 {
     m_QuestType       = QuestType.NONE;
     m_QuestTarget     = QuestTarget.NONE;
     m_Amount          = 0;
     m_CompleteAmount  = 0;
     m_QuestComplete   = false;
     m_questString     = "";
     m_QuestReward     = 0;
     m_QuestRewardType = RewardType.NONE;
 }
Пример #4
0
 // for slay quests
 public QuestBase(QuestType _questtype, QuestTarget _questtarget, int _amt, int _completeamount, int _rewardamount, RewardType _rewardtype)
 {
     m_QuestType       = _questtype;
     m_QuestTarget     = _questtarget;
     m_Amount          = _amt;
     m_CompleteAmount  = _completeamount;
     m_QuestComplete   = false;
     m_questString     = _questtype + " " + _questtarget + " " + _completeamount + " times";
     m_QuestReward     = _rewardamount;
     m_QuestRewardType = _rewardtype;
 }
Пример #5
0
    /// <summary>
    ///
    /// </summary>
    /// <param name="num"></param>
    /// <param name="distance"></param>
    void generateTargets(int num, float distance)
    {
        //List<Vector2> mockTargets = MockProvider.getMockTargets(); //TODO

        for (int n = 0; n < num; n++)
        {
            GameObject  questTargetInstance = Instantiate(questTargetPrefab, transform);
            QuestTarget targetComponent     = questTargetInstance.GetComponent <QuestTarget>();
            targetComponent.init(GeoLocator.instance.getRandomCoordinate(GeoLocator.instance.deviceLocation, distance), this);
            questTargets.Add(targetComponent);
        }
    }
Пример #6
0
    /// <summary>
    /// 根据特定的XPath读取任务信息
    /// </summary>
    /// <param name="path">已包含特定信息,如任务名、序号等</param>
    /// <returns></returns>
    private static Quest _CreateQuestWithXPath(string path)
    {
        XmlElement root     = _GetXmlRootElement();
        XmlNode    nameNode = root.SelectSingleNode(path + "name");

        if (nameNode == null)
        {
            return(null);
        }

        string name        = nameNode.InnerText;
        string scene       = root.SelectSingleNode(path + "scene").InnerText;
        string description = root.SelectSingleNode(path + "description").InnerText;
        byte   star        = byte.Parse(root.SelectSingleNode(path + "stars").InnerText);

        ConstantDefine.QuestType type = (ConstantDefine.QuestType) byte.Parse(root.SelectSingleNode(path + "type").InnerText);
        Quest quest = null;

        switch (type)
        {
        case ConstantDefine.QuestType.Crusade:
            //任务目标
            List <QuestTarget <ConstantDefine.EnemyType> > targets = new List <QuestTarget <ConstantDefine.EnemyType> >();
            XmlNodeList idList     = root.SelectNodes(path + "target/id");
            XmlNodeList numberList = root.SelectNodes(path + "target/number");
            for (int i = 0; i < idList.Count; i++)
            {
                QuestTarget <ConstantDefine.EnemyType> questTarget = new QuestTarget <ConstantDefine.EnemyType>();
                questTarget.targetType      = (ConstantDefine.EnemyType) byte.Parse(idList[i].InnerText);
                questTarget.targetNumber    = byte.Parse(numberList[i].InnerText);
                questTarget.completedNumber = 0;
                targets.Add(questTarget);
            }
            //创建任务
            quest = new CrusadeQuest(name, scene, description, star, targets);
            break;

        case ConstantDefine.QuestType.Collect:
            //任务目标
            ConstantDefine.CollectionType collectionType = (ConstantDefine.CollectionType) byte.Parse(root.SelectSingleNode(path + "id").InnerText);
            byte number = byte.Parse(root.SelectSingleNode(path + "number").InnerText);
            //创建任务
            quest = new CollectionQuest(name, scene, description, star, collectionType, number);
            break;

        default:
            break;
        }
        quest.reward = GetRewardInfoFromXmlByAt(byte.Parse(root.SelectSingleNode(path + "reward").InnerText));
        return(quest);
    }
Пример #7
0
 //這個方法將會在完成任務之後被調用,比如說我們收集整齊所有物品,或者和特殊人員對話後,到達隱藏地點
 private void Awake()
 {
     if (instance == null)
     {
         instance = this;
     }
     else
     {
         if (instance != this)
         {
             Destroy(gameObject);
         }
     }
     DontDestroyOnLoad(gameObject);
 }
Пример #8
0
    public QuestTarget getNearestUnclompetedTarget()
    {
        QuestTarget        result     = null;
        List <QuestTarget> sortedList = questTargets.OrderBy(o => o.distanceToDevice).ToList <QuestTarget>();

        foreach (QuestTarget qt in sortedList)
        {
            if (qt.completed == false)
            {
                result = qt;
                break;
            }
        }

        return(result);
    }
Пример #9
0
 void checkNearestTargetDistance()
 {
     if (questTargets.Count > 0)
     {
         QuestTarget nearestTarget = getNearestTarget();
         if (nearestTarget.distanceToDevice < minTargetDistance && nearestTarget.distanceToDevice != -1)
         {
             Debug.Log("target in range!");
             if (nearestTarget.completed == false || (nearestTarget.completed && nearestTarget.itemInstance != null))
             {
                 Fog.instance.state = (int)Fog.states.clearing;
             }
             nearestTarget.onInRange();
         }
         else if (nearestTarget.distanceToDevice > minTargetDistance)
         {
             Fog.instance.state = (int)Fog.states.closing;
             Debug.Log("target out of range!");
             nearestTarget.onOutOfRange();
         }
     }
 }
Пример #10
0
    public QuestBase RandomizeQuest()
    {
        QuestBase newquest = new QuestBase();

        QuestType randomType = (QuestType)Random.Range((int)QuestType.NONE + 1, (int)QuestType.TOTAL);

        if (randomType == QuestType.SLAY)
        {
            QuestTarget randomTarget = (QuestTarget)Random.Range((int)QuestTarget.NONE + 1, (int)QuestTarget.TOTAL);



            newquest = new QuestBase(randomType, randomTarget, 0, Random.Range(1, 4) * 5, Random.Range(1, 10) * 10, RewardType.NOTES);
        }
        else if (randomType == QuestType.REACH)
        {
            int nextlevel = CTDungeon.Instance.currentFloor;

            if (CTDungeon.Instance.currentFloor == -1)
            {
                nextlevel = 0;
            }

            if (nextlevel % 10 == 0)
            {
                nextlevel++;
            }

            while (nextlevel % 10 != 0)
            {
                nextlevel++;
            }

            newquest = new QuestBase(QuestType.REACH, 0, nextlevel, Random.Range(1, 5) * 5, RewardType.GEMS);
        }

        return(newquest);
    }
Пример #11
0
 private void Start()
 {
     questTarget = GetComponent <QuestTarget>();
 }
Пример #12
0
    public bool LoadPlayerSave(CPlayer _player)
    {
        //Stats
        if (PlayerPrefs.HasKey("PlayerStats_Level"))
        {
            _player.SetStats(
                PlayerPrefs.GetInt("PlayerStats_Level"),
                PlayerPrefs.GetFloat("PlayerStats_CurrEXP"),
                PlayerPrefs.GetFloat("PlayerStats_MaxEXP"),
                PlayerPrefs.GetFloat("PlayerStats_EXPBoost"),
                PlayerPrefs.GetFloat("PlayerStats_CurrHP"),
                PlayerPrefs.GetFloat("PlayerStats_MaxHP"),
                PlayerPrefs.GetFloat("PlayerStats_CurrSP"),
                PlayerPrefs.GetFloat("PlayerStats_MaxSP"),
                PlayerPrefs.GetInt("PlayerStats_ATK"),
                PlayerPrefs.GetInt("PlayerStats_DEF"),
                PlayerPrefs.GetFloat("PlayerStats_PlayRate"),
                PlayerPrefs.GetFloat("PlayerStats_MoveSpeed"));
        }
        else
        {
            _player.SetStats(1, 0, 10, 1, 50, 50, 100, 100, 10, 10, 1, 5);
        }

        //Items
        if (PlayerPrefs.HasKey("PlayerItems_Notes"))
        {
            _player.m_InventorySystem.Init(
                PlayerPrefs.GetInt("PlayerItems_Notes"),
                PlayerPrefs.GetInt("PlayerItems_Gems"),
                PlayerPrefs.GetInt("PlayerItems_HPRation"),
                PlayerPrefs.GetInt("PlayerItems_HPPotion"),
                PlayerPrefs.GetInt("PlayerItems_HPElixir"),
                PlayerPrefs.GetInt("PlayerItems_SPPotion"),
                PlayerPrefs.GetInt("PlayerItems_SPElixir"),
                PlayerPrefs.GetInt("PlayerItems_ReviveTix"));
        }
        else
        {
            _player.m_InventorySystem.Init(0, 0, 0, 0, 0, 0, 0, 0);
        }

        //Weapon
        if (PlayerPrefs.HasKey("PlayerWeapon_Equipped"))
        {
            switch (PlayerPrefs.GetString("PlayerWeapon_Equipped"))
            {
            case "TestWeapon":
                _player.EquippedWeapon = new TestWeapon();
                break;

            case "Melodica":
                _player.EquippedWeapon = new Melodica();
                break;

            case "Guitar":
                _player.EquippedWeapon = new Guitar();
                break;

            case "Recorder":
                _player.EquippedWeapon = new Recorder();
                break;
                //case "Piano":
                //    _player.EquippedWeapon = new Weapon_Piano();
                //    break;
                //case "Flute":
                //    _player.EquippedWeapon = new Weapon_Flute();
                //    break;
                //case "Electric Guitar":
                //    _player.EquippedWeapon = new Weapon_ElectricGuitar();
                //    break;
                //case "Harp":
                //    _player.EquippedWeapon = new Harp();
                //    break;
                //case "Trumpet":
                //    _player.EquippedWeapon = new Weapon_Trumpet();
                //    break;
                //case "Drum":
                //    _player.EquippedWeapon = new Weapon_Drum();
                //    break;
            }
        }
        else
        {
            _player.EquippedWeapon = new Melodica();
        }

        //Quest
        for (int i = 0; i < 3; ++i)
        {
            if (!PlayerPrefs.HasKey("PlayerQuestName" + i))
            {
                continue;
            }

            QuestBase  newquest   = new QuestBase();
            RewardType rewardType = RewardType.NONE;
            if (PlayerPrefs.GetString("PlayerQuestRewardType" + i).Contains(RewardType.NOTES.ToString()))
            {
                rewardType = RewardType.NOTES;
            }
            else if (PlayerPrefs.GetString("PlayerQuestRewardType" + i).Contains(RewardType.GEMS.ToString()))
            {
                rewardType = RewardType.GEMS;
            }



            if (PlayerPrefs.GetString("PlayerQuestType" + i).Contains(QuestType.REACH.ToString()))
            {
                newquest = new QuestBase(QuestType.REACH,
                                         PlayerPrefs.GetInt("PlayerQuestCurrAmt" + i),
                                         PlayerPrefs.GetInt("PlayerQuestReqAmt" + i),
                                         PlayerPrefs.GetInt("PlayerQuestReward" + i),
                                         rewardType);
            }
            else if (PlayerPrefs.GetString("PlayerQuestType" + i).Contains(QuestType.SLAY.ToString()))
            {
                QuestTarget questtarget = QuestTarget.NONE;
                if (PlayerPrefs.GetString("PlayerQuestTarget" + i).Contains(QuestTarget.NOISE.ToString()))
                {
                    questtarget = QuestTarget.NOISE;
                }


                newquest = new QuestBase(QuestType.REACH,
                                         questtarget,
                                         PlayerPrefs.GetInt("PlayerQuestCurrAmt" + i),
                                         PlayerPrefs.GetInt("PlayerQuestReqAmt" + i),
                                         PlayerPrefs.GetInt("PlayerQuestReward" + i),
                                         rewardType);
            }

            _player.AddNewQuest(newquest);
        }


        return(true);
    }
 public QuestObjectiveKill(int neededKills, QuestTarget questTargetType, params Npc[] targets)
 {
     m_neededKillCount = neededKills;
     m_targetType      = questTargetType;
     m_targets         = targets;
 }
 /// <summary>
 /// Add kill objective to quest, one objective of this type per quest
 /// </summary>
 /// <param name="count"></param>
 /// <param name="targetType"></param>
 /// <param name="targets"></param>
 public void AddKillObjective(int count, QuestTarget targetType, params Npc[] targets)
 {
     m_objectives.Add(QuestObjectiveType.Kill, new QuestObjectiveKill(count, targetType, targets));
     m_description += m_objectives[QuestObjectiveType.Kill].ToString();
 }
Пример #15
0
    public static void ReadQuest(string fileName, string outFileName)
    {
        bool newFile = false;

        QuestDataList questDataList = null;

        UnityEngine.Object oldFile = AssetDatabase.LoadAssetAtPath(outFileName, typeof(QuestDataList));
        if (oldFile == null)
        {
            newFile       = true;
            questDataList = ScriptableObject.CreateInstance(typeof(QuestDataList)) as QuestDataList;
        }
        else
        {
            questDataList = oldFile as QuestDataList;
        }

        questDataList.dataList.Clear();

        string jsonStr = File.ReadAllText(fileName);

        JsonHashtable ht = FCJson.jsonDecode(jsonStr) as JsonHashtable;

        foreach (System.Object obj in ht.ValueList)
        {
            Hashtable data = obj as Hashtable;

            QuestData newData = new QuestData();

            newData.quest_id               = (int)data["quest_id"];
            newData.quest_name             = (string)data["quest_name"];
            newData.giver                  = (string)data["giver"];
            newData.description            = (string)data["description"];
            newData.status                 = (QuestStatus)(int)data["status"];
            newData.quest_type             = (QuestType)(int)data["quest_type"];
            newData.cycle_type             = (QuestCycleType)(int)data["cycle_type"];
            newData.start_offset           = (int)(data["start_offset"]);
            newData.end_offset             = (int)(data["end_offset"]);
            newData.recommended_level_name = (string)data["recommended_level_name"];

            //quest target
            List <QuestTarget> targetList = newData.target_list;
            for (int j = 1; j <= 2; j++)
            {
                int targetType = (int)data["target_type" + j.ToString()];
                if (targetType != -1)
                {
                    QuestTarget target = new QuestTarget();
                    target.target_type = (QuestTargetType)targetType;

                    target.target_id    = (string)data["target_id" + j.ToString()];
                    target.target_var1  = (string)data["target_var" + j.ToString()];
                    target.target_count = (int)data["target_count" + j.ToString()];

                    targetList.Add(target);
                }
            }

            newData.reward_exp = (int)(data["reward_exp"]);
            newData.reward_sc  = (int)(data["reward_sc"]);
            newData.reward_hc  = (int)(data["reward_hc"]);

            //reward items
            List <QuestRewardItem> itemList = newData.reward_item_list;
            for (int j = 1; j <= 4; j++)
            {
                string rewardID = (string)data["reward_item_id" + j.ToString()];
                if (rewardID != "")
                {
                    QuestRewardItem item = new QuestRewardItem();
                    item.reward_item_id    = rewardID;
                    item.reward_role       = (EnumRole)(int)data["reward_role" + j.ToString()];
                    item.reward_item_count = (int)data["reward_item_count" + j.ToString()];

                    itemList.Add(item);
                }
            }

            questDataList.dataList.Add(newData);
        }

        if (newFile)
        {
            AssetDatabase.CreateAsset(questDataList, outFileName);
        }
        else
        {
            EditorUtility.SetDirty(questDataList);
        }

        Debug.Log(questDataList.dataList.Count + " quest records imported.");
    }
Пример #16
0
    /// <summary>
    /// 根据特定的XPath读取任务信息
    /// </summary>
    /// <param name="path">已包含特定信息,如任务名、序号等</param>
    /// <returns></returns>
    private static Quest _CreateQuestWithXPath(string path)
    {
        XmlElement root = _GetXmlRootElement();
        XmlNode nameNode = root.SelectSingleNode(path + "name");
        if (nameNode == null)
            return null;

        string name = nameNode.InnerText;
        string scene = root.SelectSingleNode(path + "scene").InnerText;
        string description = root.SelectSingleNode(path + "description").InnerText;
        byte star = byte.Parse(root.SelectSingleNode(path + "stars").InnerText);
        ConstantDefine.QuestType type = (ConstantDefine.QuestType)byte.Parse(root.SelectSingleNode(path + "type").InnerText);
        Quest quest = null;
        switch (type)
        {
            case ConstantDefine.QuestType.Crusade:
                //任务目标
                List<QuestTarget<ConstantDefine.EnemyType>> targets = new List<QuestTarget<ConstantDefine.EnemyType>>();
                XmlNodeList idList = root.SelectNodes(path + "target/id");
                XmlNodeList numberList = root.SelectNodes(path + "target/number");
                for (int i = 0; i < idList.Count; i++)
                {
                    QuestTarget<ConstantDefine.EnemyType> questTarget = new QuestTarget<ConstantDefine.EnemyType>();
                    questTarget.targetType = (ConstantDefine.EnemyType)byte.Parse(idList[i].InnerText);
                    questTarget.targetNumber = byte.Parse(numberList[i].InnerText);
                    questTarget.completedNumber = 0;
                    targets.Add(questTarget);
                }
                //创建任务
                quest = new CrusadeQuest(name, scene, description, star, targets);
                break;
            case ConstantDefine.QuestType.Collect:
                //任务目标
                ConstantDefine.CollectionType collectionType = (ConstantDefine.CollectionType)byte.Parse(root.SelectSingleNode(path + "id").InnerText);
                byte number = byte.Parse(root.SelectSingleNode(path + "number").InnerText);
                //创建任务
                quest = new CollectionQuest(name, scene, description, star, collectionType, number);
                break;
            default:
                break;
        }
        quest.reward = GetRewardInfoFromXmlByAt(byte.Parse(root.SelectSingleNode(path + "reward").InnerText));
        return quest;
    }