Add simulation defn files
All checks were successful
studiorailgun/trpg/pipeline/head This commit looks good

This commit is contained in:
austin 2025-01-05 16:31:24 -05:00
parent 668f73d0a7
commit e1daee0a1f
18 changed files with 472 additions and 3 deletions

View File

@ -0,0 +1,3 @@
Hello
Hi
Howdy

View File

@ -0,0 +1,5 @@
{
"name" : "elf",
"singular" : "elf",
"plural" : "elves"
}

View File

@ -0,0 +1,5 @@
{
"name" : "human",
"singular" : "human",
"plural" : "humans"
}

View File

@ -0,0 +1,10 @@
{
"locations" : [
{
"name" : "Entrance"
}
],
"dependencies" : [
]
}

View File

@ -0,0 +1,8 @@
{
"locations" : [
],
"dependencies" : [
"./data/sim/location/building.json"
]
}

View File

@ -0,0 +1,12 @@
{
"name" : "world",
"childrenMandatory" : [
],
"childrenOptional" : [
],
"dependencies" : [
]
}

View File

@ -9,6 +9,7 @@ import org.studiorailgun.ai.knowledge.CSVExport;
import org.studiorailgun.ai.knowledge.KnowledgeWeb;
import org.studiorailgun.sim.space.World;
import org.studiorailgun.sim.character.Character;
import org.studiorailgun.sim.config.Config;
/**
* Global variables
@ -35,6 +36,11 @@ public class Globals {
*/
public static Character playerCharacter;
/**
* The simulation config
*/
public static Config config;
/**
* Initializes the knowledge web
*/
@ -55,6 +61,9 @@ public class Globals {
//init convo
Globals.conversation = Conversation.parse(Globals.web);
//load simulation config
Globals.config = Config.init();
}
}

View File

@ -25,7 +25,7 @@ public class GreetingEval {
*/
public static void init(){
try {
greetingStrings = Files.readAllLines(new File("./data/sentence_function/greetings.txt").toPath());
greetingStrings = Files.readAllLines(new File("./data/semantic/sent_func/greetings.txt").toPath());
} catch (IOException e) {
e.printStackTrace();
}

View File

@ -20,6 +20,11 @@ public class CharacterAppearance {
*/
CharaHead head;
/**
* The race of the character
*/
String race;
/**
* Gets the height of the character
* @return The height of the character
@ -68,8 +73,12 @@ public class CharacterAppearance {
this.head = head;
}
public String getRace(){
return race;
}
public void setRace(String race){
this.race = race;
}
}

View File

@ -0,0 +1,57 @@
package org.studiorailgun.sim.config;
import org.studiorailgun.sim.config.creature.CreatureDefManager;
import org.studiorailgun.sim.config.space.LocationDefinitionManager;
import org.studiorailgun.sim.config.space.RegionDefinitionManager;
/**
* Config data for the simulator
*/
public class Config {
/**
* Manages the creature definitions
*/
CreatureDefManager creatureDefManager;
/**
* Manages the location definitions
*/
LocationDefinitionManager locationDefinitionManager;
/**
* Manages the region definitions
*/
RegionDefinitionManager regionDefinitionManager;
/**
* Initializes the config object
* @return The config object
*/
public static Config init(){
Config rVal = new Config();
//load sim data
rVal.regionDefinitionManager = RegionDefinitionManager.loadManager();
rVal.locationDefinitionManager = LocationDefinitionManager.loadManager();
rVal.creatureDefManager = CreatureDefManager.loadManager();
return rVal;
}
public CreatureDefManager getCreatureDefManager() {
return creatureDefManager;
}
public LocationDefinitionManager getLocationDefinitionManager() {
return locationDefinitionManager;
}
public RegionDefinitionManager getRegionDefinitionManager() {
return regionDefinitionManager;
}
}

View File

@ -0,0 +1,50 @@
package org.studiorailgun.sim.config.creature;
/**
* Defines a creature
*/
public class CreatureDef {
/**
* The name of the creature type
*/
String name;
/**
* The singular word for this type of creature
*/
String singular;
/**
* The plural word for this type of creature
*/
String plural;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSingular() {
return singular;
}
public void setSingular(String singular) {
this.singular = singular;
}
public String getPlural() {
return plural;
}
public void setPlural(String plural) {
this.plural = plural;
}
}

View File

@ -0,0 +1,58 @@
package org.studiorailgun.sim.config.creature;
import java.io.File;
import java.util.HashMap;
import java.util.Map;
import org.studiorailgun.FileUtils;
/**
* Manages all the creature definitions
*/
public class CreatureDefManager {
/**
* Path to the root folder
*/
static final String ROOT_FOLDER_PATH = "./data/sim/creature";
/**
* Map of creature definition name -> creature definition
*/
Map<String,CreatureDef> definitions = new HashMap<String,CreatureDef>();
/**
* Loads the location def manager
* @return The location def manager
*/
public static CreatureDefManager loadManager(){
CreatureDefManager rVal = new CreatureDefManager();
File dir = new File(ROOT_FOLDER_PATH);
for(File defFile : dir.listFiles()){
CreatureDef defn = FileUtils.loadObjectFromFile(defFile, CreatureDef.class);
rVal.addDefinition(defn);
}
return rVal;
}
/**
* Adds a location definition to the manager
* @param file
*/
public void addDefinition(CreatureDef file){
definitions.put(file.getName(), file);
}
/**
* Gets the location file by its name
* @param name The name of the location
* @return The definition if it exists, null otherwise
*/
public CreatureDef getDefinition(String name){
return definitions.get(name);
}
}

View File

@ -0,0 +1,18 @@
package org.studiorailgun.sim.config.space;
/**
* Defines a location
*/
public class LocationDefinition {
/**
* The name of the location definition
*/
String name;
public String getName() {
return name;
}
}

View File

@ -0,0 +1,25 @@
package org.studiorailgun.sim.config.space;
import java.util.List;
public class LocationDefinitionFile {
/**
* The list of locations
*/
List<LocationDefinition> locations;
/**
* The location files that this file depends on
*/
List<String> dependencies;
public List<String> getDependencies() {
return dependencies;
}
public List<LocationDefinition> getLocations() {
return locations;
}
}

View File

@ -0,0 +1,65 @@
package org.studiorailgun.sim.config.space;
import java.io.File;
import java.util.HashMap;
import java.util.Map;
import org.studiorailgun.FileUtils;
/**
* Manages the location definitions
*/
public class LocationDefinitionManager {
/**
* Path to the root file
*/
static final String ROOT_FILE_PATH = "./data/sim/location/loc_def.json";
/**
* The definitions
*/
Map<String,LocationDefinition> definitions = new HashMap<String,LocationDefinition>();
/**
* Loads the location def manager
* @return The location def manager
*/
public static LocationDefinitionManager loadManager(){
LocationDefinitionManager rVal = new LocationDefinitionManager();
LocationDefinitionManager.recursivelyParse(rVal, ROOT_FILE_PATH);
return rVal;
}
/**
* Recursively parses for location definition files
* @param manager The manager
* @param path The current root path
*/
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);
}
}
/**
* Adds a location definition to the manager
* @param file
*/
public void addDefinition(LocationDefinition file){
definitions.put(file.getName(), file);
}
/**
* Gets the location file by its name
* @param name The name of the location
* @return The definition if it exists, null otherwise
*/
public LocationDefinition getDefinition(String name){
return definitions.get(name);
}
}

View File

@ -0,0 +1,48 @@
package org.studiorailgun.sim.config.space;
import java.util.List;
/**
* Defines a region type
*/
public class RegionDefinitionFile {
/**
* The name of the region definition
*/
String name;
/**
* The child regions which are mandatory for this region type
*/
List<String> childrenMandatory;
/**
* The child regions which are optional for this region type
*/
List<String> childrenOptional;
/**
* The region files that this file depends on
*/
List<String> dependencies;
public String getName() {
return name;
}
public List<String> getChildrenMandatory() {
return childrenMandatory;
}
public List<String> getChildrenOptional() {
return childrenOptional;
}
public List<String> getDependencies() {
return dependencies;
}
}

View File

@ -0,0 +1,63 @@
package org.studiorailgun.sim.config.space;
import java.io.File;
import java.util.HashMap;
import java.util.Map;
import org.studiorailgun.FileUtils;
/**
* Manages the region definitions
*/
public class RegionDefinitionManager {
/**
* Path to the root file
*/
static final String ROOT_FILE_PATH = "./data/sim/region/region_def.json";
/**
* The definitions
*/
Map<String,RegionDefinitionFile> definitions = new HashMap<String,RegionDefinitionFile>();
/**
* Loads the region def manager
* @return The region def manager
*/
public static RegionDefinitionManager loadManager(){
RegionDefinitionManager rVal = new RegionDefinitionManager();
RegionDefinitionManager.recursivelyParse(rVal, ROOT_FILE_PATH);
return rVal;
}
/**
* Recursively parses for region definition files
* @param manager The manager
* @param path The current root path
*/
private static void recursivelyParse(RegionDefinitionManager manager, String path){
RegionDefinitionFile def = FileUtils.loadObjectFromFile(new File(path), RegionDefinitionFile.class);
manager.addDefinition(def);
}
/**
* Adds a region definition to the manager
* @param file
*/
public void addDefinition(RegionDefinitionFile file){
definitions.put(file.getName(), file);
}
/**
* Gets the region file by its name
* @param name The name of the region
* @return The definition if it exists, null otherwise
*/
public RegionDefinitionFile getDefinition(String name){
return definitions.get(name);
}
}

View File

@ -0,0 +1,24 @@
package org.studiorailgun.sim.space.gen;
import org.studiorailgun.Globals;
import org.studiorailgun.sim.config.space.RegionDefinitionFile;
import org.studiorailgun.sim.space.Region;
/**
* Generates a region
*/
public class RegionGenerator {
/**
* Generates a region
* @param type The type of the region
* @return The region
*/
public static Region generate(String type){
Region rVal = new Region();
RegionDefinitionFile def = Globals.config.getRegionDefinitionManager().getDefinition(type);
return rVal;
}
}