- Gabriel: Construção das ferramentas (modelos e gerenciamento de arquivos).
- Hugo e Leon: Implementação do RPG (interpretação/renderização do mapa e movimentação do jogador).
- Lucas Hideki: Interface de menus.
Para fins de documentação, a seguir vou comentar brevemente sobre o problema de compatibilidade entre os arquivos e como resolvemos.
No projeto, utilizamos a biblioteca JsonBeans para a serialização e desserialização de objetos em arquivos JSON devido ao fato de ser compatível com o LibGDX. A biblioteca funciona bem quando é utilizada em um único sistema, mas encontramos uma dificuldade ao lidar com dois projetos distintos, com pacotes e classes diferentes: listas. Observe, por exemplo, a seguinte classe, com getters, setters e construtores omitidos :
Um objeto dessa classe serializado possui a seguinte representação em JSON, por padrão:
Como listas podem armazenar objetos de quaisquer tipos, é necessário fazer referência ao nome completo da classe, incluindo pacote (no caso, java.util.Integer). Isso é um problema no nosso caso, uma vez que temos classes idênticas, mas em pacotes distintos (por exemplo: "com.example.Card" e "com.example.tools.Card"). Para contornar a situação, criamos em ambos os projetos uma classe que inicializa um objeto Json e atribui tags comuns às classes:
// Projeto 1:
Json json = new Json();
json.addClassTag("Card", com.example.Card.class);
// Projeto 2:
Json json = new Json();
json.addClassTag("Card", com.example.tools.Card.class);
Logo, cada um dos projetos lida com suas próprias classes e pacotes, mas a interação entre os sistemas não é prejudicada devido ao uso de tags compartilhadas.
No projeto, utilizamos a biblioteca JsonBeans para a serialização e desserialização de objetos em arquivos JSON devido ao fato de ser compatível com o LibGDX. A biblioteca funciona bem quando é utilizada em um único sistema, mas encontramos uma dificuldade ao lidar com dois projetos distintos, com pacotes e classes diferentes: listas. Observe, por exemplo, a seguinte classe, com getters, setters e construtores omitidos :
public class Foo { private String name; private ArrayList<Integer> fooBars;}Um objeto dessa classe serializado possui a seguinte representação em JSON, por padrão:
{"name": "Name""fooBars": [ {"class": "java.util.Integer", "value": 2 }, {"class": "java.util.Integer", "value": 40 }]}Como listas podem armazenar objetos de quaisquer tipos, é necessário fazer referência ao nome completo da classe, incluindo pacote (no caso, java.util.Integer). Isso é um problema no nosso caso, uma vez que temos classes idênticas, mas em pacotes distintos (por exemplo: "com.example.Card" e "com.example.tools.Card"). Para contornar a situação, criamos em ambos os projetos uma classe que inicializa um objeto Json e atribui tags comuns às classes:
// Projeto 1:
Json json = new Json();
json.addClassTag("Card", com.example.Card.class);
// Projeto 2:
Json json = new Json();
json.addClassTag("Card", com.example.tools.Card.class);
Logo, cada um dos projetos lida com suas próprias classes e pacotes, mas a interação entre os sistemas não é prejudicada devido ao uso de tags compartilhadas.

0 comentários:
Postar um comentário