WaveObserver donne aux spawners les unités à instancier ainsi que l'intervalle de création de ceux-ci
LevelConfig passe de Level vers LevelManager puis il est utilisé dans l'instance de WaveObserver
problems :
- game scene was not as shown in the GDD
- problem when moving tilemap (the placeholders didn't follow)
- possible to place units outside the game area
solutions :
- try to make the game scene as close to the gdd as possible
- don't move the tilemap : move the camera instead (this keeps the world position of tilemap intact)
- there was a logic bug in the DraggablePlaceholder. It ain't anymore
problème : quand on load un niveau, les tilemaps sont toujours reset à position = (0,0,0) et scale = (1,1,1).
solution : sauvegarder la position et l'échelle locale des tilemaps
problems :
- there were no test scene
- units would appear weird over some tiles
- units would not recognize some tiles when trying to know if it could place itself on it
solution :
- added test scene
- tweaked sorting layers in units
- added IsCollidable parameter in ILevelObject
problème : les game objects sont offsettés de (-.5, -.5) par rapport aux tiles
contrainte : on ne veut pas changer l'ancrage des game objects ou des tiles
solution : changer le point d'ancrage des tilemaps à la place. Cela peut se faire automatiquement à la création du niveau.
problèmes :
- mon code et l'arrangement des fichiers avait besoin d'un peu de tidy up
- les tiles qui n'étaient pas des LevelTile ne loadaient pas
solution :
- rangé un peu + respecté structure une classe - un fichier
- tenté un build pour voir si tout roulait comme il faut, ce qui m'a porté à ajouter des directives de preprocessing et à bouger les custom inspectors dans le dossier Editor.
- ajouté une représentation simple des tuiles non-LevelTile dans la sauvegarde.
problème : le save et le load fonctionnait avec un string en mémoire
solution : créer un fichier save.txt dans les assets quand on sauvegarde, et lire de ce fichier quand on load.
puisqu'on utilise des assembly definitions maintenant, il est important que les scripts soient posés dans le dossier Scripts pour qu'ils soient accessibles aux autres scripts. Il a donc fallu déplacer les scripts se trouvant dans le dossier LevelEditor.
La feature était désorganisé et il n'y avait rien pour tester ou démontrer la fonctionalité
J'ai rangé tous les scripts dans des dossiers enfants de LevelEditor.
Tous les fichiers du level editor sont dans le namespace GatherAndDefend.LevelEditor.
J'ai ajouté un type de tile qui peut instantier un prefab au startup.
J'ai créé un level de test.
sauvegarder et charger des niveaux à partir d'un tilemap
un scriptable object contient les informations pour le niveau
un script avec un custom editor permet de sauvegarder un ensemble de tilemaps, ou de charger l'information contenue dans un scriptable object