update hometown storage on characters

This commit is contained in:
austin 2025-05-18 12:50:55 -04:00
parent e7a7800caf
commit 6676e67fd2
5 changed files with 26 additions and 17 deletions

View File

@ -1870,6 +1870,7 @@ Structure data saving
Validate race data
Shuffle entity data package
Rename structure -> virtualstructure
Update hometown storage on characters

View File

@ -197,6 +197,20 @@ public class MacroData {
towns.add(town);
}
/**
* Gets a town by its id
* @param id The id of the town
* @return The town
*/
public Town getTown(int id){
for(Town town : towns){
if(town.getId() == id){
return town;
}
}
return null;
}
/**
* Gets the list of structures
* @return The list of structures

View File

@ -72,16 +72,21 @@ public class CharacterUtils {
* @param town The town
*/
public static void addHometown(Character character, Town town){
character.putData(CharacterDataStrings.HOMETOWN, town);
character.putData(CharacterDataStrings.HOMETOWN, new CharacterAssociatedId(CharacterDataStrings.HOMETOWN,town.getId()));
}
/**
* Gets the hometown of a character
* @param macroData The macro data
* @param character The character
* @return The hometown if it exists, null otherwise
*/
public static Town getHometown(Character character){
return (Town)character.getData(CharacterDataStrings.HOMETOWN);
public static Town getHometown(MacroData macroData, Character character){
if(!character.containsKey(CharacterDataStrings.HOMETOWN)){
return null;
}
int townId = ((CharacterAssociatedId)character.getData(CharacterDataStrings.HOMETOWN)).getId();
return macroData.getTown(townId);
}
/**

View File

@ -36,6 +36,7 @@ public class CharacterDataSerializer implements JsonDeserializer<CharacterData>,
//a structure
case CharacterDataStrings.STRUCTURE_ID:
case CharacterDataStrings.HOMETOWN:
case CharacterDataStrings.SHELTER: {
return context.deserialize(json, CharacterAssociatedId.class);
}
@ -72,15 +73,11 @@ public class CharacterDataSerializer implements JsonDeserializer<CharacterData>,
//a structure
case CharacterDataStrings.STRUCTURE_ID:
case CharacterDataStrings.HOMETOWN:
case CharacterDataStrings.SHELTER: {
return context.serialize((CharacterAssociatedId)src);
}
//a town
case CharacterDataStrings.TOWN: {
return context.serialize((Town)src);
}
//goal
case CharacterDataStrings.ENTITY_GOAL: {
return context.serialize((CharacterGoal)src);

View File

@ -1,8 +1,6 @@
package electrosphere.server.macro.town;
import electrosphere.server.macro.character.Character;
import electrosphere.server.macro.character.data.CharacterData;
import electrosphere.server.macro.character.data.CharacterDataStrings;
import electrosphere.server.macro.spatial.MacroAreaObject;
import electrosphere.server.macro.structure.VirtualStructure;
@ -15,7 +13,7 @@ import org.joml.Vector3d;
/**
* Server representation of a town
*/
public class Town extends CharacterData implements MacroAreaObject {
public class Town implements MacroAreaObject {
/**
* The id of the town
@ -51,7 +49,6 @@ public class Town extends CharacterData implements MacroAreaObject {
* Constructor
*/
private Town(){
super(CharacterDataStrings.TOWN);
this.id = idIncrementer;
idIncrementer++;
}
@ -101,11 +98,6 @@ public class Town extends CharacterData implements MacroAreaObject {
return residents;
}
@Override
public String getDataType() {
return CharacterDataStrings.HOMETOWN;
}
@Override
public Vector3d getPos() {
return this.position;