void Awake() { if (_instance != null) { Debug.LogError("QuestProgress: detected singleton instance has existed. Destroy this one " + gameObject.name); Destroy(this); return; } _instance = this; _questDataList = InJoy.AssetBundles.AssetBundles.Load(questListPath) as QuestDataList; Assertion.Check(_questDataList != null); }
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."); }