diff --git a/data/sim/location/building.json b/data/sim/location/building.json index cd1c324..fd5cac6 100644 --- a/data/sim/location/building.json +++ b/data/sim/location/building.json @@ -1,7 +1,7 @@ { "locations" : [ { - "name" : "Entrance" + "name" : "entrance" } ], "dependencies" : [ diff --git a/data/sim/location/loc.json b/data/sim/location/loc.json new file mode 100644 index 0000000..b44c13b --- /dev/null +++ b/data/sim/location/loc.json @@ -0,0 +1,6 @@ +{ + "dependencies" : [ + "./data/sim/location/building.json", + "./data/sim/location/wilderness/wilderness.json" + ] +} \ No newline at end of file diff --git a/data/sim/location/loc_def.json b/data/sim/location/wilderness/plains.json similarity index 55% rename from data/sim/location/loc_def.json rename to data/sim/location/wilderness/plains.json index 4bab260..0a5f973 100644 --- a/data/sim/location/loc_def.json +++ b/data/sim/location/wilderness/plains.json @@ -1,8 +1,10 @@ { "locations" : [ - + { + "name" : "field" + } ], "dependencies" : [ - "./data/sim/location/building.json" + ] } \ No newline at end of file diff --git a/data/sim/location/wilderness/wilderness.json b/data/sim/location/wilderness/wilderness.json new file mode 100644 index 0000000..e9f7e35 --- /dev/null +++ b/data/sim/location/wilderness/wilderness.json @@ -0,0 +1,5 @@ +{ + "dependencies" : [ + "./data/sim/location/wilderness/plains.json" + ] +} \ No newline at end of file diff --git a/data/sim/region/continent.json b/data/sim/region/continent.json new file mode 100644 index 0000000..2a4b1cb --- /dev/null +++ b/data/sim/region/continent.json @@ -0,0 +1,13 @@ +{ + "name" : "continent", + "childrenMandatory" : [ + + ], + "childrenOptional" : [ + "plains" + ], + "dependencies" : [ + "./data/sim/region/wilderness/wilderness.json", + "./data/sim/region/town/town.json" + ] +} \ No newline at end of file diff --git a/data/sim/region/region_def.json b/data/sim/region/town/town.json similarity index 80% rename from data/sim/region/region_def.json rename to data/sim/region/town/town.json index d8c1f89..4139043 100644 --- a/data/sim/region/region_def.json +++ b/data/sim/region/town/town.json @@ -1,5 +1,5 @@ { - "name" : "world", + "name" : "continent", "childrenMandatory" : [ ], diff --git a/data/sim/region/wilderness/plains.json b/data/sim/region/wilderness/plains.json new file mode 100644 index 0000000..ba4111e --- /dev/null +++ b/data/sim/region/wilderness/plains.json @@ -0,0 +1,7 @@ +{ + "name" : "plains", + "isWilderness" : true, + "discoverables" : [ + "field" + ] +} \ No newline at end of file diff --git a/data/sim/region/wilderness/wilderness.json b/data/sim/region/wilderness/wilderness.json new file mode 100644 index 0000000..50dbee9 --- /dev/null +++ b/data/sim/region/wilderness/wilderness.json @@ -0,0 +1,6 @@ +{ + "name" : "wilderness", + "dependencies" : [ + "./data/sim/region/wilderness/plains.json" + ] +} \ No newline at end of file diff --git a/data/sim/region/world.json b/data/sim/region/world.json new file mode 100644 index 0000000..69b3c02 --- /dev/null +++ b/data/sim/region/world.json @@ -0,0 +1,9 @@ +{ + "name" : "world", + "childrenMandatory" : [ + "continent" + ], + "dependencies" : [ + "./data/sim/region/continent.json" + ] +} \ No newline at end of file diff --git a/docs/game/actions/atoms.txt b/docs/game/actions/atoms.txt index b616071..a5d84a9 100644 --- a/docs/game/actions/atoms.txt +++ b/docs/game/actions/atoms.txt @@ -12,6 +12,8 @@ control observe lay sleep +explore (look for a new region) +search (search for anything in the current region) diff --git a/src/main/java/org/studiorailgun/sim/config/space/LocationDefinitionManager.java b/src/main/java/org/studiorailgun/sim/config/space/LocationDefinitionManager.java index a9aeda0..5a713dd 100644 --- a/src/main/java/org/studiorailgun/sim/config/space/LocationDefinitionManager.java +++ b/src/main/java/org/studiorailgun/sim/config/space/LocationDefinitionManager.java @@ -14,7 +14,7 @@ public class LocationDefinitionManager { /** * Path to the root file */ - static final String ROOT_FILE_PATH = "./data/sim/location/loc_def.json"; + static final String ROOT_FILE_PATH = "./data/sim/location/loc.json"; /** * The definitions @@ -40,8 +40,15 @@ public class LocationDefinitionManager { */ private static void recursivelyParse(LocationDefinitionManager manager, String path){ LocationDefinitionFile defFile = FileUtils.loadObjectFromFile(new File(path), LocationDefinitionFile.class); - for(LocationDefinition def : defFile.getLocations()){ - manager.addDefinition(def); + if(defFile.getLocations() != null){ + for(LocationDefinition def : defFile.getLocations()){ + manager.addDefinition(def); + } + } + if(defFile.getDependencies() != null){ + for(String depPath : defFile.getDependencies()){ + recursivelyParse(manager, depPath); + } } } diff --git a/src/main/java/org/studiorailgun/sim/config/space/RegionDefinitionFile.java b/src/main/java/org/studiorailgun/sim/config/space/RegionDefinitionFile.java index 45ddfa9..493888b 100644 --- a/src/main/java/org/studiorailgun/sim/config/space/RegionDefinitionFile.java +++ b/src/main/java/org/studiorailgun/sim/config/space/RegionDefinitionFile.java @@ -22,6 +22,16 @@ public class RegionDefinitionFile { */ List childrenOptional; + /** + * If set to true, this will be a wild region that dynamically generates locations as it is explored + */ + Boolean isWilderness; + + /** + * The location types that can be discovered in a given wilderness region + */ + List discoverables; + /** * The region files that this file depends on */ @@ -39,6 +49,14 @@ public class RegionDefinitionFile { return childrenOptional; } + public Boolean isWilderness(){ + return isWilderness; + } + + public List getDiscoverables() { + return discoverables; + } + public List getDependencies() { return dependencies; } diff --git a/src/main/java/org/studiorailgun/sim/config/space/RegionDefinitionManager.java b/src/main/java/org/studiorailgun/sim/config/space/RegionDefinitionManager.java index eb40cb8..66fec49 100644 --- a/src/main/java/org/studiorailgun/sim/config/space/RegionDefinitionManager.java +++ b/src/main/java/org/studiorailgun/sim/config/space/RegionDefinitionManager.java @@ -14,7 +14,7 @@ public class RegionDefinitionManager { /** * Path to the root file */ - static final String ROOT_FILE_PATH = "./data/sim/region/region_def.json"; + static final String ROOT_FILE_PATH = "./data/sim/region/world.json"; /** * The definitions @@ -40,7 +40,14 @@ public class RegionDefinitionManager { */ private static void recursivelyParse(RegionDefinitionManager manager, String path){ RegionDefinitionFile def = FileUtils.loadObjectFromFile(new File(path), RegionDefinitionFile.class); - manager.addDefinition(def); + if(def.getName() != null){ + manager.addDefinition(def); + } + if(def.getDependencies() != null){ + for(String depPath : def.getDependencies()){ + recursivelyParse(manager, depPath); + } + } } /**