Archived
Pequeñas mejoras y arreglos
This commit is contained in:
@@ -28,12 +28,10 @@ public class Room
|
||||
|
||||
public Room()
|
||||
{
|
||||
//¿Puedo suponer que será suficientemente inteligente el JSON?
|
||||
//Como gestionamos la deserialization manualmente, los que tenemos que ser inteligentes somos nosotros.
|
||||
//Hay que instanciar las cosas que no se instancian en el JSON.
|
||||
|
||||
|
||||
|
||||
//En vez de hacer deserialization directamente,
|
||||
// MachineLoader puede leer los datos manualmente sin necesidad de crear una clase,
|
||||
// y construir el objeto pasándolos a un constructor...
|
||||
}
|
||||
|
||||
/***
|
||||
@@ -46,7 +44,9 @@ public class Room
|
||||
{
|
||||
this.roomName = roomName;
|
||||
this.roomSize = new Vector2(width, height);
|
||||
this.espacioTotal = 10;
|
||||
|
||||
this.tileSetID = "BGTiles";
|
||||
bgData = new int[height][width];
|
||||
machineData = new Machine[height][width];
|
||||
|
||||
@@ -67,6 +67,22 @@ public class Room
|
||||
{
|
||||
Arrays.fill(machineDatum, null);
|
||||
}
|
||||
|
||||
recursosDefecto = new HashMap<>();
|
||||
recursosDefecto.put("Electricidad", 5);
|
||||
recursosDefecto.put("Refrigeracion", 10);
|
||||
recursosDefecto.put("Abonos", 8);
|
||||
|
||||
recursosMaximos = new HashMap<>(recursosDefecto);
|
||||
|
||||
//Inicialmente, los recursos ocupados tienen el valor 0.
|
||||
// Totamos los nombres de los por defecto, pero su valor será 0.
|
||||
recursosOcupados = new HashMap<>();
|
||||
for(Map.Entry<String, Integer> recurso : recursosDefecto.entrySet())
|
||||
{
|
||||
recursosOcupados.put(recurso.getKey(), 0);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/*-------------
|
||||
@@ -91,8 +107,7 @@ public class Room
|
||||
//Añadimos los recursos que consume.
|
||||
for(Map.Entry<String, Integer> resource : machineToAdd.getAttributes().entrySet())
|
||||
{
|
||||
String resourceName = resource.getKey();
|
||||
ModificarRecursoSala(resourceName, resource.getValue(), deRecursos);
|
||||
ModificarRecursoSala(resource.getKey(), resource.getValue(), deRecursos);
|
||||
}
|
||||
|
||||
//Añadimos un ptr de la máquina en las coordenadas.
|
||||
@@ -296,33 +311,36 @@ public class Room
|
||||
ModificarRecursoSala(recurso.getKey(), -recurso.getValue(), deRecursos);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*-------------
|
||||
* Variables
|
||||
* -------------*/
|
||||
String roomName;
|
||||
// int width;
|
||||
// int height;
|
||||
Vector2 roomSize;
|
||||
|
||||
//Contador de la cantidad de máquinas añadidas.
|
||||
int espacioOcupado;
|
||||
|
||||
//Indica cuantas máquinas caben en la sala.
|
||||
//Puede serializarse (recomendable) o calcularse con las dimensiones de la sala.
|
||||
int espacioTotal;
|
||||
|
||||
|
||||
//Recursos y capacidad de la sala.
|
||||
HashMap<String, Integer> recursosOcupados;
|
||||
HashMap<String, Integer> recursosMaximos;
|
||||
|
||||
//Almacena la capacidad que tiene una sala por defecto. Es a partir de esta que se genera la actual cuando se carga.
|
||||
HashMap<String, Integer> recursosDefecto;
|
||||
|
||||
|
||||
//Permite saber de qué tileSet son los ints de bgData.
|
||||
String tileSetID;
|
||||
int[][] bgData;
|
||||
Machine[][] machineData;
|
||||
|
||||
//Únicamente, para probar la serialización como array.
|
||||
//String[][] machineData_Test;
|
||||
|
||||
|
||||
//Atributos de la sala.
|
||||
//nombreAtributo
|
||||
HashMap<String, Integer> recursosOcupados;
|
||||
//nombreAtributo_max
|
||||
HashMap<String, Integer> recursosMaximos;
|
||||
|
||||
boolean esOnline = false;
|
||||
//Contador de la cantidad de máquinas añadidas.
|
||||
int espacioOcupado;
|
||||
//Indica cuantas máquinas caben en la sala.
|
||||
//Puede serializarse (recomendable) o calcularse con las dimensiones de la sala.
|
||||
int espacioTotal;
|
||||
|
||||
}
|
||||
|
||||
@@ -8,6 +8,7 @@ import com.badlogic.gdx.utils.JsonValue;
|
||||
import com.badlogic.gdx.utils.JsonWriter;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
/*
|
||||
ToDo:
|
||||
@@ -163,11 +164,20 @@ public class RoomLoader
|
||||
json.setOutputType(JsonWriter.OutputType.json);
|
||||
|
||||
json.writeObjectStart();
|
||||
|
||||
//Guardamos datos de la sala.
|
||||
json.writeValue("RoomName", object.roomName);
|
||||
json.writeValue("RoomSize", object.roomSize);
|
||||
json.writeValue("HuecosDisponibles", object.espacioTotal);
|
||||
|
||||
//Serializamos los atributos/capacidad base de la sala.
|
||||
json.writeValue("CapacidadPorDefecto", object.recursosDefecto, HashMap.class, Integer.class);
|
||||
|
||||
//Almacenamos los datos del background.
|
||||
json.writeValue("BackGroundTileSet", object.tileSetID);
|
||||
json.writeValue("BackgroundData", object.bgData);
|
||||
|
||||
//Datos de máquinas. Creamos un JSON array bidimensional.
|
||||
//Datos de máquinas. Creamos un JSON array bidimensional con el ID de la máquina.
|
||||
json.writeArrayStart("MaquinasData");
|
||||
for(int y = 0; y < object.machineData.length; y++)
|
||||
{
|
||||
@@ -205,10 +215,34 @@ public class RoomLoader
|
||||
//jsonData = jsonData.child();
|
||||
room.roomName = jsonData.get("RoomName").asString();
|
||||
|
||||
//Cargamos Tamaño y huecos de la sala.
|
||||
room.roomSize = new Vector2();
|
||||
room.roomSize.x = jsonData.get("RoomSize").get("x").asFloat();
|
||||
room.roomSize.y = jsonData.get("RoomSize").get("y").asFloat();
|
||||
room.espacioTotal = jsonData.get("HuecosDisponibles").asInt();
|
||||
|
||||
//Cargamos la capacidad por defecto de la sala.
|
||||
room.recursosDefecto = new HashMap<>();
|
||||
|
||||
for(JsonValue recurso : jsonData.get("CapacidadPorDefecto"))
|
||||
{
|
||||
room.recursosDefecto.put(recurso.name, recurso.asInt());
|
||||
}
|
||||
|
||||
//Inicializamos los otros hashmaps de recursos.
|
||||
//Inicialmente, los recursos máximos son una copia de los recursos por defecto.
|
||||
room.recursosMaximos = new HashMap<>(room.recursosDefecto);
|
||||
|
||||
//Inicialmente, los recursos ocupados tienen el valor 0.
|
||||
// Totamos los nombres de los por defecto, pero su valor será 0.
|
||||
room.recursosOcupados = new HashMap<>();
|
||||
for(Map.Entry<String, Integer> recurso : room.recursosDefecto.entrySet())
|
||||
{
|
||||
room.recursosOcupados.put(recurso.getKey(), 0);
|
||||
}
|
||||
|
||||
|
||||
room.tileSetID = jsonData.get("BackGroundTileSet").asString();
|
||||
//ToDo: En principio, bgData debería ser el tamaño de la sala (el grid de máquinas) + 2 (para paredes).
|
||||
room.bgData = new int[(int)room.roomSize.y][(int)room.roomSize.x];
|
||||
for(int y = 0; y < room.bgData.length; y++)
|
||||
@@ -244,12 +278,16 @@ public class RoomLoader
|
||||
}
|
||||
|
||||
//Obtenemos un ptr a la máquina que corresponda.
|
||||
// TODO: Revisar y utilizar los métodos de Room para añadir máquinas.
|
||||
// Si lo añadimos con el método, se puede romper si no hay recursos suficiente por el orden.
|
||||
// Hay que hacer un método concreto.
|
||||
room.machineData[y][x] = mcLoader.GetMachine(mcName);
|
||||
|
||||
//room.machineData_Test[y][x] = yData.get(x).asString();
|
||||
}
|
||||
}
|
||||
// ToDo: Los atributos de la sala se generan al cargar la sala contando las máquinas que haya.
|
||||
// habría que llamar al método que lo haga. O hacerlo al añadir las máquinas.........
|
||||
|
||||
return room;
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package uberelectron.testgame;
|
||||
|
||||
import com.badlogic.gdx.Gdx;
|
||||
import com.badlogic.gdx.Screen;
|
||||
import com.badlogic.gdx.utils.Json;
|
||||
import uberelectron.gameSystems.Machine;
|
||||
@@ -21,29 +22,30 @@ public class BackEndTest implements Screen
|
||||
{
|
||||
this.game = game;
|
||||
|
||||
Machine testMach = new Machine();
|
||||
testMach.setMachineID("base_raspi_mk1");
|
||||
testMach.AddAtribute("Test", 5);
|
||||
testMach.AddAtribute("Otro", -2);
|
||||
testMach.setEsDeRecursos(true);
|
||||
testMach.setTileSetID("Machine_Set");
|
||||
testMach.setTilePos(3);
|
||||
|
||||
Machine mach2 = new Machine();
|
||||
mach2.setMachineID("test_mach2");
|
||||
mach2.AddAtribute("Test2", 3);
|
||||
mach2.AddAtribute("Otro", -6);
|
||||
mach2.setEsDeRecursos(true);
|
||||
mach2.setTileSetID("Machine_Set");
|
||||
mach2.setTilePos(4);
|
||||
// Machine testMach = new Machine();
|
||||
// testMach.setMachineID("base_raspi_mk1");
|
||||
// testMach.AddAtribute("Test", 5);
|
||||
// testMach.AddAtribute("Otro", -2);
|
||||
// testMach.setEsDeRecursos(true);
|
||||
// testMach.setTileSetID("Machine_Set");
|
||||
// testMach.setTilePos(3);
|
||||
//
|
||||
// Machine mach2 = new Machine();
|
||||
// mach2.setMachineID("test_mach2");
|
||||
// mach2.AddAtribute("Test2", 3);
|
||||
// mach2.AddAtribute("Otro", -6);
|
||||
// mach2.setEsDeRecursos(true);
|
||||
// mach2.setTileSetID("Machine_Set");
|
||||
// mach2.setTilePos(4);
|
||||
|
||||
/*
|
||||
---- MachineLoader Tests.
|
||||
*/
|
||||
|
||||
//mcLoader = new MachineLoader();
|
||||
mcLoader.AddMachine(testMach);
|
||||
mcLoader.AddMachine(mach2);
|
||||
mcLoader = new MachineLoader();
|
||||
mcLoader.LoadFromJSON(Gdx.files.internal("data/testMachines.json").path());
|
||||
// mcLoader.AddMachine(testMach);
|
||||
// mcLoader.AddMachine(mach2);
|
||||
|
||||
// mcLoader.SaveToJSON("assets/data/testMachines.json");
|
||||
// mcLoader.LoadFromJSON("data/testMachines.json");
|
||||
@@ -60,14 +62,13 @@ public class BackEndTest implements Screen
|
||||
|
||||
|
||||
// Room testRoom = new Room("testRoom", 8, 5);
|
||||
// testRoom.LoadRoom();
|
||||
// testRoom.AddMachine(3,2, testMach);
|
||||
// testRoom.AddMachine(4,2, mach2);
|
||||
// testRoom.AddMachine(3,2, mcLoader.GetMachine("test_mach2"));
|
||||
// testRoom.AddMachine(4,2, mcLoader.GetMachine("base_raspi_mk1"));
|
||||
//
|
||||
// rmLoader.AddRoom(testRoom);
|
||||
// rmLoader.SaveRoomToJSON("testRoom", "assets/data/testRoom.json");
|
||||
|
||||
//
|
||||
|
||||
// String textRoom = json.toJson(testRoom);
|
||||
// System.out.println(json.prettyPrint(textRoom));
|
||||
//
|
||||
|
||||
Reference in New Issue
Block a user