Archived
Pequeñas mejoras y arreglos
This commit is contained in:
@@ -3,10 +3,10 @@
|
|||||||
"class": "uberelectron.gameSystems.Machine",
|
"class": "uberelectron.gameSystems.Machine",
|
||||||
"machineID": "base_raspi_mk1",
|
"machineID": "base_raspi_mk1",
|
||||||
"attributes": {
|
"attributes": {
|
||||||
"Test": 5,
|
"Electricidad": 2,
|
||||||
"Otro": -2
|
"Refrigeracion": 3
|
||||||
},
|
},
|
||||||
"esDeRecursos": true,
|
"esDeRecursos": false,
|
||||||
"tileSetID": "Machine_Set",
|
"tileSetID": "Machine_Set",
|
||||||
"tilePos": 3
|
"tilePos": 3
|
||||||
},
|
},
|
||||||
@@ -14,10 +14,10 @@
|
|||||||
"class": "uberelectron.gameSystems.Machine",
|
"class": "uberelectron.gameSystems.Machine",
|
||||||
"machineID": "test_mach2",
|
"machineID": "test_mach2",
|
||||||
"attributes": {
|
"attributes": {
|
||||||
"Otro": -6,
|
"Electricidad": 6,
|
||||||
"Test2": 3
|
"Refrigeracion": 3
|
||||||
},
|
},
|
||||||
"esDeRecursos": false,
|
"esDeRecursos": true,
|
||||||
"tileSetID": "Machine_Set",
|
"tileSetID": "Machine_Set",
|
||||||
"tilePos": 4
|
"tilePos": 4
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,6 +4,13 @@
|
|||||||
"x": 8,
|
"x": 8,
|
||||||
"y": 5
|
"y": 5
|
||||||
},
|
},
|
||||||
|
"HuecosDisponibles": 10,
|
||||||
|
"CapacidadPorDefecto": {
|
||||||
|
"Abonos": 8,
|
||||||
|
"Refrigeracion": 10,
|
||||||
|
"Electricidad": 5
|
||||||
|
},
|
||||||
|
"BackGroundTileSet": "BGTiles",
|
||||||
"BackgroundData": [
|
"BackgroundData": [
|
||||||
[ 2, 2, 2, 2, 2, 2, 2, 2 ],
|
[ 2, 2, 2, 2, 2, 2, 2, 2 ],
|
||||||
[ 2, 3, 3, 3, 3, 3, 3, 2 ],
|
[ 2, 3, 3, 3, 3, 3, 3, 2 ],
|
||||||
@@ -36,8 +43,8 @@
|
|||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
"base_raspi_mk1",
|
|
||||||
"test_mach2",
|
"test_mach2",
|
||||||
|
"base_raspi_mk1",
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null
|
null
|
||||||
|
|||||||
@@ -28,12 +28,10 @@ public class Room
|
|||||||
|
|
||||||
public Room()
|
public Room()
|
||||||
{
|
{
|
||||||
//¿Puedo suponer que será suficientemente inteligente el JSON?
|
//Hay que instanciar las cosas que no se instancian en el JSON.
|
||||||
//Como gestionamos la deserialization manualmente, los que tenemos que ser inteligentes somos nosotros.
|
|
||||||
|
|
||||||
|
|
||||||
//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.roomName = roomName;
|
||||||
this.roomSize = new Vector2(width, height);
|
this.roomSize = new Vector2(width, height);
|
||||||
|
this.espacioTotal = 10;
|
||||||
|
|
||||||
|
this.tileSetID = "BGTiles";
|
||||||
bgData = new int[height][width];
|
bgData = new int[height][width];
|
||||||
machineData = new Machine[height][width];
|
machineData = new Machine[height][width];
|
||||||
|
|
||||||
@@ -67,6 +67,22 @@ public class Room
|
|||||||
{
|
{
|
||||||
Arrays.fill(machineDatum, null);
|
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.
|
//Añadimos los recursos que consume.
|
||||||
for(Map.Entry<String, Integer> resource : machineToAdd.getAttributes().entrySet())
|
for(Map.Entry<String, Integer> resource : machineToAdd.getAttributes().entrySet())
|
||||||
{
|
{
|
||||||
String resourceName = resource.getKey();
|
ModificarRecursoSala(resource.getKey(), resource.getValue(), deRecursos);
|
||||||
ModificarRecursoSala(resourceName, resource.getValue(), deRecursos);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//Añadimos un ptr de la máquina en las coordenadas.
|
//Añadimos un ptr de la máquina en las coordenadas.
|
||||||
@@ -296,33 +311,36 @@ public class Room
|
|||||||
ModificarRecursoSala(recurso.getKey(), -recurso.getValue(), deRecursos);
|
ModificarRecursoSala(recurso.getKey(), -recurso.getValue(), deRecursos);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*-------------
|
/*-------------
|
||||||
* Variables
|
* Variables
|
||||||
* -------------*/
|
* -------------*/
|
||||||
String roomName;
|
String roomName;
|
||||||
// int width;
|
|
||||||
// int height;
|
|
||||||
Vector2 roomSize;
|
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.
|
//Permite saber de qué tileSet son los ints de bgData.
|
||||||
String tileSetID;
|
String tileSetID;
|
||||||
int[][] bgData;
|
int[][] bgData;
|
||||||
Machine[][] machineData;
|
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;
|
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 com.badlogic.gdx.utils.JsonWriter;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
ToDo:
|
ToDo:
|
||||||
@@ -163,11 +164,20 @@ public class RoomLoader
|
|||||||
json.setOutputType(JsonWriter.OutputType.json);
|
json.setOutputType(JsonWriter.OutputType.json);
|
||||||
|
|
||||||
json.writeObjectStart();
|
json.writeObjectStart();
|
||||||
|
|
||||||
|
//Guardamos datos de la sala.
|
||||||
json.writeValue("RoomName", object.roomName);
|
json.writeValue("RoomName", object.roomName);
|
||||||
json.writeValue("RoomSize", object.roomSize);
|
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);
|
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");
|
json.writeArrayStart("MaquinasData");
|
||||||
for(int y = 0; y < object.machineData.length; y++)
|
for(int y = 0; y < object.machineData.length; y++)
|
||||||
{
|
{
|
||||||
@@ -205,10 +215,34 @@ public class RoomLoader
|
|||||||
//jsonData = jsonData.child();
|
//jsonData = jsonData.child();
|
||||||
room.roomName = jsonData.get("RoomName").asString();
|
room.roomName = jsonData.get("RoomName").asString();
|
||||||
|
|
||||||
|
//Cargamos Tamaño y huecos de la sala.
|
||||||
room.roomSize = new Vector2();
|
room.roomSize = new Vector2();
|
||||||
room.roomSize.x = jsonData.get("RoomSize").get("x").asFloat();
|
room.roomSize.x = jsonData.get("RoomSize").get("x").asFloat();
|
||||||
room.roomSize.y = jsonData.get("RoomSize").get("y").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).
|
//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];
|
room.bgData = new int[(int)room.roomSize.y][(int)room.roomSize.x];
|
||||||
for(int y = 0; y < room.bgData.length; y++)
|
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.
|
//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[y][x] = mcLoader.GetMachine(mcName);
|
||||||
|
|
||||||
//room.machineData_Test[y][x] = yData.get(x).asString();
|
//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.
|
// 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;
|
return room;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package uberelectron.testgame;
|
package uberelectron.testgame;
|
||||||
|
|
||||||
|
import com.badlogic.gdx.Gdx;
|
||||||
import com.badlogic.gdx.Screen;
|
import com.badlogic.gdx.Screen;
|
||||||
import com.badlogic.gdx.utils.Json;
|
import com.badlogic.gdx.utils.Json;
|
||||||
import uberelectron.gameSystems.Machine;
|
import uberelectron.gameSystems.Machine;
|
||||||
@@ -21,29 +22,30 @@ public class BackEndTest implements Screen
|
|||||||
{
|
{
|
||||||
this.game = game;
|
this.game = game;
|
||||||
|
|
||||||
Machine testMach = new Machine();
|
// Machine testMach = new Machine();
|
||||||
testMach.setMachineID("base_raspi_mk1");
|
// testMach.setMachineID("base_raspi_mk1");
|
||||||
testMach.AddAtribute("Test", 5);
|
// testMach.AddAtribute("Test", 5);
|
||||||
testMach.AddAtribute("Otro", -2);
|
// testMach.AddAtribute("Otro", -2);
|
||||||
testMach.setEsDeRecursos(true);
|
// testMach.setEsDeRecursos(true);
|
||||||
testMach.setTileSetID("Machine_Set");
|
// testMach.setTileSetID("Machine_Set");
|
||||||
testMach.setTilePos(3);
|
// testMach.setTilePos(3);
|
||||||
|
//
|
||||||
Machine mach2 = new Machine();
|
// Machine mach2 = new Machine();
|
||||||
mach2.setMachineID("test_mach2");
|
// mach2.setMachineID("test_mach2");
|
||||||
mach2.AddAtribute("Test2", 3);
|
// mach2.AddAtribute("Test2", 3);
|
||||||
mach2.AddAtribute("Otro", -6);
|
// mach2.AddAtribute("Otro", -6);
|
||||||
mach2.setEsDeRecursos(true);
|
// mach2.setEsDeRecursos(true);
|
||||||
mach2.setTileSetID("Machine_Set");
|
// mach2.setTileSetID("Machine_Set");
|
||||||
mach2.setTilePos(4);
|
// mach2.setTilePos(4);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
---- MachineLoader Tests.
|
---- MachineLoader Tests.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
//mcLoader = new MachineLoader();
|
mcLoader = new MachineLoader();
|
||||||
mcLoader.AddMachine(testMach);
|
mcLoader.LoadFromJSON(Gdx.files.internal("data/testMachines.json").path());
|
||||||
mcLoader.AddMachine(mach2);
|
// mcLoader.AddMachine(testMach);
|
||||||
|
// mcLoader.AddMachine(mach2);
|
||||||
|
|
||||||
// mcLoader.SaveToJSON("assets/data/testMachines.json");
|
// mcLoader.SaveToJSON("assets/data/testMachines.json");
|
||||||
// mcLoader.LoadFromJSON("data/testMachines.json");
|
// mcLoader.LoadFromJSON("data/testMachines.json");
|
||||||
@@ -60,14 +62,13 @@ public class BackEndTest implements Screen
|
|||||||
|
|
||||||
|
|
||||||
// Room testRoom = new Room("testRoom", 8, 5);
|
// Room testRoom = new Room("testRoom", 8, 5);
|
||||||
// testRoom.LoadRoom();
|
// testRoom.AddMachine(3,2, mcLoader.GetMachine("test_mach2"));
|
||||||
// testRoom.AddMachine(3,2, testMach);
|
// testRoom.AddMachine(4,2, mcLoader.GetMachine("base_raspi_mk1"));
|
||||||
// testRoom.AddMachine(4,2, mach2);
|
|
||||||
//
|
//
|
||||||
// rmLoader.AddRoom(testRoom);
|
// rmLoader.AddRoom(testRoom);
|
||||||
// rmLoader.SaveRoomToJSON("testRoom", "assets/data/testRoom.json");
|
// rmLoader.SaveRoomToJSON("testRoom", "assets/data/testRoom.json");
|
||||||
|
|
||||||
//
|
|
||||||
// String textRoom = json.toJson(testRoom);
|
// String textRoom = json.toJson(testRoom);
|
||||||
// System.out.println(json.prettyPrint(textRoom));
|
// System.out.println(json.prettyPrint(textRoom));
|
||||||
//
|
//
|
||||||
|
|||||||
Reference in New Issue
Block a user