# Client basique pour le projet Bomber Student 

Ce projet n'est pas une version définitive, elle est soumise à des updates. 


# Contenu du projet

Ce projet contient un environnement de base pour un client java. 

C'est un projet maven. 

La classe contenant le `main` est la classe `App.java`. 

# Package `model.asset`

## Classe AssetManager 

C'est la classe permettant de charger un nouveau sprite. C'est un singleton. Il faut donc utiliser la méthode `getInstance` pour récupérer une instance de cette classe. 

C'est avec la méthode `get` que l'on vient charger un sprite (déjà chargé au préalable ou nom). On utilise pour cela son nom. Les sprite doivent être stockés dans le dossier sprite du dossier spécifique maven `resources`. 

Vous pouvez renommer le dossier si vous changez le chemin dans le fichier `path.properties` du dossier config. Cependant vous devrez tout mettre quand même dans le dossier resources. 

## Classe Sprite 

C'est une classe très basique qui ne contient qu'une référence sur une Image. Il faudra certainement la faire évoluer ... 


# Package model.assetLoader 

## Classe SpriteLoader 

C'est la classe qui permet de charger un nouveau sprite si il n'est pas présent dans la map des sprites chargés. Il utilise pour cela le chemin spécifié dans le fichier "path.properties".

# Package model.config

## Classe ConfigManager

Comme pour l'AssetManager, c'est une classe gérant la configuration du client. C'est un singleton, il faut donc appelet la méthode `getInstance` pour récupérer une instance de cette classe. 

Avec la méthode `get` vous récupérez un objet de type `Configuration`. Pour le moment les clés que vous pouvez donnez à cette méthode sont: 

- path: fichier de configuration pour les chemins des sprites, des sons etc...
- general: fichier de configuration général: activation/désactivation du son, volume, musique ... 
- input: gestion des touches du clavier 

A vous de créer les menus permettant d'éditer ces fichiers. 

## Interface Configuration 

- load() permet de charger le fichier de configuration 
- save() permet de sauvegarder le fichier de configuraiton 
- get(name) permet d'accéder à la valeur de la clé `name`


## Classe MyProperties 

Implémentation de l'interface Configuration. 


# Package View 

## Classe Abstraite View 

Permet de créer une nouvelle vue du jeu (Menu, Map du jeu ...). 

## Classe MenuView 

Implémentation d'une view pour le menu. 

## Classe Window 

Classe permettant de gérer la fenêtre du jeu (taille, style...). Dans cette classe se trouve également la méthode `setView()` permettant de chagner facilement de vue.  
