Add: JsonCards , DecksCreator, Test:DecksCreator

This commit is contained in:
rubenpirreram
2026-03-20 18:28:53 +01:00
parent 7028724728
commit c356064093
7 changed files with 892 additions and 40 deletions
@@ -1,8 +1,15 @@
package it.polimi.ingsw.gc14.Model; package it.polimi.ingsw.gc14.Model;
import com.google.gson.*; import com.google.gson.*;
import it.polimi.ingsw.gc14.Model.Cards.TribeCards.CharacterType;
import it.polimi.ingsw.gc14.Model.Cards.TribeCards.Characters.*; import it.polimi.ingsw.gc14.Model.Cards.TribeCards.Characters.*;
import it.polimi.ingsw.gc14.Model.Cards.TribeCard; import it.polimi.ingsw.gc14.Model.Cards.TribeCard;
import it.polimi.ingsw.gc14.Model.Cards.TribeCards.EventType;
import it.polimi.ingsw.gc14.Model.Cards.TribeCards.Events.CavePaintings;
import it.polimi.ingsw.gc14.Model.Cards.TribeCards.Events.Hunt;
import it.polimi.ingsw.gc14.Model.Cards.TribeCards.Events.ShamanicRitual;
import it.polimi.ingsw.gc14.Model.Cards.TribeCards.Events.Sustenance;
import java.io.*; import java.io.*;
import java.lang.reflect.Type; import java.lang.reflect.Type;
import java.util.*; import java.util.*;
@@ -14,17 +21,18 @@ public class DecksCreator {
Gson gson = new Gson(); Gson gson = new Gson();
Type listType = new com.google.gson.reflect.TypeToken<List<CardDefinition>>(){}.getType(); Type listType = new com.google.gson.reflect.TypeToken<List<CardDefinition>>(){}.getType();
try (InputStream is = DecksCreator.class.getResourceAsStream(resourcePath); InputStream is = DecksCreator.class.getResourceAsStream(resourcePath);
Reader reader = new InputStreamReader(is)) { if (is == null) {
throw new RuntimeException("File non trovato: " + resourcePath);
}
try (Reader reader = new InputStreamReader(is)) {
List<CardDefinition> definitions = gson.fromJson(reader, listType); List<CardDefinition> definitions = gson.fromJson(reader, listType);
List<TribeCard> cards = new ArrayList<>(); List<TribeCard> cards = new ArrayList<>();
for (CardDefinition def : definitions) { for (CardDefinition def : definitions) {
cards.add(createCard(def)); cards.add(createCard(def));
} }
return cards; return cards;
} catch (IOException e) { } catch (IOException e) {
throw new RuntimeException("Errore caricamento mazzo: " + resourcePath, e); throw new RuntimeException("Errore caricamento mazzo: " + resourcePath, e);
} }
@@ -32,8 +40,18 @@ public class DecksCreator {
private static TribeCard createCard(CardDefinition def) { private static TribeCard createCard(CardDefinition def) {
int era = def.era; int era = def.era;
int[] p = def.params.stream().mapToInt(d -> (int) Math.round((Float) d)).toArray();
int[] p = def.params.stream().mapToInt(d -> ((Double) d).intValue()).toArray();
if(def.isEvent)
{
return switch (def.type) {
case "Sustenance" -> new Sustenance(era,p[0]);
case "Hunt" -> new Hunt(era,p[0]);
case "CavePaintings" -> new CavePaintings(era,p[0],p[1],p[2]);
case "ShamanicRitual" -> new ShamanicRitual(era,p[0],p[1]);
default -> throw new IllegalArgumentException("Tipo sconosciuto: " + def.type);
};
}
return switch (def.type) { return switch (def.type) {
case "Hunter" -> p.length == 0 case "Hunter" -> p.length == 0
? new Hunter(era, def.armed) ? new Hunter(era, def.armed)
@@ -71,6 +89,7 @@ public class DecksCreator {
String type; String type;
int era; int era;
boolean armed; boolean armed;
boolean isEvent;
List<Object> params; // Object per gestire boolean e int misti List<Object> params; // Object per gestire boolean e int misti
} }
} }
@@ -1,11 +1,15 @@
package it.polimi.ingsw.gc14.Model; package it.polimi.ingsw.gc14.Model;
import it.polimi.ingsw.gc14.Model.Cards.TribeCard;
import it.polimi.ingsw.gc14.Model.Cards.TribeCards.CharacterType; import it.polimi.ingsw.gc14.Model.Cards.TribeCards.CharacterType;
import it.polimi.ingsw.gc14.Model.Cards.TribeCards.Characters.Inventor; import it.polimi.ingsw.gc14.Model.Cards.TribeCards.Characters.Inventor;
import java.util.*;
public class Main { public class Main {
public static void main(String[] args) { public static void main(String[] args) {
Inventor inventor= new Inventor(1,0); Inventor inventor= new Inventor(1,0);
System.out.println(inventor); System.out.println(inventor);
List<TribeCard>cards= DecksCreator.loadDeck("/Cards/cards_era1.json");
} }
} }
+3 -2
View File
@@ -1,12 +1,13 @@
module it.polimi.ingsw.gc14 { module it.polimi.ingsw.gc14 {
requires javafx.controls; requires javafx.controls;
requires javafx.fxml; requires javafx.fxml;
requires org.controlsfx.controls; requires org.controlsfx.controls;
requires java.rmi; requires java.rmi;
requires java.smartcardio; requires java.smartcardio;
requires com.google.gson; requires com.google.gson;
opens it.polimi.ingsw.gc14 to javafx.fxml; opens it.polimi.ingsw.gc14 to javafx.fxml, com.google.gson;
opens it.polimi.ingsw.gc14.Model to com.google.gson;
exports it.polimi.ingsw.gc14; exports it.polimi.ingsw.gc14;
} }
+294 -33
View File
@@ -1,36 +1,297 @@
[ [
{"type": "Hunter", "era": 1, "armed": true, "params": []}, {
{"type": "Hunter", "era": 1, "armed": true, "params": []}, "isEvent": false,
{"type": "Hunter", "era": 1, "armed": false, "params": []}, "type": "Hunter",
{"type": "Hunter", "era": 1, "armed": false, "params": [3]}, "era": 1,
{"type": "Hunter", "era": 1, "armed": false, "params": [3]}, "armed": true,
"params": []
},
{
"isEvent": false,
"type": "Hunter",
"era": 1,
"armed": true,
"params": []
},
{
"isEvent": false,
"type": "Hunter",
"era": 1,
"armed": false,
"params": []
},
{
"isEvent": false,
"type": "Hunter",
"era": 1,
"armed": false,
"params": [
3
]
},
{
"isEvent": false,
"type": "Hunter",
"era": 1,
"armed": false,
"params": [
3
]
},
{
"isEvent": false,
"type": "Builder",
"era": 1,
"armed": false,
"params": [
1,
3
]
},
{
"isEvent": false,
"type": "Builder",
"era": 1,
"armed": false,
"params": [
2,
0
]
},
{
"isEvent": false,
"type": "Builder",
"era": 1,
"armed": false,
"params": [
2,
1,
5
]
},
{
"isEvent": false,
"type": "Builder",
"era": 1,
"armed": false,
"params": [
1,
2
]
},
{
"isEvent": false,
"type": "Gatherers",
"era": 1,
"armed": false,
"params": []
},
{
"isEvent": false,
"type": "Gatherers",
"era": 1,
"armed": false,
"params": []
},
{
"isEvent": false,
"type": "Gatherers",
"era": 1,
"armed": false,
"params": [
3
]
},
{
"isEvent": false,
"type": "Gatherers",
"era": 1,
"armed": false,
"params": [
5
]
},
{
"isEvent": false,
"type": "Artist",
"era": 1,
"armed": false,
"params": []
},
{
"isEvent": false,
"type": "Artist",
"era": 1,
"armed": false,
"params": []
},
{
"isEvent": false,
"type": "Artist",
"era": 1,
"armed": false,
"params": []
},
{
"isEvent": false,
"type": "Artist",
"era": 1,
"armed": false,
"params": [
3
]
},
{
"isEvent": false,
"type": "Artist",
"era": 1,
"armed": false,
"params": [
4
]
},
{
"isEvent": false,
"type": "Inventor",
"era": 1,
"armed": false,
"params": [
8
]
},
{
"isEvent": false,
"type": "Inventor",
"era": 1,
"armed": false,
"params": [
0
]
},
{
"isEvent": false,
"type": "Inventor",
"era": 1,
"armed": false,
"params": [
2
]
},
{
"isEvent": false,
"type": "Inventor",
"era": 1,
"armed": false,
"params": [
9
]
},
{
"isEvent": false,
"type": "Inventor",
"era": 1,
"armed": false,
"params": [
5,
4
]
},
{
"isEvent": false,
"type": "Inventor",
"era": 1,
"armed": false,
"params": [
7,
4
]
},
{
"isEvent": false,
"type": "Inventor",
"era": 1,
"armed": false,
"params": [
4,
4
]
},
{
"isEvent": false,
"type": "Shaman",
"era": 1,
"armed": false,
"params": [
2,
5
]
},
{
"isEvent": false,
"type": "Shaman",
"era": 1,
"armed": false,
"params": [
2
]
},
{
"isEvent": false,
"type": "Shaman",
"era": 1,
"armed": false,
"params": [
1
]
},
{
"isEvent": false,
"type": "Shaman",
"era": 1,
"armed": false,
"params": [
1,
4
]
},
{
"isEvent": true,
"type": "Hunt",
"era": 1,
"armed": false,
"params": [
1
]
},
{
"isEvent": true,
"type": "Sustenance",
"era": 1,
"armed": false,
"params": [
4
]
},
{
"isEvent": true,
"type": "ShamanicRitual",
"era": 1,
"armed": false,
"params": [
5,
3
]
},
{
"isEvent": true,
"type": "CavePaintings",
"era": 1,
"armed": false,
"params": [
1,
2,
1
]
}
{"type": "Builder", "era": 1, "armed": false, "params": [1, 3]},
{"type": "Builder", "era": 1, "armed": false, "params": [2, 0]},
{"type": "Builder", "era": 1, "armed": false, "params": [2, 1, 5]},
{"type": "Builder", "era": 1, "armed": false, "params": [1, 2]},
{"type": "Gatherers", "era": 1, "armed": false, "params": []},
{"type": "Gatherers", "era": 1, "armed": false, "params": []},
{"type": "Gatherers", "era": 1, "armed": false, "params": [3]},
{"type": "Gatherers", "era": 1, "armed": false, "params": [5]},
{"type": "Artist", "era": 1, "armed": false, "params": []},
{"type": "Artist", "era": 1, "armed": false, "params": []},
{"type": "Artist", "era": 1, "armed": false, "params": []},
{"type": "Artist", "era": 1, "armed": false, "params": [3]},
{"type": "Artist", "era": 1, "armed": false, "params": [4]},
{"type": "Inventor", "era": 1, "armed": false, "params": [8]},
{"type": "Inventor", "era": 1, "armed": false, "params": [0]},
{"type": "Inventor", "era": 1, "armed": false, "params": [2]},
{"type": "Inventor", "era": 1, "armed": false, "params": [9]},
{"type": "Inventor", "era": 1, "armed": false, "params": [5, 4]},
{"type": "Inventor", "era": 1, "armed": false, "params": [7, 4]},
{"type": "Inventor", "era": 1, "armed": false, "params": [4, 4]},
{"type": "Shaman", "era": 1, "armed": false, "params": [2, 5]},
{"type": "Shaman", "era": 1, "armed": false, "params": [2]},
{"type": "Shaman", "era": 1, "armed": false, "params": [1]},
{"type": "Shaman", "era": 1, "armed": false, "params": [1, 4]}
] ]
+285
View File
@@ -0,0 +1,285 @@
[
{
"isEvent": false,
"type": "Hunter",
"era": 2,
"armed": false,
"params": []
},
{
"isEvent": false,
"type": "Hunter",
"era": 2,
"armed": false,
"params": []
},
{
"isEvent": false,
"type": "Hunter",
"era": 2,
"armed": true,
"params": [
3
]
},
{
"isEvent": false,
"type": "Hunter",
"era": 2,
"armed": true,
"params": []
},
{
"isEvent": false,
"type": "Hunter",
"era": 2,
"armed": true,
"params": [4]
},
{
"isEvent": false,
"type": "Hunter",
"era": 2,
"armed": true,
"params": [
5
]
},
{
"isEvent": false,
"type": "Builder",
"era": 2,
"armed": false,
"params": [
1,
4
]
},
{
"isEvent": false,
"type": "Builder",
"era": 2,
"armed": false,
"params": [
2,
1
]
},
{
"isEvent": false,
"type": "Builder",
"era": 2,
"armed": false,
"params": [
1,
2,
3
]
},
{
"isEvent": false,
"type": "Builder",
"era": 2,
"armed": false,
"params": [
2,
3
]
},
{
"isEvent": false,
"type": "Gatherers",
"era": 2,
"armed": false,
"params": []
},
{
"isEvent": false,
"type": "Gatherers",
"era": 2,
"armed": false,
"params": [
3
]
},
{
"isEvent": false,
"type": "Gatherers",
"era": 2,
"armed": false,
"params": [
4
]
},
{
"isEvent": false,
"type": "Gatherers",
"era": 2,
"armed": false,
"params": [
5
]
},
{
"isEvent": false,
"type": "Artist",
"era": 2,
"armed": false,
"params": [
3
]
},
{
"isEvent": false,
"type": "Artist",
"era": 2,
"armed": false,
"params": []
},
{
"isEvent": false,
"type": "Artist",
"era": 2,
"armed": false,
"params": []
},
{
"isEvent": false,
"type": "Artist",
"era": 2,
"armed": false,
"params": []
},
{
"isEvent": false,
"type": "Inventor",
"era": 2,
"armed": false,
"params": [
6
]
},
{
"isEvent": false,
"type": "Inventor",
"era": 2,
"armed": false,
"params": [
2,
4
]
},
{
"isEvent": false,
"type": "Inventor",
"era": 2,
"armed": false,
"params": [
5
]
},
{
"isEvent": false,
"type": "Inventor",
"era": 2,
"armed": false,
"params": [
7
]
},
{
"isEvent": false,
"type": "Inventor",
"era": 2,
"armed": false,
"params": [
4
]
},
{
"isEvent": false,
"type": "Inventor",
"era": 2,
"armed": false,
"params": [
8
]
},
{
"isEvent": false,
"type": "Shaman",
"era": 2,
"armed": false,
"params": [
2
]
},
{
"isEvent": false,
"type": "Shaman",
"era": 2,
"armed": false,
"params": [
2
]
},
{
"isEvent": false,
"type": "Shaman",
"era": 2,
"armed": false,
"params": [
1,
5
]
},
{
"isEvent": false,
"type": "Shaman",
"era": 2,
"armed": false,
"params": [
2,
5
]
},
{
"isEvent": true,
"type": "Hunt",
"era": 2,
"armed": false,
"params": [
2
]
},
{
"isEvent": true,
"type": "Sustenance",
"era": 2,
"armed": false,
"params": [
2
]
},
{
"isEvent": true,
"type": "ShamanicRitual",
"era": 2,
"armed": false,
"params": [
10,
5
]
},
{
"isEvent": true,
"type": "CavePaintings",
"era": 2,
"armed": false,
"params": [
2,
2,
2
]
}
]
+261
View File
@@ -0,0 +1,261 @@
[
{
"isEvent": false,
"type": "Hunter",
"era": 3,
"armed": true,
"params": [
5
]
},
{
"isEvent": false,
"type": "Hunter",
"era": 3,
"armed": false,
"params": []
},
{
"isEvent": false,
"type": "Hunter",
"era": 3,
"armed": false,
"params": []
},
{
"isEvent": false,
"type": "Hunter",
"era": 3,
"armed": true,
"params": []
},
{
"isEvent": false,
"type": "Builder",
"era": 3,
"armed": false,
"params": [
1,
5
]
},
{
"isEvent": false,
"type": "Builder",
"era": 3,
"armed": false,
"params": [
2,
3
]
},
{
"isEvent": false,
"type": "Builder",
"era": 3,
"armed": false,
"params": [
1,
4,
5
]
},
{
"isEvent": false,
"type": "Builder",
"era": 3,
"armed": false,
"params": [
2,
2
]
},
{
"isEvent": false,
"type": "Gatherers",
"era": 3,
"armed": false,
"params": [
5
]
},
{
"isEvent": false,
"type": "Gatherers",
"era": 3,
"armed": false,
"params": [
4
]
},
{
"isEvent": false,
"type": "Gatherers",
"era": 3,
"armed": false,
"params": []
},
{
"isEvent": false,
"type": "Artist",
"era": 3,
"armed": false,
"params": [
5
]
},
{
"isEvent": false,
"type": "Artist",
"era": 3,
"armed": false,
"params": []
},
{
"isEvent": false,
"type": "Artist",
"era": 3,
"armed": false,
"params": []
},
{
"isEvent": false,
"type": "Artist",
"era": 3,
"armed": false,
"params": []
},
{
"isEvent": false,
"type": "Inventor",
"era": 3,
"armed": false,
"params": [
3,
4
]
},
{
"isEvent": false,
"type": "Inventor",
"era": 3,
"armed": false,
"params": [
0,
3
]
},
{
"isEvent": false,
"type": "Inventor",
"era": 3,
"armed": false,
"params": [
1,
3
]
},
{
"isEvent": false,
"type": "Inventor",
"era": 3,
"armed": false,
"params": [
6
]
},
{
"isEvent": false,
"type": "Inventor",
"era": 3,
"armed": false,
"params": [
2
]
},
{
"isEvent": false,
"type": "Inventor",
"era": 3,
"armed": false,
"params": [
3
]
},
{
"isEvent": false,
"type": "Inventor",
"era": 3,
"armed": false,
"params": [
9
]
},
{
"isEvent": false,
"type": "Shaman",
"era": 3,
"armed": false,
"params": [
2,
3
]
},
{
"isEvent": false,
"type": "Shaman",
"era": 3,
"armed": false,
"params": [
3
]
},
{
"isEvent": false,
"type": "Shaman",
"era": 3,
"armed": false,
"params": [
2
]
},
{
"isEvent": false,
"type": "Shaman",
"era": 3,
"armed": false,
"params": [
3
]
},
{
"isEvent": false,
"type": "Shaman",
"era": 3,
"armed": false,
"params": [
2,
4
]
},
{
"isEvent": true,
"type": "Hunt",
"era": 3,
"armed": false,
"params": [
3
]
},
{
"isEvent": true,
"type": "CavePaintings",
"era": 3,
"armed": false,
"params": [
3,
2,
3
]
}
]
@@ -0,0 +1,21 @@
package it.polimi.ingsw.gc14.Model;
import it.polimi.ingsw.gc14.Model.Cards.TribeCard;
import org.junit.jupiter.api.Test;
import java.util.*;
import static org.junit.jupiter.api.Assertions.*;
class DecksCreatorTest {
@Test
void loadDeck() {
List<TribeCard> cards = DecksCreator.loadDeck("/Cards/cards_era1.json");
assertEquals(33,cards.size());
List<TribeCard> cards2 = DecksCreator.loadDeck("/Cards/cards_era2.json");
assertEquals(32,cards2.size());
List<TribeCard> cards3 = DecksCreator.loadDeck("/Cards/cards_era3.json");
assertEquals(29,cards3.size());
}
}