problème :
- le harvester avait une apparence non-changeante dépendant du genre de ressource sur lequel il était placé.
solution :
- ajouter une logique qui change le prefab choisi dépendant de sur quelle tuile on place le harvester.
- also, quelques micro refactorings (changement de noms, ajout de doc)
WaveObserver gère le nombre d'ennemi à créer et assure d'arreter la création d'ennemis supplémentaires.
SpawnerTile détermine un intervalle aléatoire automatiquement après chaque création d'ennemi. La première intervalle a plus de chance d'être plus courte que les intervalles suivantes.
Config01 est le scriptable object de type LevelConfig
Suppression de commentaires de tests
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
problème : il faut que les resource tiles produisent des resources seulement quand elles ont une unité au dessus d'elles pour les harvester.
solution : créer une classe harvester qui est vérifiée par la resource tile avant d'updater. Si aucun harvester n'est au dessus, aucune update n'est faite.
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
LevelConfig cnotient la liste des ennemies à spawn à un rythme constant ainsi que la durée du jeux
EnemyType contient l'ennemi ainsi que la quantité à SpawnerTile
Modifications de Level et TilemapData afin d'accéder aux paramètres des Spawners du jeu
Ajout de YieldTile dans la scène de TestDragAndDrop
Ajout de Meat pour le yield de nourriture afin de séparer Farm
Ajusté ResourceTile pour toujours produire des ressources à moins que YieldSpeed est égal à 0
problème : au moment de load une save, les tiles qui spawnaient des GameObjects au start les spawnaient malgré qu'ils l'avait déjà spawné dans la dernière session de jeu + problèmes de sérialisation divers
solution : spawner le GameObject seulement si le lifetime de la tile est de zéro. correction des différents problèmes de sérialisation.
note : les tiles ne semblent vraiment pas être faites pour avoir une update loop. mais bon, maintenant ça marche.
problème : le fait que les méthodes update/start/destroy etc des ILevelObject soit abstraites était restreignant (obligation de override)
solution : j'ai rendu les méthodes virtuelles à la place de abstraites.
problem : tiles dont have an update loop, neither do they have a start / destroy method
solution : finished working on a way to create a custom start/update/destroy pipeline for the projects custom tiles. it's using LevelManagerScript as to Update.
note : also created a database and a start of serialization system so we can save and load stuff.
le fait qu'il faille updater des tiles du tilemap posait un réel problème
création d'un système d'héritage pour que les game objects et les tiles puissent cohabiter dans une même game loop
- ILevelObject contient des fonctions de start, de destroy, d'update, d'égalité et une position
- LevelTile et LevelObject héritent de ILevelObject et peuvent être hérité par des tiles ou des MonoBehaviours.
- le level manager est un monobehaviour singleton qui update tous les ILevelObjects à chaque frame.
au lieu d'ajouter une classe data intermédiaire.
l'idée est que ça rend les modifications complexes d'avoir un intermédiaire. Autant ajouter la tuile direct.