From 408339387d6fc61953c0d3937b67b405e29e708e Mon Sep 17 00:00:00 2001 From: Nicola Sovic Date: Tue, 12 Jul 2022 14:33:21 +0200 Subject: [PATCH] Added first steps to new questing system, v1.4.0 --- Assets/IMG/Aseprite/Quest_Finished.aseprite | Bin 0 -> 1764 bytes .../IMG/Aseprite/Quest_Finished.aseprite.meta | 7 + Assets/IMG/Quest_Finished.png | Bin 0 -> 1973 bytes Assets/IMG/Quest_Finished.png.meta | 120 ++++ Assets/Prefabs/pnlQuest.prefab | 310 ++++++++++ Assets/Prefabs/pnlQuest.prefab.meta | 7 + Assets/Scenes/GameScene.unity | 557 ++++++++++++++---- Assets/Scripts/Player.cs | 7 +- Assets/Scripts/Quest.cs | 130 ++++ Assets/Scripts/Quest.cs.meta | 11 + Assets/Scripts/QuestLog.cs | 96 +++ Assets/Scripts/QuestLog.cs.meta | 11 + Assets/Scripts/UIHandler.cs | 3 +- Assets/Scripts/WorldGenerator.cs | 10 +- Assets/Storage.meta | 8 + 15 files changed, 1150 insertions(+), 127 deletions(-) create mode 100644 Assets/IMG/Aseprite/Quest_Finished.aseprite create mode 100644 Assets/IMG/Aseprite/Quest_Finished.aseprite.meta create mode 100644 Assets/IMG/Quest_Finished.png create mode 100644 Assets/IMG/Quest_Finished.png.meta create mode 100644 Assets/Prefabs/pnlQuest.prefab create mode 100644 Assets/Prefabs/pnlQuest.prefab.meta create mode 100644 Assets/Scripts/Quest.cs create mode 100644 Assets/Scripts/Quest.cs.meta create mode 100644 Assets/Scripts/QuestLog.cs create mode 100644 Assets/Scripts/QuestLog.cs.meta create mode 100644 Assets/Storage.meta diff --git a/Assets/IMG/Aseprite/Quest_Finished.aseprite b/Assets/IMG/Aseprite/Quest_Finished.aseprite new file mode 100644 index 0000000000000000000000000000000000000000..016d51d4782d3c904ee699a309940c6178040874 GIT binary patch literal 1764 zcmcJMiBnTo6o;P+p`&5ZiYyKi14V36A_$R&m{D}9qC%~p6oo_th9FBph!BU2jS`_P zD1r*gVj)V=$WkyAeNc>u6;Podgg^ooCz6e&5Vqu{2ii{k2YTgNn*3JKSpTQm6D`wp)T-oS`;s*3y_0mICFN$SLB`=onaw{tv!hfa4$m%lP zr{eBye_9|EwTTLMMzGB5dbg^q6O+u&XXT0tB2mfS(l$G7n{r?;Fe zn-l{Fi0`pV%NnWLA^QOolmmW5=DA*uEt!ipuwzIJCmLX*WZig$l0uq_2cT2*4q9tb;*gL ztek^mJZegpH+ROTvw}w35;mA+pk$xvmf|?}xT@>L6m9sN(&}l*gr?7JjE4?VtH=_W z33p~?|5xl8dp?y6M*G=n!B`LJxzJ^wn>u=ub;_L6lpk%zDXozY`|4988&QAE1~;oU za{dubYc$g}e_Bq}HM>-!_pq+f{CF{(Uz8lE8gdEF0|bawiMsJdUZAzwU1xhI)sWlD zG~-}l56KE&{rCQ@F{7X9X8oI`6kW3aZ@}3j?F;K89l()$%u!pc@@|_rE<&1|La#`pwXo?G*JyVi(JSuIc=Pnp1{%K!&w3(tV+ZOsX)aQAKWWlX z2^O5ESJ&BTW9HfZW5S8dRYleuPmT3Rpl!yW%Zn5CUL`>#7|Ci{d|as;WsJOn>ijaAW85qk1qjAd_- zqN3JZ_G|Z!N?}*<3eGB%a+xKjusPCrmw=HjQTga)>=x8~a2%_rQU|s@_9S�lr+u ztvA;0nol5=VR}>QByXo`lltQHUD%>q1QW0wsA08)WW)}dauqUp*KRfsPD8)b7S2$% zm0<;2aNUh90wb-do?*`BYQq<+=zgw3&N_V?_2&4Slov^=u4SeF?T~{x<s_hBKq5}r!4|0Hk_4? z0#;CZjh1xdzVzTHPhRqx9HwG6U2)%m$5pVr)60}1`s)%?h<7xO;*u&zKWuv%J|cQ zhm4b^tUr%-4t2}W@%8?!Sx2V#y0)PhgGRbf6O~QwpH+33aFa#1M#KA)GTJR(RjUM5 e7C~WjmUBy2=GZf=pwC)*EXqn!>AS|vc=KNtiZXlv literal 0 HcmV?d00001 diff --git a/Assets/IMG/Aseprite/Quest_Finished.aseprite.meta b/Assets/IMG/Aseprite/Quest_Finished.aseprite.meta new file mode 100644 index 0000000..670a18f --- /dev/null +++ b/Assets/IMG/Aseprite/Quest_Finished.aseprite.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 5309161b58c8e954bb05b190262fe1bb +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/IMG/Quest_Finished.png b/Assets/IMG/Quest_Finished.png new file mode 100644 index 0000000000000000000000000000000000000000..2c4ed9cca2243d58b3e3270cef217cfb1ed7837d GIT binary patch literal 1973 zcmb7_`#;nB1IIs~wK2>6%!~-9cA61~zEOwTh(tAWm+O38R_%lcos?}hCtPubJ z7zG~j3k3jB*98H%p00_@x}ElUlpPx23$%%CmHai)GY4$BaQygqFlX0N!A2M3#>0n;zlY_89QZ8!H)UaUX3SEMq^VQQ zb~?d&T6KBLE)4uyB`hjT{^^CE4l0lOMoSBXG*e8bw`giHRSBb2!2HQ8qet9>b-wWnVbG0FMq4ffE16-CDJwBm z$YGgJJSAWMLX%Q0xKRAzN5!ri&{u9(@`apw^Jwwck1#5KEF;x$&PnEa*r1OB*P3aX zs|D2A#7khM0j*#~M*VwRruTQ7-TUtM?K8M1CM;XxS$qpjCU*}!o0-L7q~)jcxg@Lxs7vPH%UMrsCFQ-8}6 z_2OO69faLG0K)Nh-^hJSASXXLy5>6Zy=)Ou;^NcAjyA85e&B`Yz7nVYLt|T|#POSp z{T00-JwTAB=Pg|C(Hh;{vtmj^y4T1ZfSwVdZWPT_{u0~SDXB8iuNfSyz3U1j{4+1% zN2*ux+O>Iy@sNlo0dyX|eJSmXGMJR!jYA1+pJ^|)8PjSTPK5vqSvg9t)<~d0SsVAW z0zcUh$_B>}^v7Qo@wdVVa3QUH1SVB-4lO96W}AXwq_>m*`{B8a)-==>fdj4vT5Cd) zK&`0;{Q^Z;r*seTiufN~A{^=Nl9Vx9D@~OaPdE39x&a(%Bq;|;K)tUr8FvDx;Y_;U zG1c7hir@j4TYQyHVSvqH<-D%;Rc7BN0hj{Yu)r3@t=WDAj9_0bOe}#rPbXNeow;oIubH z5CO{oBilDGPT7xUI(HcMqX;YRQC;_6z4 z%KyU#?V9n%=Zt9U^I9|!aPTvZUZ5uPQLrmAri~dB_5LUE)g(&V?P%Z>`(!1=aw!H9 z*c&Secc%aTCDc{8H?tzEJa@;8$(D@xb*7I@{$9j4Ap$<}W_~jHtq3sX(}1{+fz)VI zrYie!mW0wBQ&s~=O?S|{ksZ3@+*D>nOCc0#@0Rs;M6E-xqtgM<2&JWC=OK2uE4_s0 zp&k+-wB5Xw#|gHG#&D(t-llMkJe{|Fi3FIWrmGHsC{2D{UK00%QQrIt(`(|HT-U@`OoxfFIap0W}eo~x_@|E5FpbgPT4^qFaKC64kIML zR`YeYI0MTlW@%%$g9n#XUb45-Q~3>B8&l_3NmKDBKM6C=BTou`({{Xa)fAg!k109J zD!Aer<*8~~H2#ODw7ldN-K`$VyYNLpFWykL2SZ{hT$4>Vs|i^`etnYnP3To~O^)Hh ze$16J1($;5Ix=>$Xxo_I1sgzjsdNvRdyqX=Hv5czEk6d5j4kZkt)#PO5(HOXg+M^K z)?4rXb@K;T6q3~FsXk|h8*<>=t@zOlPLzB5rFuQ0G+w(;ubVR}@abE&lPKPhAXNt1 z{f3z?{_Ry#&Y=Bbe(YzdB=X|fl7@!oU$a}_C{q>H>TL(AMu1j-PyRD1XL6K@ezzZG zIe^X?B#SmzCnZcPMNbThA$^uQJRThZO().text = "Slimes: " + killcount + "/" + (30 * (difficulty + 1)); - } - public int castSkill(int index) { int damage = 0; @@ -470,7 +465,7 @@ namespace Assets.Scripts public void gameFinished() { - if (killcount >= 30 * (difficulty + 1) && GameObject.Find("WorldGenerator").GetComponent().gameWon()) + if (GameObject.Find("WorldGenerator").GetComponent().gameWon()) { uihandler.showMessage("SUCCESS;You won the game!"); switch (difficulty) diff --git a/Assets/Scripts/Quest.cs b/Assets/Scripts/Quest.cs new file mode 100644 index 0000000..6d9883b --- /dev/null +++ b/Assets/Scripts/Quest.cs @@ -0,0 +1,130 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.UI; + +namespace Assets.Scripts +{ + public class Quest + { + string questname; + string keyword; + int current; + int goal; + bool isFinished = false; + Vector3 coordinates; + System.Random rand = new System.Random(); + GameObject display; + + public Quest(string type, GameObject display) + { + switch (type) + { + case "collect": + generateCollectQuest(); + break; + case "find": + generateFindQuest(); + break; + case "kill": + generateKillQuest(); + break; + case "craft": + generateCraftQuest(); + break; + case "explore": + generateExploreQuest(); + break; + case "main": + generateCityQuest(); + break; + } + this.display = display; + } + + public void generateCollectQuest() + { + current = 0; + goal = rand.Next(10) + 1; + questname = "Collect " + goal + " "; + int index = rand.Next(7); + switch (index) + { + case 0: + questname = questname + "slimeballs"; + keyword = "Slimeball"; + break; + case 1: + questname = questname + "stones"; + keyword = "Stone"; + break; + case 2: + questname = questname + "wood"; + keyword = "Wood"; + break; + case 3: + questname = questname + "common items"; + keyword = "Common"; + break; + case 4: + questname = questname + "rare items"; + keyword = "Rare"; + break; + case 5: + questname = questname + "epic items"; + keyword = "Epic"; + break; + case 6: + questname = questname + "legendary items"; + keyword = "Legendary"; + break; + } + } + + public void generateFindQuest() + { + + } + + public void generateKillQuest() + { + + } + + public void generateCraftQuest() + { + + } + + public void generateExploreQuest() + { + + } + + public void generateCityQuest() + { + questname = "Find all cities"; + current = 0; + goal = GameObject.Find("WorldGenerator").GetComponent().getCityAmount(); + } + + public void update(string type) + { + + } + + public void show(float positionY) + { + display.transform.Find("txtName").GetComponent().text = questname; + display.transform.Find("txtAmount").GetComponent().text = current + "/" + goal; + if (isFinished) + { + display.transform.Find("imgDone").GetComponent().color = new Color(255,255,255,255); + } + float x = display.transform.localPosition.x; + float z = display.transform.localPosition.z; + display.transform.localPosition = new Vector3(x, positionY, z); + } + } + +} \ No newline at end of file diff --git a/Assets/Scripts/Quest.cs.meta b/Assets/Scripts/Quest.cs.meta new file mode 100644 index 0000000..e0b2b6b --- /dev/null +++ b/Assets/Scripts/Quest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 93eb495c6c5d698468ca9b047933ed31 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/QuestLog.cs b/Assets/Scripts/QuestLog.cs new file mode 100644 index 0000000..a983c01 --- /dev/null +++ b/Assets/Scripts/QuestLog.cs @@ -0,0 +1,96 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.UI; + +namespace Assets.Scripts +{ + public class QuestLog : MonoBehaviour + { + public Dictionary> quests; + public GameObject content; + public Scrollbar scrollBar; + System.Random rand = new System.Random(); + public GameObject quest; + public Texture finished; + public GameObject uiHandler; + + // Start is called before the first frame update + void Start() + { + quests = new Dictionary>(); + quests.Add("main", new List()); + GameObject newQuest = Instantiate(quest); + newQuest.transform.SetParent(content.transform, false); + quests["main"].Add(new Quest("main", newQuest)); + for (int i = 0; i < 20; i++) + { + addQuest(); + } + } + + // Update is called once per frame + void Update() + { + + } + + public void updateQuests() + { + foreach (string key in quests.Keys) + { + foreach (Quest quest in quests[key]) + { + quest.update(key); + } + } + } + + public void addQuest() + { + int index = rand.Next(4); + string type = ""; + switch (index) + { + case 0: + type = "collect"; + break; + case 1: + type = "find"; + break; + case 2: + type = "kill"; + break; + case 3: + type = "craft"; + break; + } + if (!quests.ContainsKey(type)) + { + quests.Add(type, new List()); + } + GameObject newQuest = Instantiate(quest); + newQuest.transform.SetParent(content.transform, false); + quests[type].Add(new Quest(type, newQuest)); + } + + public void showQuests() + { + content.GetComponent().sizeDelta = new Vector2(0, 10); + updateQuests(); + float y = -37.5f; + foreach (string key in quests.Keys) + { + foreach (Quest quest in quests[key]) + { + quest.show(y); + y = y - 75; + content.GetComponent().sizeDelta = new Vector2(0, content.GetComponent().sizeDelta.y + 75); + } + } + scrollBar.value = 0; + content.transform.localPosition = new Vector3(0,0,0); + } + } + +} diff --git a/Assets/Scripts/QuestLog.cs.meta b/Assets/Scripts/QuestLog.cs.meta new file mode 100644 index 0000000..e22bd61 --- /dev/null +++ b/Assets/Scripts/QuestLog.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 63ed303457896ef44ac2c79d896a9324 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/UIHandler.cs b/Assets/Scripts/UIHandler.cs index d834cf2..4de5b5f 100644 --- a/Assets/Scripts/UIHandler.cs +++ b/Assets/Scripts/UIHandler.cs @@ -233,8 +233,7 @@ namespace Assets.Scripts { state = UIState.QUEST; hideOtherElements(questlog); - GameObject.Find("Player").GetComponent().updateKillcount(GameObject.Find("txtSlimesKilled")); - GameObject.Find("WorldGenerator").GetComponent().updateCityCount(GameObject.Find("txtCitiesFound")); + questlog.GetComponent().showQuests(); } public void closeQuestLog() diff --git a/Assets/Scripts/WorldGenerator.cs b/Assets/Scripts/WorldGenerator.cs index 92fd83a..8fa2611 100644 --- a/Assets/Scripts/WorldGenerator.cs +++ b/Assets/Scripts/WorldGenerator.cs @@ -183,11 +183,6 @@ public class WorldGenerator : MonoBehaviour return currentTile; } - public void updateCityCount(GameObject gameObject) - { - gameObject.GetComponent().text = "Cities: " + (maxCityAmount - cityAmount) + "/" + maxCityAmount; - } - public string saveGame() { string result = ""; @@ -257,4 +252,9 @@ public class WorldGenerator : MonoBehaviour Vector3 position = new Vector3(currentTile.transform.position.x, 5, currentTile.transform.position.z); player.transform.SetPositionAndRotation(position, player.transform.rotation); } + + public int getCityAmount() + { + return maxCityAmount; + } } diff --git a/Assets/Storage.meta b/Assets/Storage.meta new file mode 100644 index 0000000..49bd030 --- /dev/null +++ b/Assets/Storage.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 813d6c7c3a458e24bb5ab9639040b690 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: