Added first crafting steps, finished quest generation save and load, v1.4.0

This commit is contained in:
Nicola Sovic
2022-07-15 13:23:39 +02:00
parent 59e34ef728
commit 1e454f789d
17 changed files with 1995 additions and 34 deletions

View File

@@ -1,5 +1,7 @@
using Newtonsoft.Json.Linq;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
using UnityEngine.UI;
@@ -18,13 +20,14 @@ namespace Assets.Scripts
// Start is called before the first frame update
void Start()
{
quests = new Dictionary<string, List<Quest>>();
quests.Add("find", new List<Quest>());
GameObject newQuest = Instantiate(quest);
newQuest.transform.SetParent(content.transform, false);
FindQuest main = new FindQuest(newQuest);
main.generateCityQuest();
quests["find"].Add(main);
if (quests == null)
{
quests = new Dictionary<string, List<Quest>>();
quests.Add("find", new List<Quest>());
FindQuest main = new FindQuest(createQuestDisplay());
main.generateCityQuest();
quests["find"].Add(main);
}
}
// Update is called once per frame
@@ -46,8 +49,7 @@ namespace Assets.Scripts
public void addQuest()
{
GameObject newQuest = Instantiate(quest);
newQuest.transform.SetParent(content.transform, false);
int index = rand.Next(4);
string type = "";
Quest questItem;
@@ -55,25 +57,25 @@ namespace Assets.Scripts
{
case 0:
type = "collect";
questItem = new CollectQuest(newQuest);
questItem = new CollectQuest(createQuestDisplay());
break;
case 1:
type = "kill";
questItem = new KillQuest(newQuest);
questItem = new KillQuest(createQuestDisplay());
break;
case 2:
type = "find";
questItem = new FindQuest(newQuest);
questItem = new FindQuest(createQuestDisplay());
break;
/*case 3:
type = "craft";
break;*/
case 3:
type = "explore";
questItem = new ExploreQuest(newQuest);
questItem = new ExploreQuest(createQuestDisplay());
break;
default:
questItem = new Quest(newQuest);
questItem = new Quest(createQuestDisplay());
break;
}
if (!quests.ContainsKey(type))
@@ -83,6 +85,13 @@ namespace Assets.Scripts
quests[type].Add(questItem);
}
private GameObject createQuestDisplay()
{
GameObject newQuest = Instantiate(quest);
newQuest.transform.SetParent(content.transform, false);
return newQuest;
}
public void showQuests()
{
content.GetComponent<RectTransform>().sizeDelta = new Vector2(0, 10);
@@ -135,6 +144,81 @@ namespace Assets.Scripts
}
}
}
public string saveGame()
{
string result = "";
int counter = 0;
int count = 0;
foreach (string key in quests.Keys)
{
counter = 0;
result = result + "\""+key+"\": {\r\n";
foreach (Quest quest in quests[key])
{
result = result + "\"quest" + counter + "\": {\r\n";
result = result + quest.saveQuest();
result = result + "\r\n}";
if (counter < quests[key].Count - 1)
{
result = result + ",\r\n";
}
counter++;
}
result = result + "\r\n}";
if (count < quests.Keys.Count - 1)
{
result = result + ",\r\n";
}
count++;
}
return result;
}
public void loadQuests(JToken json)
{
var jsonData = JObject.Parse(json.ToString()).Children();
List<JToken> keywords = jsonData.Children().ToList();
List<JToken> quests;
string key = "";
Quest questItem;
if (this.quests == null)
{
this.quests = new Dictionary<string, List<Quest>>();
}
foreach (JToken keyword in keywords)
{
jsonData = JObject.Parse(keyword.ToString()).Children();
quests = jsonData.Children().ToList();
foreach (JToken quest in quests)
{
key = quest["questname"].ToString().Split(' ')[0].ToLower();
if (!this.quests.ContainsKey(key))
{
this.quests.Add(key, new List<Quest>());
}
switch (key)
{
case "collect":
questItem = new CollectQuest(quest, createQuestDisplay());
break;
case "kill":
questItem = new KillQuest(quest, createQuestDisplay());
break;
case "find":
questItem = new FindQuest(quest, createQuestDisplay());
break;
case "explore":
questItem = new ExploreQuest(quest, createQuestDisplay());
break;
default:
questItem = new Quest(quest, createQuestDisplay());
break;
}
this.quests[key].Add(questItem);
}
}
}
}
}