improved save/load mechanic.

This commit is contained in:
Finnchen123
2024-10-05 11:53:34 +02:00
parent 1235d5ff0c
commit a82fa992f9
14 changed files with 420 additions and 50 deletions

View File

@@ -1,3 +1,4 @@
using Assets.Scripts.InteractableObjects;
using Newtonsoft.Json.Linq;
using System.Collections;
using System.Collections.Generic;
@@ -49,7 +50,7 @@ public class ContentGenerator : MonoBehaviour
}
else if (chance >= 50 && chance < 90)
{
if (rand.Next(0,2) == 0)
if (rand.Next(0, 2) == 0)
{
return trees[rand.Next(0, trees.Length)];
}
@@ -62,7 +63,7 @@ public class ContentGenerator : MonoBehaviour
{
return generateEnemy();
}
else if(chance >= 95 && chance < 99)
else if (chance >= 95 && chance < 99)
{
return boss;
}
@@ -187,7 +188,7 @@ public class ContentGenerator : MonoBehaviour
}
}
}
else if(name.ToLower().Contains("tree"))
else if (name.ToLower().Contains("tree"))
{
foreach (GameObject tree in trees)
{
@@ -198,10 +199,12 @@ public class ContentGenerator : MonoBehaviour
}
}
}
else if(name.ToLower().Contains("npc")){
else if (name.ToLower().Contains("npc"))
{
result = npc;
}
else if(name.ToLower().Contains("house")){
else if (name.ToLower().Contains("house"))
{
result = house;
}
return result;
@@ -210,51 +213,20 @@ public class ContentGenerator : MonoBehaviour
public GameObject loadEnemy(JToken json)
{
GameObject result = gameObject;
string name = json["enemyname"].ToString().Replace("(Clone)", "");
if (name.Split(' ').Length > 1)
SlimeType slimeType = (SlimeType)System.Enum.Parse(typeof(SlimeType), json["enemytype"].ToString().ToUpper());
foreach (GameObject enemy in enemies)
{
name = name.Split(' ')[1];
}
if (name == "(Boss)")
{
result = boss;
}
else
{
switch (name)
if (enemy.GetComponent<Enemy>().slimeType == slimeType)
{
case "Metal":
name = "SlimeMetalIdle";
break;
case "MiniBoss":
name = "SlimeMiniBossIdle";
break;
case "Forest":
name = "SlimeForestIdle";
break;
case "Mage":
name = "SlimeMageIdle";
break;
case "Warrior":
name = "SlimeWarriorIdle";
break;
default:
name = "SlimeBaseIdle";
break;
}
foreach (GameObject enemy in enemies)
{
if (enemy.name == name)
{
result = enemy;
break;
}
result = enemy;
break;
}
}
return result;
}
public GameObject generateCityTileContent(){
public GameObject generateCityTileContent()
{
int chance = rand.Next(1, 101);
if (chance < 10)
{

View File

@@ -38,7 +38,7 @@ namespace Assets.Scripts.InteractableObjects
result = result + FileHandler.generateJSON("objectname", "\"" + transform.parent.name + "\",\r\n");
result = result + FileHandler.generateJSON("hasInteracted", "\"" + hasInteracted + "\",\r\n");
result = result + FileHandler.generateJSON("isOpen", "\"" + isOpen + "\",\r\n");
result = result + FileHandler.generateJSON("gotItem", "\"" + transform.parent.Find("chest").Find("Body").GetComponent<Chest>().saveChest() + "\"");
result = result + FileHandler.generateJSON("gotItem", "\"" + transform.parent.Find("chest").GetComponent<Chest>().saveChest() + "\"");
return result;
}

View File

@@ -64,7 +64,7 @@ namespace Assets.Scripts.Player
if (hit.collider.gameObject.tag.ToLower().Contains("object"))
{
string obj = hit.collider.gameObject.tag.Split(':')[1];
if (hit.distance <= 10 && !obj.ToLower().Equals("house"))
if (hit.distance <= 3 && !obj.ToLower().Equals("house"))
{
if (!uihandler.isPlayerInFight())
{

View File

@@ -184,6 +184,7 @@ public class Tile : MonoBehaviour
position = new Vector3(float.Parse(obj["position"].ToString().Split('/')[0]), float.Parse(obj["position"].ToString().Split('/')[1]), float.Parse(obj["position"].ToString().Split('/')[2]));
spawnedObject = Instantiate(spawnedObject, position, Quaternion.identity);
spawnedObject.transform.parent = gameObject.transform;
spawnedObject.transform.localScale *= 10;
if (spawnedObject.tag.Contains("Enemy"))
{
aliveEnemies.Add(spawnedObject);

View File

@@ -95,7 +95,6 @@ public class WorldGenerator : MonoBehaviour
noise.applyNoise(newTile, tiles, pos);
newTile.GetComponent<Tile>().generateTile(pos, (TileType)Enum.Parse(typeof(TileType), newTile.name.Split("_")[0]));
tiles.Add(pos, newTile);
GameObject.Find("QuestLog").GetComponent<QuestLog>().updateQuests("find", newTile, 1);
}
}