public void AddTarget(string desc, string id_target, int max) { QuestTarget target = new QuestTarget(); target.set(desc, id_target, max); targets.Add(target); }
// 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; }
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; }
// 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; }
/// <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); } }
/// <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); }
//這個方法將會在完成任務之後被調用,比如說我們收集整齊所有物品,或者和特殊人員對話後,到達隱藏地點 private void Awake() { if (instance == null) { instance = this; } else { if (instance != this) { Destroy(gameObject); } } DontDestroyOnLoad(gameObject); }
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); }
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(); } } }
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); }
private void Start() { questTarget = GetComponent <QuestTarget>(); }
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(); }
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."); }
/// <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; }