job data work
Some checks failed
studiorailgun/Renderer/pipeline/head There was a failure building this commit

This commit is contained in:
austin 2025-05-29 10:24:22 -04:00
parent 2d20e2d389
commit 7a36c56c57
3 changed files with 42 additions and 13 deletions

View File

@ -2048,6 +2048,9 @@ Farmland voxel type
Farm plots place farmland Farm plots place farmland
More verbose loading display More verbose loading display
(05/29/2025)
Scaffolding towns and character jobs data

View File

@ -1,6 +1,7 @@
package electrosphere.server.macro.town; package electrosphere.server.macro.town;
import java.util.List; import java.util.List;
import java.util.Random;
import org.joml.Vector3d; import org.joml.Vector3d;
@ -27,12 +28,17 @@ public class TownPopulator {
*/ */
public static void populateTown(Realm realm, MacroData macroData, Town town){ public static void populateTown(Realm realm, MacroData macroData, Town town){
List<VirtualStructure> structs = town.getStructures(macroData); List<VirtualStructure> structs = town.getStructures(macroData);
Random rand = new Random(town.getId());
for(VirtualStructure struct : structs){ for(VirtualStructure struct : structs){
ObjectTemplate template = ObjectTemplate.create(EntityType.CREATURE, "human"); ObjectTemplate template = ObjectTemplate.create(EntityType.CREATURE, "human");
Character chara = Globals.serverState.characterService.createCharacter(template, CharacterService.NO_PLAYER); Character chara = Globals.serverState.characterService.createCharacter(template, CharacterService.NO_PLAYER);
Race.setRace(chara, Globals.gameConfigCurrent.getRaceMap().getRace("human")); Race.setRace(chara, Globals.gameConfigCurrent.getRaceMap().getRace("human"));
CharacterUtils.addShelter(chara, struct); CharacterUtils.addShelter(chara, struct);
CharacterUtils.addHometown(chara, town);
chara.setPos(new Vector3d(struct.getPos()).add(1,1,1)); chara.setPos(new Vector3d(struct.getPos()).add(1,1,1));
if(rand.nextInt(5) == 0){
}
} }
} }

View File

@ -13,6 +13,7 @@ import electrosphere.server.macro.character.data.CharacterDataStrings;
import electrosphere.server.macro.character.goal.CharacterGoal; import electrosphere.server.macro.character.goal.CharacterGoal;
import electrosphere.server.macro.character.goal.CharacterGoal.CharacterGoalType; import electrosphere.server.macro.character.goal.CharacterGoal.CharacterGoalType;
import electrosphere.server.macro.structure.VirtualStructure; import electrosphere.server.macro.structure.VirtualStructure;
import electrosphere.server.macro.town.Town;
import electrosphere.server.macro.utils.StructurePlacementUtils; import electrosphere.server.macro.utils.StructurePlacementUtils;
import electrosphere.server.macro.utils.StructureRepairUtils; import electrosphere.server.macro.utils.StructureRepairUtils;
import electrosphere.util.FileUtils; import electrosphere.util.FileUtils;
@ -22,6 +23,10 @@ import electrosphere.util.FileUtils;
*/ */
public class CharaSimulation { public class CharaSimulation {
/**
* Maximum attempts to place a structure
*/
static final int MAX_PLACE_ATTEMPTS = 10;
/** /**
* Sets the goal of the character * Sets the goal of the character
@ -29,20 +34,20 @@ public class CharaSimulation {
* @param chara The character * @param chara The character
*/ */
public static void setGoal(Realm realm, Character chara){ public static void setGoal(Realm realm, Character chara){
CharaSimulation.checkForShelter(realm, chara); if(CharaSimulation.checkForShelter(realm, chara)){
return;
}
if(CharaSimulation.checkTownGoals(realm, chara)){
return;
}
} }
/**
* Maximum attempts to place a structure
*/
static final int MAX_PLACE_ATTEMPTS = 10;
/** /**
* Checks if the character has shelter * Checks if the character has shelter
* @param realm The realm * @param realm The realm
* @param chara The character * @param chara The character
*/ */
protected static void checkForShelter(Realm realm, Character chara){ protected static boolean checkForShelter(Realm realm, Character chara){
MacroData macroData = realm.getMacroData(); MacroData macroData = realm.getMacroData();
/* /*
If doesnt have shelter, check if in town If doesnt have shelter, check if in town
@ -60,8 +65,10 @@ public class CharaSimulation {
String repairMat = StructureRepairUtils.getNextRepairMat(realm, shelter); String repairMat = StructureRepairUtils.getNextRepairMat(realm, shelter);
if(CharaInventoryUtils.containsItem(chara, repairMat)){ if(CharaInventoryUtils.containsItem(chara, repairMat)){
CharacterGoal.setCharacterGoal(chara, new CharacterGoal(CharacterGoalType.BUILD_STRUCTURE, shelter)); CharacterGoal.setCharacterGoal(chara, new CharacterGoal(CharacterGoalType.BUILD_STRUCTURE, shelter));
return true;
} else { } else {
CharacterGoal.setCharacterGoal(chara, new CharacterGoal(CharacterGoalType.ACQUIRE_ITEM, repairMat)); CharacterGoal.setCharacterGoal(chara, new CharacterGoal(CharacterGoalType.ACQUIRE_ITEM, repairMat));
return true;
} }
} else { } else {
shelter.setRepairable(false); shelter.setRepairable(false);
@ -82,7 +89,9 @@ public class CharaSimulation {
//target the struct //target the struct
CharacterGoal.setCharacterGoal(chara, new CharacterGoal(CharacterGoalType.BUILD_STRUCTURE, struct)); CharacterGoal.setCharacterGoal(chara, new CharacterGoal(CharacterGoalType.BUILD_STRUCTURE, struct));
return true;
} }
return false;
} }
protected static void checkTownMembership(Character chara){ protected static void checkTownMembership(Character chara){
@ -134,12 +143,23 @@ public class CharaSimulation {
} }
// } // }
} }
// private static void checkInitCombat(){ /**
// for(Character chara : Globals.macroData.getAliveCharacters()){ * Checks if the town has a job that the character can reserve
// // Vector2i position = CharacterUtils.getDiscretePosition(chara); * @param realm The realm
// } * @param chara The character
// } */
protected static boolean checkTownGoals(Realm realm, Character chara){
MacroData macroData = realm.getMacroData();
if(CharacterUtils.getHometown(macroData, chara) == null){
return false;
}
Town hometown = CharacterUtils.getHometown(macroData, chara);
if(hometown.getJobs().size() > 0){
return true;
}
return false;
}
/** /**