feat: Add dynamic environment interaction system and new events#13
feat: Add dynamic environment interaction system and new events#13
Conversation
- Implement player interaction system with the environment - Add dynamic room system: - Events now added based on room number and corridor-specific stages - Dynamic event generation based on the current floor - New events added: - "Blacksmith" - "Altar" event allowing players to take one item - Introduced IsCorridor detection system for dynamic instantiation and removal of corridor events - Enhance item saving system to persist data across rooms, including inventory, dialogues, and more - Implement full inventory system - Add multiple UI elements, animations, and canvas for visual feedback
WalkthroughLes modifications apportées dans cette demande de tirage incluent l'ajout de nouveaux objets de jeu et de fichiers de métadonnées dans le système de salle du projet Unity. Des préfabriqués tels que Changes
Poem
Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media? 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
There was a problem hiding this comment.
Actionable comments posted: 37
🧹 Outside diff range and nitpick comments (19)
Assets/Scripts/Player/Player.cs (1)
1-28: Résumé de la revue : Bonne base avec des opportunités d'amélioration.La classe
Playerfournit une bonne base pour la gestion de l'inventaire du joueur. Voici un résumé des points clés et des suggestions d'amélioration :
- La structure générale de la classe est bonne et suit les conventions Unity.
- L'encapsulation de l'inventaire pourrait être améliorée pour un meilleur contrôle des accès.
- Considérez l'utilisation d'une classe
Itempersonnalisée pour une meilleure extensibilité.- La méthode
AddItemToInventorypourrait bénéficier d'une simplification et de l'ajout de logs.- La méthode
HasItemest bien implémentée.Prochaines étapes suggérées :
- Implémentez les améliorations proposées pour l'encapsulation et la robustesse.
- Ajoutez des tests unitaires pour valider le comportement de la classe.
- Considérez l'ajout de fonctionnalités supplémentaires comme la suppression d'items ou la gestion de la capacité de l'inventaire.
Assets/Prefabs/RoomSystem/CorridorEvent/AltarAnims/Altar_Totem.controller (1)
29-50: Configuration de l'AnimatorController approuvée avec suggestion.La configuration de l'AnimatorController "Altar_Totem" est correcte pour une animation simple. Cependant, envisagez d'ajouter des paramètres d'animation pour une flexibilité future, permettant des comportements plus complexes si nécessaire.
Assets/Scripts/Map Control/RoomSystem/PNJ/BlackSmith/Blacksmith.cs (1)
1-1: Supprimez l'importation inutilisée.L'importation de
System.Diagnosticsn'est pas utilisée dans le code et peut être supprimée.Assets/Resources/CorridorEventsRessources/Idle Adding.png.meta (2)
7-17: Les paramètres de mipmap sont appropriés pour une sprite 2D.La désactivation des mipmaps (enableMipMap: 0) est correcte pour les sprites 2D et permet d'économiser de la mémoire. Cependant, les autres paramètres liés aux mipmaps pourraient être supprimés pour plus de clarté, car ils n'ont pas d'effet lorsque les mipmaps sont désactivés.
Vous pourriez envisager de supprimer les lignes 16-17 pour simplifier le fichier :
- mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3
18-68: Les propriétés de la texture sont bien configurées pour une sprite 2D.Les paramètres sont généralement appropriés pour une sprite 2D dans un jeu Unity. La texture non lisible (isReadable: 0) est bonne pour les performances, sauf si une modification en temps réel est nécessaire.
Cependant, le format de texture RGBA32 (textureFormat: 1) pourrait être optimisé. Selon le contenu de votre sprite, vous pourriez envisager d'utiliser un format compressé comme ASTC, ETC2, ou BC pour réduire la taille de la texture et améliorer les performances, surtout sur les appareils mobiles. Par exemple :
- textureFormat: 1 + textureFormat: 47 # ASTC_6x6 (ou un autre format compressé approprié)Assurez-vous de tester la qualité visuelle après ce changement pour trouver le meilleur équilibre entre la taille du fichier et la qualité visuelle.
Assets/Scripts/Player/PlayerController.cs (2)
27-28: Bonne addition du champPlayer.L'ajout du champ
playerest une bonne pratique pour la séparation des responsabilités. Cela permettra de gérer les données spécifiques au joueur de manière plus modulaire.Considérez l'ajout d'un commentaire XML pour documenter le rôle de ce champ :
/// <summary> /// Référence au composant Player gérant les données spécifiques au joueur. /// </summary> private Player player;
Line range hint
1-165: Résumé de la revue et suggestions pour les prochaines étapesLes modifications apportées à
PlayerController.csintroduisent une intégration avec un nouveau composantPlayer. C'est une bonne étape vers une meilleure séparation des responsabilités dans le code.Suggestions pour la suite :
- Complétez l'intégration du composant
Playeren l'utilisant dans les méthodes pertinentes dePlayerMovement.- Mettez à jour la documentation de la classe pour refléter ces changements.
- Assurez-vous que tous les tests unitaires existants passent toujours et ajoutez de nouveaux tests si nécessaire.
- Considérez la création d'une interface
IPlayerpour faciliter les tests et permettre une meilleure extensibilité à l'avenir.Assets/Resources/CorridorEventsRessources/Idle Working.png.meta (2)
109-289: Configuration correcte du sprite sheet avec suggestion d'améliorationLa configuration du sprite sheet est bien réalisée :
- 8 sprites de 32x32 pixels sont correctement définis.
- La convention de nommage est cohérente ("Idle Working_0" à "Idle Working_7").
Suggestion d'amélioration : Si le gameplay le nécessite, envisagez d'ajouter des formes de collision personnalisées pour chaque sprite. Actuellement, aucune forme physique personnalisée n'est définie (voir les tableaux
physicsShapevides).
290-303: Métadonnées correctement configurées avec possibilité d'extensionLa table de correspondance des noms de fichiers et des ID est correctement définie, ce qui facilitera le référencement des sprites dans Unity.
Suggestion : Si des scripts personnalisés nécessitent des métadonnées supplémentaires, envisagez d'utiliser le champ
userData(ligne 301) pour stocker ces informations. Cela pourrait être utile pour des comportements spécifiques liés à cette animation d'inactivité.Assets/Resources/CorridorEventsRessources/Decorations.png.meta (1)
109-408: Vérifiez la convention de nommage des sprites.La configuration de la feuille de sprites est correcte et détaillée. Cependant, envisagez de revoir la convention de nommage des sprites (actuellement Decorations_0, Decorations_1, etc.) pour s'assurer qu'elle est cohérente avec les standards du projet et qu'elle fournit suffisamment de clarté pour les développeurs utilisant ces sprites.
Suggestion : Utilisez des noms plus descriptifs comme "Decorations_Altar", "Decorations_Torch", etc., si applicable, pour améliorer la lisibilité et la maintenance du code.
Assets/Scripts/Map Control/RoomSystem/Interface/InteractableObject.cs (2)
5-5: Ajoutez un commentaire pour le champhasInteractedPour clarifier l'utilisation de ce champ et faciliter la compréhension pour les autres développeurs, il serait judicieux d'ajouter un commentaire décrivant son rôle dans la classe.
7-11: Ajoutez des commentaires XML pour les méthodes abstraitesPour améliorer la documentation et faciliter l'implémentation des classes dérivées, pensez à ajouter des commentaires XML aux méthodes abstraites
Interact,RestoreStateetSaveState.Assets/Prefabs/RoomSystem/CorridorEvent/Altar.prefab (3)
21-22: Vérification de l'état actif du GameObjectLe paramètre
m_IsActiveest défini à 1 (ligne 22~) pour "Altar_Totem". Confirmez que cet objet doit être actif par défaut ou si son activation doit être gérée par un script en fonction de certaines conditions.
81-82: Vérifier les paramètres de couleur et de flip du SpriteRendererLa couleur du SpriteRenderer est définie à {r: 1, g: 1, b: 1, a: 1} (ligne 81~) et
m_FlipXest à 0 (ligne 82~). Si un effet visuel spécifique est souhaité, comme une inversion horizontale ou une teinte particulière, ajustez ces paramètres en conséquence.
181-182: Renommer le GameObject 'Text (TMP)' pour plus de clartéLe nom actuel "Text (TMP)" (ligne 182~) n'est pas très descriptif. Envisagez de le renommer en "PressEText" ou similaire pour améliorer la lisibilité et faciliter la maintenance future.
Assets/Prefabs/RoomSystem/CorridorEvent/Forgeron.prefab (3)
275-275: Corriger l'orthographe du nom de l'objet "EsclamationMark"Le nom de l'objet 'EsclamationMark' contient une faute d'orthographe. Il devrait être 'ExclamationMark'.
Proposez ce diff pour corriger l'orthographe :
- m_Name: EsclamationMark + m_Name: ExclamationMark
71-71: Assurer la cohérence des noms des GameObjects "Smith" et "Smither"Il y a deux GameObjects nommés "Smith" (ligne 71) et "Smither" (ligne 496). Pour maintenir la cohérence, veuillez utiliser le même nom pour ces objets, à moins qu'il y ait une raison spécifique pour cette différence.
Also applies to: 496-496
413-413: Traduire le texte affiché en françaisLe texte "Press E" est en anglais. Pour la cohérence linguistique du jeu, il serait préférable de le traduire en français, par exemple "Appuyez sur E".
Proposez ce diff pour mettre à jour le texte :
- m_text: Press E + m_text: Appuyez sur EAssets/Scenes/EmptyRoom_2.unity (1)
687-819: Vérifier le texte et l'affichage du GameObject "Room N°"Le GameObject "Room N°" a été ajouté avec un composant texte. Assurez-vous que le caractère spécial "°" est correctement rendu dans le jeu et qu'il n'y a pas de problèmes de codage de caractères. Vérifiez également les paramètres de style et d'alignement du texte.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
⛔ Files ignored due to path filters (10)
Assets/Prefabs/RoomSystem/CorridorEvent/ForgeronAnims/Idle Working.pngis excluded by!**/*.pngAssets/Resources/CorridorEventsRessources/Buff Totem Sprite Sheet v1.1.pngis excluded by!**/*.pngAssets/Resources/CorridorEventsRessources/Decorations.pngis excluded by!**/*.pngAssets/Resources/CorridorEventsRessources/Idle Adding.pngis excluded by!**/*.pngAssets/Resources/CorridorEventsRessources/Idle Bored.pngis excluded by!**/*.pngAssets/Resources/CorridorEventsRessources/Idle Checking.pngis excluded by!**/*.pngAssets/Resources/CorridorEventsRessources/Idle Mixing.pngis excluded by!**/*.pngAssets/Resources/CorridorEventsRessources/Idle Research.pngis excluded by!**/*.pngAssets/Resources/CorridorEventsRessources/Idle Working.pngis excluded by!**/*.pngAssets/Resources/CorridorEventsRessources/exclamation_spritesheet_01.pngis excluded by!**/*.png
📒 Files selected for processing (56)
- Assets/Prefabs/RoomSystem/Corridor/CorridorX7.prefab (3 hunks)
- Assets/Prefabs/RoomSystem/CorridorEvent.meta (1 hunks)
- Assets/Prefabs/RoomSystem/CorridorEvent/Altar.prefab (1 hunks)
- Assets/Prefabs/RoomSystem/CorridorEvent/Altar.prefab.meta (1 hunks)
- Assets/Prefabs/RoomSystem/CorridorEvent/AltarAnims.meta (1 hunks)
- Assets/Prefabs/RoomSystem/CorridorEvent/AltarAnims/Altar.anim (1 hunks)
- Assets/Prefabs/RoomSystem/CorridorEvent/AltarAnims/Altar.anim.meta (1 hunks)
- Assets/Prefabs/RoomSystem/CorridorEvent/AltarAnims/Altar_Totem.controller (1 hunks)
- Assets/Prefabs/RoomSystem/CorridorEvent/AltarAnims/Altar_Totem.controller.meta (1 hunks)
- Assets/Prefabs/RoomSystem/CorridorEvent/Forgeron.prefab (1 hunks)
- Assets/Prefabs/RoomSystem/CorridorEvent/Forgeron.prefab.meta (1 hunks)
- Assets/Prefabs/RoomSystem/CorridorEvent/ForgeronAnims.meta (1 hunks)
- Assets/Prefabs/RoomSystem/CorridorEvent/ForgeronAnims/Forgeron.anim (1 hunks)
- Assets/Prefabs/RoomSystem/CorridorEvent/ForgeronAnims/Forgeron.anim.meta (1 hunks)
- Assets/Prefabs/RoomSystem/CorridorEvent/ForgeronAnims/Idle Working.png.meta (1 hunks)
- Assets/Prefabs/RoomSystem/CorridorEvent/ForgeronAnims/Smither.controller (1 hunks)
- Assets/Prefabs/RoomSystem/CorridorEvent/ForgeronAnims/Smither.controller.meta (1 hunks)
- Assets/Resources/CorridorEventsRessources.meta (1 hunks)
- Assets/Resources/CorridorEventsRessources/Altar.anim (1 hunks)
- Assets/Resources/CorridorEventsRessources/Altar.anim.meta (1 hunks)
- Assets/Resources/CorridorEventsRessources/Buff Totem Sprite Sheet v1.1.png.meta (1 hunks)
- Assets/Resources/CorridorEventsRessources/Decorations.png.meta (1 hunks)
- Assets/Resources/CorridorEventsRessources/Idle Adding.png.meta (1 hunks)
- Assets/Resources/CorridorEventsRessources/Idle Bored.png.meta (1 hunks)
- Assets/Resources/CorridorEventsRessources/Idle Checking.png.meta (1 hunks)
- Assets/Resources/CorridorEventsRessources/Idle Mixing.png.meta (1 hunks)
- Assets/Resources/CorridorEventsRessources/Idle Research.png.meta (1 hunks)
- Assets/Resources/CorridorEventsRessources/Idle Working.png.meta (1 hunks)
- Assets/Resources/CorridorEventsRessources/exclamation_spritesheet_01.png.meta (1 hunks)
- Assets/Scenes/DevRoom.unity (4 hunks)
- Assets/Scenes/EmptyRoom_2.unity (6 hunks)
- Assets/Scripts/GameData.cs (1 hunks)
- Assets/Scripts/GameData.cs.meta (1 hunks)
- Assets/Scripts/GameDataManager.cs (1 hunks)
- Assets/Scripts/GameDataManager.cs.meta (1 hunks)
- Assets/Scripts/GameTracker.cs (1 hunks)
- Assets/Scripts/GameTracker.cs.meta (1 hunks)
- Assets/Scripts/Map Control/DoorSystem.cs (1 hunks)
- Assets/Scripts/Map Control/RoomSystem.meta (1 hunks)
- Assets/Scripts/Map Control/RoomSystem/Altar.cs (1 hunks)
- Assets/Scripts/Map Control/RoomSystem/Altar.cs.meta (1 hunks)
- Assets/Scripts/Map Control/RoomSystem/Interface.meta (1 hunks)
- Assets/Scripts/Map Control/RoomSystem/Interface/IInteractable.cs (1 hunks)
- Assets/Scripts/Map Control/RoomSystem/Interface/IInteractable.cs.meta (1 hunks)
- Assets/Scripts/Map Control/RoomSystem/Interface/InteractableObject.cs (1 hunks)
- Assets/Scripts/Map Control/RoomSystem/Interface/InteractableObject.cs.meta (1 hunks)
- Assets/Scripts/Map Control/RoomSystem/PNJ.meta (1 hunks)
- Assets/Scripts/Map Control/RoomSystem/PNJ/BlackSmith.meta (1 hunks)
- Assets/Scripts/Map Control/RoomSystem/PNJ/BlackSmith/Blacksmith.cs (1 hunks)
- Assets/Scripts/Map Control/RoomSystem/PNJ/BlackSmith/Blacksmith.cs.meta (1 hunks)
- Assets/Scripts/Player.meta (1 hunks)
- Assets/Scripts/Player/Player.cs (1 hunks)
- Assets/Scripts/Player/Player.cs.meta (1 hunks)
- Assets/Scripts/Player/PlayerController.cs (1 hunks)
- Assets/Scripts/Trap/Crossbow/Crossbow.cs (2 hunks)
- Assets/Scripts/UI/Dialogue/DialogueManager.cs (0 hunks)
💤 Files with no reviewable changes (1)
- Assets/Scripts/UI/Dialogue/DialogueManager.cs
✅ Files skipped from review due to trivial changes (35)
- Assets/Prefabs/RoomSystem/CorridorEvent.meta
- Assets/Prefabs/RoomSystem/CorridorEvent/Altar.prefab.meta
- Assets/Prefabs/RoomSystem/CorridorEvent/AltarAnims.meta
- Assets/Prefabs/RoomSystem/CorridorEvent/AltarAnims/Altar.anim
- Assets/Prefabs/RoomSystem/CorridorEvent/AltarAnims/Altar.anim.meta
- Assets/Prefabs/RoomSystem/CorridorEvent/AltarAnims/Altar_Totem.controller.meta
- Assets/Prefabs/RoomSystem/CorridorEvent/Forgeron.prefab.meta
- Assets/Prefabs/RoomSystem/CorridorEvent/ForgeronAnims.meta
- Assets/Prefabs/RoomSystem/CorridorEvent/ForgeronAnims/Forgeron.anim
- Assets/Prefabs/RoomSystem/CorridorEvent/ForgeronAnims/Forgeron.anim.meta
- Assets/Prefabs/RoomSystem/CorridorEvent/ForgeronAnims/Idle Working.png.meta
- Assets/Prefabs/RoomSystem/CorridorEvent/ForgeronAnims/Smither.controller.meta
- Assets/Resources/CorridorEventsRessources.meta
- Assets/Resources/CorridorEventsRessources/Altar.anim
- Assets/Resources/CorridorEventsRessources/Altar.anim.meta
- Assets/Resources/CorridorEventsRessources/Buff Totem Sprite Sheet v1.1.png.meta
- Assets/Resources/CorridorEventsRessources/Idle Bored.png.meta
- Assets/Resources/CorridorEventsRessources/Idle Checking.png.meta
- Assets/Resources/CorridorEventsRessources/Idle Mixing.png.meta
- Assets/Resources/CorridorEventsRessources/Idle Research.png.meta
- Assets/Resources/CorridorEventsRessources/exclamation_spritesheet_01.png.meta
- Assets/Scripts/GameData.cs.meta
- Assets/Scripts/GameDataManager.cs.meta
- Assets/Scripts/GameTracker.cs.meta
- Assets/Scripts/Map Control/RoomSystem.meta
- Assets/Scripts/Map Control/RoomSystem/Altar.cs.meta
- Assets/Scripts/Map Control/RoomSystem/Interface.meta
- Assets/Scripts/Map Control/RoomSystem/Interface/IInteractable.cs.meta
- Assets/Scripts/Map Control/RoomSystem/Interface/InteractableObject.cs.meta
- Assets/Scripts/Map Control/RoomSystem/PNJ.meta
- Assets/Scripts/Map Control/RoomSystem/PNJ/BlackSmith.meta
- Assets/Scripts/Map Control/RoomSystem/PNJ/BlackSmith/Blacksmith.cs.meta
- Assets/Scripts/Player.meta
- Assets/Scripts/Player/Player.cs.meta
- Assets/Scripts/Trap/Crossbow/Crossbow.cs
🧰 Additional context used
🔇 Additional comments (29)
Assets/Scripts/Map Control/RoomSystem/Interface/IInteractable.cs (1)
1-4: Bonne implémentation de l'interface IInteractable.L'interface
IInteractableest bien conçue et suit les bonnes pratiques de programmation. Elle définit une méthode uniqueInteractqui prend un paramètrePlayer, ce qui permettra une interaction cohérente entre le joueur et divers objets du jeu.Points positifs :
- Respect du principe de responsabilité unique
- Nomenclature conforme aux standards C#
- Interface simple et claire facilitant son implémentation
Cette approche favorisera la modularité et la maintenabilité du code en permettant à différents objets du jeu d'implémenter leurs propres logiques d'interaction tout en respectant un contrat commun.
Assets/Scripts/GameData.cs (1)
3-5: Bonne utilisation de l'attribut Serializable.La déclaration de la classe
GameDataavec l'attribut[System.Serializable]est appropriée pour la gestion des données de jeu. Cela permettra une sérialisation facile pour la sauvegarde et le chargement des données.Assets/Scripts/Player/Player.cs (2)
1-6: LGTM : Déclaration de classe et importations appropriées.La déclaration de la classe et les importations sont conformes aux conventions Unity et semblent appropriées pour la fonctionnalité prévue.
22-25: LGTM : Méthode HasItem bien implémentée.La méthode
HasItemest correctement implémentée et concise. Elle remplit efficacement sa fonction de vérification de la présence d'un item dans l'inventaire.Assets/Scripts/GameDataManager.cs (1)
11-22: Bonne implémentation du pattern SingletonLa méthode Awake implémente correctement le pattern Singleton et utilise DontDestroyOnLoad pour persister l'objet entre les scènes.
Assets/Prefabs/RoomSystem/CorridorEvent/ForgeronAnims/Smither.controller (1)
5-28: Vérifiez la configuration de l'AnimatorState "Forgeron".La configuration de base semble correcte, mais il y a quelques points à considérer :
- Aucune transition n'est définie. Est-ce intentionnel ou devrait-il y avoir des transitions vers d'autres états ?
- Assurez-vous que le GUID de l'animation (3ac0205848dec4741b9aacd262d09129) est correct et correspond à l'animation souhaitée.
Pouvez-vous confirmer que c'est le comportement souhaité pour l'animation du forgeron ?
Assets/Prefabs/RoomSystem/CorridorEvent/AltarAnims/Altar_Totem.controller (2)
3-28: Configuration de l'AnimatorState approuvée.La configuration de l'AnimatorState "Altar" semble correcte pour une animation en boucle simple. Assurez-vous que le clip d'animation référencé par le GUID existe et contient l'animation souhaitée pour l'autel.
51-72: Configuration de l'AnimatorStateMachine approuvée.La configuration de l'AnimatorStateMachine est correcte pour un contrôleur à état unique. La définition du positionnement des nœuds d'entrée, de sortie et de tout état est une bonne pratique pour l'organisation visuelle dans l'éditeur Unity.
Assets/Resources/CorridorEventsRessources/Idle Adding.png.meta (3)
1-6: Les informations de base de l'asset sont correctes.Les paramètres de base du fichier méta, y compris la version du format de fichier, le GUID et la version de sérialisation du TextureImporter, sont correctement définis et suivent le format standard de Unity.
109-122: Les informations de la feuille de sprites sont correctes pour une sprite unique.La configuration de la feuille de sprites est appropriée pour une texture contenant une seule sprite. L'absence de sprites définis et la présence d'un spriteID par défaut sont normales dans ce contexte.
123-127: Les métadonnées supplémentaires sont correctement configurées.Les champs vides pour userData, assetBundleName et assetBundleVariant sont normaux, à moins que des configurations spécifiques d'asset bundle ne soient nécessaires. Les autres paramètres sont typiques pour une importation standard de sprite.
Assets/Scripts/Player/PlayerController.cs (1)
27-33: Revoyez l'utilisation du champplayerdans la classe.L'ajout du champ
playeret son initialisation sont de bonnes améliorations pour la structure du code. Cependant, il semble que ce champ ne soit pas encore utilisé dans le reste de la classePlayerMovement.Assurez-vous que :
- Vous avez bien l'intention d'utiliser ce champ dans cette classe.
- Vous avez planifié l'intégration des fonctionnalités du composant
Playerdans les méthodes existantes.Si l'utilisation est prévue dans d'autres fichiers, veuillez l'indiquer dans un commentaire pour clarifier l'intention.
Assets/Resources/CorridorEventsRessources/Idle Working.png.meta (2)
1-6: Configuration correcte du fichier et de la versionLa configuration de base du fichier, y compris la version du format et le GUID, est correctement définie pour une utilisation dans Unity.
7-68: Paramètres d'importation optimisés pour l'art pixeliséLes paramètres d'importation sont bien configurés pour un sprite sheet d'art pixelisé :
- Le mode de filtrage point (ligne 37) préserve la netteté des pixels.
- Le rapport pixels/unités de 16 (ligne 51) est adapté à l'échelle du jeu.
- La désactivation des mipmaps (ligne 9) est appropriée pour ce type d'art.
Ces réglages garantissent un rendu fidèle et optimal des sprites pixelisés.
Assets/Resources/CorridorEventsRessources/Decorations.png.meta (3)
1-6: Configuration du fichier correcte.La version du format de fichier, le GUID et la version de sérialisation du TextureImporter sont correctement définis.
7-68: Paramètres d'importation de texture appropriés pour un asset 2D.Les réglages semblent adaptés à un asset de jeu 2D, probablement en pixel art. Vérifiez que ces paramètres (notamment le mode de filtrage point et le ratio pixels/unités de 16) sont cohérents avec le style artistique du projet et les exigences de performance.
409-413: Métadonnées additionnelles correctes.Les champs de métadonnées supplémentaires sont configurés de manière standard et ne soulèvent aucune préoccupation.
Assets/Prefabs/RoomSystem/Corridor/CorridorX7.prefab (1)
94-124: Ajout du point d'apparition du forgeron approuvé.L'ajout du GameObject BlacksmithSpawnPoint est cohérent avec les objectifs du PR pour implémenter un système de salle dynamique avec de nouveaux événements. La position semble appropriée, mais il serait bon de la vérifier dans l'éditeur Unity pour s'assurer qu'elle correspond à l'emplacement souhaité dans le corridor.
Assets/Scripts/Map Control/RoomSystem/Altar.cs (1)
74-85:⚠️ Potential issueAssurer l'initialisation des listes dans
GameDatapour éviter des exceptionsDans les méthodes
SaveStateetRestoreState, il est important de s'assurer que les listes dansgameDatasont correctement initialisées pour éviter des exceptionsNullReferenceException.Voulez-vous que je vous aide en vérifiant ou en ajustant le code pour garantir une initialisation correcte ?
Assets/Prefabs/RoomSystem/CorridorEvent/Altar.prefab (5)
48-51: Optimisation des ombres et des probes lumineusesLes paramètres
m_CastShadows(ligne 47~) etm_ReceiveShadows(ligne 48~) sont désactivés. Si cela est intentionnel pour des raisons de performance, c'est acceptable. Sinon, envisagez de les activer pour améliorer le réalisme visuel de l'autel.
92-111: Vérification du contrôleur d'animation assignéL'Animator (ligne 92~) référence un contrôleur avec le GUID indiqué (ligne 101~). Assurez-vous que ce contrôleur d'animation existe dans le projet et qu'il contient les animations nécessaires pour l'autel, afin d'éviter des problèmes d'animation à l'exécution.
141-142: Confirmer le paramètre 'IsTrigger' du BoxCollider2DLe BoxCollider2D a
m_IsTriggerdéfini à 1 (ligne 141~), ce qui signifie qu'il détectera les collisions sans réponse physique. Vérifiez que cela correspond au comportement attendu pour permettre les interactions du joueur avec l'autel.
441-442: Vérifier les paramètres de sorting du CanvasLes valeurs
m_SortingLayerID(-1791178601, ligne 441~) etm_SortingOrder(50, ligne 442~) déterminent l'ordre de rendu du Canvas. Confirmez que ces paramètres permettent au canvas d'interaction de s'afficher correctement devant les autres éléments de la scène.
166-166: Assurer la présence du script référencéLe MonoBehaviour (ligne 166~) fait référence à un script avec le GUID donné. Veuillez confirmer que ce script est bien présent dans le projet et qu'il est correctement compilé pour éviter des erreurs à l'exécution.
Assets/Scenes/EmptyRoom_2.unity (4)
392-408: Vérifier la configuration du GameObject "Stage"Le GameObject "Stage" a été ajouté avec les composants
RectTransform,MonoBehaviouretCanvasRenderer. Assurez-vous que les propriétés duRectTransform(position, échelle, ancrage) sont correctement configurées pour un affichage optimal. De plus, vérifiez que le texte affiché est correct et que les paramètres de police sont appropriés.
526-543: Vérifier la configuration du GameObject "Chrono"Le GameObject "Chrono" a été ajouté avec les composants nécessaires. Veuillez vous assurer que le texte "Chrono" est correctement affiché et que les références de police et de matériau sont correctement assignées. Vérifiez également les paramètres du
RectTransformpour un positionnement adéquat.
1160-1161: Le GameObject "Pause" est désactivéLe GameObject "Pause" a son état
m_IsActivedéfini sur0(désactivé). Si le menu de pause doit être accessible au joueur, assurez-vous qu'il est activé au moment approprié ou modifiez son état initial pour qu'il soit actif.
1268-1272: Vérifier la référencepauseMenuUIdansGameTrackerLa référence
pauseMenuUIa été ajoutée au scriptGameTracker. Assurez-vous que cette référence pointe vers le GameObject correct dans la scène pour garantir le bon fonctionnement du menu de pause.Assets/Scenes/DevRoom.unity (1)
2503-2523: Vérifier l'ajout de l'Animator sur le "Tilemap"L'ajout d'un composant Animator au GameObject "Tilemap" est inhabituel. Assurez-vous que cet ajout est nécessaire et que le contrôleur d'animation référencé est correctement configuré.
| public bool blacksmithInteracted = false; | ||
| public int blacksmithDialogueIndex = 0; | ||
| public List<string> altarAvailableItems = new List<string>(); | ||
| public List<string> altarPlayerReceivedItems = new List<string>(); |
There was a problem hiding this comment.
🛠️ Refactor suggestion
Considérez l'utilisation de propriétés et d'une structure plus robuste pour les objets.
Les champs publics offrent un accès facile aux données, mais peuvent compromettre l'encapsulation. Voici quelques suggestions d'amélioration :
- Utilisez des propriétés avec des accesseurs publics et des mutateurs privés pour un meilleur contrôle de l'accès aux données.
- Envisagez de créer une classe
Itemau lieu d'utiliserstringpour les objets de l'autel. Cela permettrait d'ajouter plus facilement des attributs aux objets à l'avenir.
Exemple de refactorisation :
public bool BlacksmithInteracted { get; private set; } = false;
public int BlacksmithDialogueIndex { get; private set; } = 0;
public List<Item> AltarAvailableItems { get; private set; } = new List<Item>();
public List<Item> AltarPlayerReceivedItems { get; private set; } = new List<Item>();
public class Item
{
public string Name { get; set; }
// Autres propriétés potentielles : Type, Rareté, etc.
}| using System.Collections.Generic; | ||
|
|
||
| [System.Serializable] | ||
| public class GameData | ||
| { | ||
| public bool blacksmithInteracted = false; | ||
| public int blacksmithDialogueIndex = 0; | ||
| public List<string> altarAvailableItems = new List<string>(); | ||
| public List<string> altarPlayerReceivedItems = new List<string>(); | ||
|
|
||
| } |
There was a problem hiding this comment.
🛠️ Refactor suggestion
Envisagez d'ajouter des méthodes pour la gestion des données.
La classe GameData pourrait bénéficier de méthodes supplémentaires pour améliorer la gestion des données et l'encapsulation. Voici quelques suggestions :
-
Ajoutez des méthodes pour manipuler les listes d'objets de l'autel, par exemple :
public void AddAltarItem(string item) public void RemoveAltarItem(string item) public void ReceiveAltarItem(string item)
-
Implémentez une méthode pour progresser dans le dialogue du forgeron :
public void AdvanceBlacksmithDialogue()
-
Ajoutez une méthode pour réinitialiser les données du jeu :
public void ResetGameData()
Ces ajouts permettraient un meilleur contrôle sur les modifications des données du jeu et réduiraient le risque d'états invalides.
| public class Player : MonoBehaviour | ||
| { | ||
|
|
||
| public List<string> inventory = new List<string>(); |
There was a problem hiding this comment.
🛠️ Refactor suggestion
Suggestion : Améliorez l'encapsulation et la robustesse de l'inventaire.
Considérez les points suivants pour améliorer l'implémentation de l'inventaire :
- Utilisez une propriété privée avec un accesseur public pour mieux contrôler l'accès à l'inventaire.
- Envisagez d'utiliser une classe
Itempersonnalisée au lieu de simples chaînes pour une meilleure extensibilité.
Voici une suggestion d'implémentation améliorée :
private List<Item> _inventory = new List<Item>();
public IReadOnlyList<Item> Inventory => _inventory.AsReadOnly();Cela offre un meilleur contrôle sur les modifications de l'inventaire tout en permettant un accès en lecture seule depuis l'extérieur.
| public void AddItemToInventory(string item) | ||
| { | ||
| if (!inventory.Contains(item)) | ||
| { | ||
| inventory.Add(item); | ||
| } | ||
| else | ||
| { | ||
| } | ||
| } |
There was a problem hiding this comment.
🛠️ Refactor suggestion
Suggestion : Simplifiez la méthode AddItemToInventory et ajoutez des logs.
La logique d'ajout d'objets est correcte, mais nous pouvons l'améliorer :
- Supprimez le bloc
elsevide car il n'ajoute aucune valeur. - Envisagez d'ajouter des logs pour le débogage.
Voici une implémentation améliorée :
public void AddItemToInventory(string item)
{
if (!inventory.Contains(item))
{
inventory.Add(item);
Debug.Log($"Item ajouté à l'inventaire : {item}");
}
else
{
Debug.Log($"L'item {item} est déjà dans l'inventaire.");
}
}Cette version simplifie le code et ajoute des logs utiles pour le débogage.
| public void LoadGame() | ||
| { | ||
| foreach (InteractableObject interactable in FindObjectsOfType<InteractableObject>()) | ||
| { | ||
| interactable.RestoreState(gameData); | ||
| } | ||
| //TODO Lire ici toute la data en JSON pour retrieve | ||
| } |
There was a problem hiding this comment.
🛠️ Refactor suggestion
Optimisez le chargement, complétez la désérialisation JSON et réutilisez le code
La méthode LoadGame présente des problèmes similaires à SaveGame en termes d'efficacité et d'implémentation incomplète.
Suggestions d'amélioration :
- Utilisez une structure de données plus efficace pour stocker et récupérer les objets interactifs.
- Implémentez la désérialisation JSON comme indiqué dans le TODO.
- Considérez la création d'une méthode privée pour le code commun entre SaveGame et LoadGame.
Exemple de refactorisation :
private void ProcessInteractableObjects(Action<InteractableObject, GameData> action)
{
foreach (InteractableObject interactable in FindObjectsOfType<InteractableObject>())
{
action(interactable, gameData);
}
}
public void SaveGame()
{
ProcessInteractableObjects((interactable, data) => interactable.SaveState(data));
// TODO: Sérialiser gameData en JSON
}
public void LoadGame()
{
// TODO: Désérialiser JSON en gameData
ProcessInteractableObjects((interactable, data) => interactable.RestoreState(data));
}| m_faceColor: | ||
| serializedVersion: 2 | ||
| rgba: 4294967295 | ||
| m_fontSize: 0.2 |
There was a problem hiding this comment.
Vérifier la taille de police pour le texte
La taille de police est définie à 0.2, ce qui semble très petit. Veuillez vérifier si cette valeur est correcte ou si elle devrait être augmentée pour assurer la lisibilité du texte.
Proposez ce diff pour ajuster la taille de police à une valeur plus lisible :
- m_fontSize: 0.2
+ m_fontSize: 20Committable suggestion was skipped due to low confidence.
| - component: {fileID: 382455319} | ||
| - component: {fileID: 382455318} | ||
| m_Layer: 0 | ||
| m_Name: Smither |
There was a problem hiding this comment.
Correction du nom du GameObject "Smither"
Le nom "Smither" semble être une erreur typographique ou une incohérence linguistique. Pour maintenir la cohérence du projet, veuillez renommer ce GameObject en "Forgeron".
Incohérence dans les noms des GameObjects "Smither" et "Forgeron"
Il y a une incohérence dans les noms des GameObjects : "Smither" à la ligne 299 et "Forgeron" à la ligne 2538. Pour assurer la cohérence et faciliter la maintenance, veuillez utiliser un nom uniforme pour ce GameObject.
Also applies to: 2538-2538
| public void SpawnCorridorEvents() | ||
| { | ||
| altarSpawnPoint = GameObject.Find("AltarSpawnPoint")?.transform; | ||
|
|
||
| if (blacksmithSpawnPoint == null || altarSpawnPoint == null) | ||
| { | ||
|
|
||
| return; | ||
| } | ||
|
|
There was a problem hiding this comment.
Assignation manquante de blacksmithSpawnPoint
Le point de spawn pour le forgeron (blacksmithSpawnPoint) n'est pas initialisé, ce qui peut entraîner une NullReferenceException lors de l'instanciation du prefab du forgeron.
Pour corriger ce problème, ajoutez l'assignation suivante au début de la méthode SpawnCorridorEvents :
+ blacksmithSpawnPoint = GameObject.Find("BlacksmithSpawnPoint")?.transform;
altarSpawnPoint = GameObject.Find("AltarSpawnPoint")?.transform;
if (blacksmithSpawnPoint == null || altarSpawnPoint == null)
{
return;
}📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| public void SpawnCorridorEvents() | |
| { | |
| altarSpawnPoint = GameObject.Find("AltarSpawnPoint")?.transform; | |
| if (blacksmithSpawnPoint == null || altarSpawnPoint == null) | |
| { | |
| return; | |
| } | |
| public void SpawnCorridorEvents() | |
| { | |
| blacksmithSpawnPoint = GameObject.Find("BlacksmithSpawnPoint")?.transform; | |
| altarSpawnPoint = GameObject.Find("AltarSpawnPoint")?.transform; | |
| if (blacksmithSpawnPoint == null || altarSpawnPoint == null) | |
| { | |
| return; | |
| } | |
| void Update() | ||
| { | ||
| elapsedTime += Time.deltaTime; | ||
|
|
||
| int minutes = (int)elapsedTime / 60; | ||
| int seconds = (int)elapsedTime % 60; | ||
| timerText.text = minutes.ToString("00") + ":" + seconds.ToString("00"); | ||
| } |
There was a problem hiding this comment.
Calcul du temps écoulé potentiellement incorrect
Le calcul des minutes et des secondes à partir de elapsedTime peut être inexact en raison du cast d'un float en int, ce qui tronque la valeur au lieu de l'arrondir correctement.
Pour une précision accrue, utilisez Mathf.FloorToInt :
- int minutes = (int)elapsedTime / 60;
- int seconds = (int)elapsedTime % 60;
+ int minutes = Mathf.FloorToInt(elapsedTime / 60f);
+ int seconds = Mathf.FloorToInt(elapsedTime % 60f);📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| void Update() | |
| { | |
| elapsedTime += Time.deltaTime; | |
| int minutes = (int)elapsedTime / 60; | |
| int seconds = (int)elapsedTime % 60; | |
| timerText.text = minutes.ToString("00") + ":" + seconds.ToString("00"); | |
| } | |
| void Update() | |
| { | |
| elapsedTime += Time.deltaTime; | |
| int minutes = Mathf.FloorToInt(elapsedTime / 60f); | |
| int seconds = Mathf.FloorToInt(elapsedTime % 60f); | |
| timerText.text = minutes.ToString("00") + ":" + seconds.ToString("00"); | |
| } |
| if (stageCounter >= 5 && blacksmithPrefab != null) | ||
| { | ||
| currentBlacksmith = Instantiate(blacksmithPrefab, blacksmithSpawnPoint.position, Quaternion.identity); | ||
| UnityEngine.Debug.Log("Forgeron spawné au stage 5."); | ||
| } | ||
|
|
||
| // Apparition de l'autel au stage 10, et réinitialisation de ses objets | ||
| if (stageCounter >= 10 && altarPrefab != null) | ||
| { | ||
| currentAltar = Instantiate(altarPrefab, altarSpawnPoint.position, Quaternion.identity); | ||
| UnityEngine.Debug.Log("Autel spawné au stage 10."); | ||
| Altar altarScript = currentAltar.GetComponent<Altar>(); | ||
| if (altarScript != null) | ||
| { | ||
| altarScript.ResetItems(); | ||
| } | ||
| } |
There was a problem hiding this comment.
🛠️ Refactor suggestion
Rendre les stages de spawn configurables
Les stages de spawn pour le forgeron (5) et l'autel (10) sont codés en dur. Il serait préférable de les rendre configurables pour faciliter les ajustements futurs et améliorer la flexibilité.
Vous pouvez les définir comme des variables [SerializeField] pour pouvoir les modifier depuis l'éditeur Unity :
+ [SerializeField] private int blacksmithSpawnStage = 5;
+ [SerializeField] private int altarSpawnStage = 10;
// Apparition du forgeron au stage 5
- if (stageCounter >= 5 && blacksmithPrefab != null)
+ if (stageCounter >= blacksmithSpawnStage && blacksmithPrefab != null)
{
currentBlacksmith = Instantiate(blacksmithPrefab, blacksmithSpawnPoint.position, Quaternion.identity);
- UnityEngine.Debug.Log("Forgeron spawné au stage 5.");
+ UnityEngine.Debug.Log("Forgeron spawné au stage " + blacksmithSpawnStage + ".");
}
// Apparition de l'autel au stage 10, et réinitialisation de ses objets
- if (stageCounter >= 10 && altarPrefab != null)
+ if (stageCounter >= altarSpawnStage && altarPrefab != null)
{
currentAltar = Instantiate(altarPrefab, altarSpawnPoint.position, Quaternion.identity);
- UnityEngine.Debug.Log("Autel spawné au stage 10.");
+ UnityEngine.Debug.Log("Autel spawné au stage " + altarSpawnStage + ".");
Altar altarScript = currentAltar.GetComponent<Altar>();
if (altarScript != null)
{
altarScript.ResetItems();
}
}📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| if (stageCounter >= 5 && blacksmithPrefab != null) | |
| { | |
| currentBlacksmith = Instantiate(blacksmithPrefab, blacksmithSpawnPoint.position, Quaternion.identity); | |
| UnityEngine.Debug.Log("Forgeron spawné au stage 5."); | |
| } | |
| // Apparition de l'autel au stage 10, et réinitialisation de ses objets | |
| if (stageCounter >= 10 && altarPrefab != null) | |
| { | |
| currentAltar = Instantiate(altarPrefab, altarSpawnPoint.position, Quaternion.identity); | |
| UnityEngine.Debug.Log("Autel spawné au stage 10."); | |
| Altar altarScript = currentAltar.GetComponent<Altar>(); | |
| if (altarScript != null) | |
| { | |
| altarScript.ResetItems(); | |
| } | |
| } | |
| [SerializeField] private int blacksmithSpawnStage = 5; | |
| [SerializeField] private int altarSpawnStage = 10; | |
| if (stageCounter >= blacksmithSpawnStage && blacksmithPrefab != null) | |
| { | |
| currentBlacksmith = Instantiate(blacksmithPrefab, blacksmithSpawnPoint.position, Quaternion.identity); | |
| UnityEngine.Debug.Log("Forgeron spawné au stage " + blacksmithSpawnStage + "."); | |
| } | |
| // Apparition de l'autel au stage 10, et réinitialisation de ses objets | |
| if (stageCounter >= altarSpawnStage && altarPrefab != null) | |
| { | |
| currentAltar = Instantiate(altarPrefab, altarSpawnPoint.position, Quaternion.identity); | |
| UnityEngine.Debug.Log("Autel spawné au stage " + altarSpawnStage + "."); | |
| Altar altarScript = currentAltar.GetComponent<Altar>(); | |
| if (altarScript != null) | |
| { | |
| altarScript.ResetItems(); | |
| } | |
| } |
* Feature/initialization (#1) * feature: Init repository * chore: add git ignore * chore: Upgrade .gitignore * chore: Remove all ignored files * chore: Removed all files that are in the .gitignore --------- Co-authored-by: Thomas Lamiable <lamiablethomas@gmail.com> * docs: Update README.md * Feature/global map (#3) * feature: Add Timelap and player * fix: fix error with tilemap * feat: First version of Player Movements * feat: First version of animation of the player movements * fix: Update Player prefab to add the animator * feat: Add collisions + modify player prefab * chore: Remove useless folder Art * feature: Add socket connection and linking it to the back-end * fix(player_movement): Fix call between backend and game * feature: Ajout de nombreux assets, modifications de la taille, découpage assets * fix: Global Fixes about the blurring of the components imported * feat: Add first rooms * fix: Fix animations and player asset * feat: Create Third room * fix: Reduce player's hitbox * feature: Ajouts des systèmes de pièges, connections et manager des pièges, animations de la crossbow, ajouts des sprites de l'arrow et de ces effets puis damages, changements tags du joueurs et des walls, changement et ajouts des systèmes de vie du joueurs, changements première phase de l'ui et création de celui-ci * fix: compression des images retirer * revert: Revert changes on the ground.png.meta * revert: Revert changes made on the furnitures * fix: Fix position of map 1 and player collision * fix: Fix rooms placement * fix: Fix arrow physics * feature: Add doors and animations * feature: add door system end remove multiple commentary --------- Co-authored-by: AyakorK <guillaume.moret@yahoo.com> Co-authored-by: Loule | Louis <35641311+Loule95450@users.noreply.github.com> * Feature/addition of corridors (#4) * feature: Add Timelap and player * fix: fix error with tilemap * feat: First version of Player Movements * feat: First version of animation of the player movements * fix: Update Player prefab to add the animator * feat: Add collisions + modify player prefab * chore: Remove useless folder Art * feature: Add socket connection and linking it to the back-end * fix(player_movement): Fix call between backend and game * feature: Ajout de nombreux assets, modifications de la taille, découpage assets * fix: Global Fixes about the blurring of the components imported * feat: Add first rooms * fix: Fix animations and player asset * feat: Create Third room * fix: Reduce player's hitbox * feature: Ajouts des systèmes de pièges, connections et manager des pièges, animations de la crossbow, ajouts des sprites de l'arrow et de ces effets puis damages, changements tags du joueurs et des walls, changement et ajouts des systèmes de vie du joueurs, changements première phase de l'ui et création de celui-ci * fix: compression des images retirer * revert: Revert changes on the ground.png.meta * revert: Revert changes made on the furnitures * fix: Fix position of map 1 and player collision * fix: Fix rooms placement * fix: Fix arrow physics * feature: Add doors and animations * feat: Addition of corridors * feature: add door system end remove multiple commentary --------- Co-authored-by: AyakorK <guillaume.moret@yahoo.com> Co-authored-by: Loule | Louis <35641311+Loule95450@users.noreply.github.com> * feature: First try to add level move in Unity * feat: fix Arrow, upgrade door system * feat: Fix multiple problem * fix: fix door teleport with disable player public selected * feat: Add Menu system, update styling * feat: Add Dialog system, add multiple coroutine for enable or disable dialog box * feat: Level move (#7) * feature: First try to add level move in Unity * feat: fix Arrow, upgrade door system * feat: Fix multiple problem * fix: fix door teleport with disable player public selected * feat: Addition of traps using sockets (#6) * feat: Add auto implementation from website of traps * chore: Add environment variables to UnityProject (#5) * fix: Remove useless Log that was crashed * fix(level_move): Replace hard-coded values with variables for better flexibility Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --------- Co-authored-by: Thomas Lamiable <lamiablethomas@gmail.com> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * feat: Add and fix prefab, add DevRoom prefab * fix: fix door * feat: Add Socket to props to send them to back-end (#8) * feature: First try to add level move in Unity * feat: fix Arrow, upgrade door system * feat: Fix multiple problem * fix: fix door teleport with disable player public selected * feat: Addition of traps using sockets (#6) * feat: Add auto implementation from website of traps * chore: Add environment variables to UnityProject (#5) * fix: Remove useless Log that was crashed * feat: Add link to props using sockets * feat: Add a unique socket system manager --------- Co-authored-by: Thomas Lamiable <lamiablethomas@gmail.com> * hotfix: Delete code duplication * Feature/menu (#11) * merge: Merge menu and develop and fix little issues (#10) * merge: Merge develop to menu (#9) * feat: Level move (#7) * feature: First try to add level move in Unity * feat: fix Arrow, upgrade door system * feat: Fix multiple problem * fix: fix door teleport with disable player public selected * feat: Addition of traps using sockets (#6) * feat: Add auto implementation from website of traps * chore: Add environment variables to UnityProject (#5) * fix: Remove useless Log that was crashed * fix(level_move): Replace hard-coded values with variables for better flexibility Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --------- Co-authored-by: Thomas Lamiable <lamiablethomas@gmail.com> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * feat: Add Socket to props to send them to back-end (#8) * feature: First try to add level move in Unity * feat: fix Arrow, upgrade door system * feat: Fix multiple problem * fix: fix door teleport with disable player public selected * feat: Addition of traps using sockets (#6) * feat: Add auto implementation from website of traps * chore: Add environment variables to UnityProject (#5) * fix: Remove useless Log that was crashed * feat: Add link to props using sockets * feat: Add a unique socket system manager --------- Co-authored-by: Thomas Lamiable <lamiablethomas@gmail.com> --------- Co-authored-by: Thomas Lamiable <lamiablethomas@gmail.com> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * fix: Remove duplication of code * fix: Fix Idle animation --------- Co-authored-by: Thomas Lamiable <lamiablethomas@gmail.com> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * revert: Revert changes from EmptyRoom that breaked doors * feat:Some menu option had * feat: Add pause system, return to menu and restart game, fix OnLoadScene in unity for hard reset player state * chore: remove commentary for trap manager --------- Co-authored-by: Guillaume MORET <90462045+AyakorK@users.noreply.github.com> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> Co-authored-by: AyakorK <guillaume.moret@yahoo.com> * fix: remove duplicata room * feat: Add a visual timer prefab (V.1.0) (#12) Co-authored-by: AyakorK <guillaume.moret@yahoo.com> * feat: Add dynamic environment interaction system and new events (#13) - Implement player interaction system with the environment - Add dynamic room system: - Events now added based on room number and corridor-specific stages - Dynamic event generation based on the current floor - New events added: - "Blacksmith" - "Altar" event allowing players to take one item - Introduced IsCorridor detection system for dynamic instantiation and removal of corridor events - Enhance item saving system to persist data across rooms, including inventory, dialogues, and more - Implement full inventory system - Add multiple UI elements, animations, and canvas for visual feedback * fix: add removed line * feat: Add waiting screen and fix some behaviors (#14) * merge: Merge menu and develop and fix little issues (#10) * merge: Merge develop to menu (#9) * feat: Level move (#7) * feature: First try to add level move in Unity * feat: fix Arrow, upgrade door system * feat: Fix multiple problem * fix: fix door teleport with disable player public selected * feat: Addition of traps using sockets (#6) * feat: Add auto implementation from website of traps * chore: Add environment variables to UnityProject (#5) * fix: Remove useless Log that was crashed * fix(level_move): Replace hard-coded values with variables for better flexibility Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --------- Co-authored-by: Thomas Lamiable <lamiablethomas@gmail.com> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * feat: Add Socket to props to send them to back-end (#8) * feature: First try to add level move in Unity * feat: fix Arrow, upgrade door system * feat: Fix multiple problem * fix: fix door teleport with disable player public selected * feat: Addition of traps using sockets (#6) * feat: Add auto implementation from website of traps * chore: Add environment variables to UnityProject (#5) * fix: Remove useless Log that was crashed * feat: Add link to props using sockets * feat: Add a unique socket system manager --------- Co-authored-by: Thomas Lamiable <lamiablethomas@gmail.com> --------- Co-authored-by: Thomas Lamiable <lamiablethomas@gmail.com> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * fix: Remove duplication of code * fix: Fix Idle animation --------- Co-authored-by: Thomas Lamiable <lamiablethomas@gmail.com> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * revert: Revert changes from EmptyRoom that breaked doors * feat: V1.0 of WaitingScreen * fix: Fix the way of sending props and remove the SocketManager from the player * fix: Remove the Socket when leaving to the menu * feat: Add the SocketManager to the Menu * fix: Fix player animation and options text --------- Co-authored-by: Thomas Lamiable <lamiablethomas@gmail.com> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * feat: Add trap persistance through rooms (#15) * feat: Camera Control & Room enlargement (#16) * feat: Try to update the camera of the user (a bit of a disaster by now) * fix: Add good tracker Y limit for camera move, synch HUD with camera move * fix: Fix the camera adapting to the scene * feat: Get the room bigger --------- Co-authored-by: Thomlam <lamiablethomas@gmail.com> * feat: Modify the new room (#17) * fix: Add a missing pillar * fix: Crossbow positions (#18) * fix: Fix the placement of the crossbows * feat: Add hitboxes to crossbows * fix: Remove useless traps spawns * fix: Reorder correctly the crossbow prefabs * Feature/add traps (#19) * feature: Update some animations and system for the player, and add new trap * feat: update EmptyRoom2 for test --------- Co-authored-by: Guillaume MORET <90462045+AyakorK@users.noreply.github.com> --------- Co-authored-by: Loule | Louis <35641311+Loule95450@users.noreply.github.com> Co-authored-by: AyakorK <guillaume.moret@yahoo.com> Co-authored-by: Guillaume MORET <90462045+AyakorK@users.noreply.github.com> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
* Feature/initialization (#1) * feature: Init repository * chore: add git ignore * chore: Upgrade .gitignore * chore: Remove all ignored files * chore: Removed all files that are in the .gitignore --------- Co-authored-by: Thomas Lamiable <lamiablethomas@gmail.com> * docs: Update README.md * Feature/global map (#3) * feature: Add Timelap and player * fix: fix error with tilemap * feat: First version of Player Movements * feat: First version of animation of the player movements * fix: Update Player prefab to add the animator * feat: Add collisions + modify player prefab * chore: Remove useless folder Art * feature: Add socket connection and linking it to the back-end * fix(player_movement): Fix call between backend and game * feature: Ajout de nombreux assets, modifications de la taille, découpage assets * fix: Global Fixes about the blurring of the components imported * feat: Add first rooms * fix: Fix animations and player asset * feat: Create Third room * fix: Reduce player's hitbox * feature: Ajouts des systèmes de pièges, connections et manager des pièges, animations de la crossbow, ajouts des sprites de l'arrow et de ces effets puis damages, changements tags du joueurs et des walls, changement et ajouts des systèmes de vie du joueurs, changements première phase de l'ui et création de celui-ci * fix: compression des images retirer * revert: Revert changes on the ground.png.meta * revert: Revert changes made on the furnitures * fix: Fix position of map 1 and player collision * fix: Fix rooms placement * fix: Fix arrow physics * feature: Add doors and animations * feature: add door system end remove multiple commentary --------- Co-authored-by: AyakorK <guillaume.moret@yahoo.com> Co-authored-by: Loule | Louis <35641311+Loule95450@users.noreply.github.com> * Feature/addition of corridors (#4) * feature: Add Timelap and player * fix: fix error with tilemap * feat: First version of Player Movements * feat: First version of animation of the player movements * fix: Update Player prefab to add the animator * feat: Add collisions + modify player prefab * chore: Remove useless folder Art * feature: Add socket connection and linking it to the back-end * fix(player_movement): Fix call between backend and game * feature: Ajout de nombreux assets, modifications de la taille, découpage assets * fix: Global Fixes about the blurring of the components imported * feat: Add first rooms * fix: Fix animations and player asset * feat: Create Third room * fix: Reduce player's hitbox * feature: Ajouts des systèmes de pièges, connections et manager des pièges, animations de la crossbow, ajouts des sprites de l'arrow et de ces effets puis damages, changements tags du joueurs et des walls, changement et ajouts des systèmes de vie du joueurs, changements première phase de l'ui et création de celui-ci * fix: compression des images retirer * revert: Revert changes on the ground.png.meta * revert: Revert changes made on the furnitures * fix: Fix position of map 1 and player collision * fix: Fix rooms placement * fix: Fix arrow physics * feature: Add doors and animations * feat: Addition of corridors * feature: add door system end remove multiple commentary --------- Co-authored-by: AyakorK <guillaume.moret@yahoo.com> Co-authored-by: Loule | Louis <35641311+Loule95450@users.noreply.github.com> * feature: First try to add level move in Unity * feat: fix Arrow, upgrade door system * feat: Fix multiple problem * fix: fix door teleport with disable player public selected * feat: Add Menu system, update styling * feat: Add Dialog system, add multiple coroutine for enable or disable dialog box * feat: Level move (#7) * feature: First try to add level move in Unity * feat: fix Arrow, upgrade door system * feat: Fix multiple problem * fix: fix door teleport with disable player public selected * feat: Addition of traps using sockets (#6) * feat: Add auto implementation from website of traps * chore: Add environment variables to UnityProject (#5) * fix: Remove useless Log that was crashed * fix(level_move): Replace hard-coded values with variables for better flexibility Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --------- Co-authored-by: Thomas Lamiable <lamiablethomas@gmail.com> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * feat: Add and fix prefab, add DevRoom prefab * fix: fix door * feat: Add Socket to props to send them to back-end (#8) * feature: First try to add level move in Unity * feat: fix Arrow, upgrade door system * feat: Fix multiple problem * fix: fix door teleport with disable player public selected * feat: Addition of traps using sockets (#6) * feat: Add auto implementation from website of traps * chore: Add environment variables to UnityProject (#5) * fix: Remove useless Log that was crashed * feat: Add link to props using sockets * feat: Add a unique socket system manager --------- Co-authored-by: Thomas Lamiable <lamiablethomas@gmail.com> * hotfix: Delete code duplication * Feature/menu (#11) * merge: Merge menu and develop and fix little issues (#10) * merge: Merge develop to menu (#9) * feat: Level move (#7) * feature: First try to add level move in Unity * feat: fix Arrow, upgrade door system * feat: Fix multiple problem * fix: fix door teleport with disable player public selected * feat: Addition of traps using sockets (#6) * feat: Add auto implementation from website of traps * chore: Add environment variables to UnityProject (#5) * fix: Remove useless Log that was crashed * fix(level_move): Replace hard-coded values with variables for better flexibility Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --------- Co-authored-by: Thomas Lamiable <lamiablethomas@gmail.com> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * feat: Add Socket to props to send them to back-end (#8) * feature: First try to add level move in Unity * feat: fix Arrow, upgrade door system * feat: Fix multiple problem * fix: fix door teleport with disable player public selected * feat: Addition of traps using sockets (#6) * feat: Add auto implementation from website of traps * chore: Add environment variables to UnityProject (#5) * fix: Remove useless Log that was crashed * feat: Add link to props using sockets * feat: Add a unique socket system manager --------- Co-authored-by: Thomas Lamiable <lamiablethomas@gmail.com> --------- Co-authored-by: Thomas Lamiable <lamiablethomas@gmail.com> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * fix: Remove duplication of code * fix: Fix Idle animation --------- Co-authored-by: Thomas Lamiable <lamiablethomas@gmail.com> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * revert: Revert changes from EmptyRoom that breaked doors * feat:Some menu option had * feat: Add pause system, return to menu and restart game, fix OnLoadScene in unity for hard reset player state * chore: remove commentary for trap manager --------- Co-authored-by: Guillaume MORET <90462045+AyakorK@users.noreply.github.com> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> Co-authored-by: AyakorK <guillaume.moret@yahoo.com> * fix: remove duplicata room * feat: Add a visual timer prefab (V.1.0) (#12) Co-authored-by: AyakorK <guillaume.moret@yahoo.com> * feat: Add dynamic environment interaction system and new events (#13) - Implement player interaction system with the environment - Add dynamic room system: - Events now added based on room number and corridor-specific stages - Dynamic event generation based on the current floor - New events added: - "Blacksmith" - "Altar" event allowing players to take one item - Introduced IsCorridor detection system for dynamic instantiation and removal of corridor events - Enhance item saving system to persist data across rooms, including inventory, dialogues, and more - Implement full inventory system - Add multiple UI elements, animations, and canvas for visual feedback * fix: add removed line * feat: Add waiting screen and fix some behaviors (#14) * merge: Merge menu and develop and fix little issues (#10) * merge: Merge develop to menu (#9) * feat: Level move (#7) * feature: First try to add level move in Unity * feat: fix Arrow, upgrade door system * feat: Fix multiple problem * fix: fix door teleport with disable player public selected * feat: Addition of traps using sockets (#6) * feat: Add auto implementation from website of traps * chore: Add environment variables to UnityProject (#5) * fix: Remove useless Log that was crashed * fix(level_move): Replace hard-coded values with variables for better flexibility Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --------- Co-authored-by: Thomas Lamiable <lamiablethomas@gmail.com> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * feat: Add Socket to props to send them to back-end (#8) * feature: First try to add level move in Unity * feat: fix Arrow, upgrade door system * feat: Fix multiple problem * fix: fix door teleport with disable player public selected * feat: Addition of traps using sockets (#6) * feat: Add auto implementation from website of traps * chore: Add environment variables to UnityProject (#5) * fix: Remove useless Log that was crashed * feat: Add link to props using sockets * feat: Add a unique socket system manager --------- Co-authored-by: Thomas Lamiable <lamiablethomas@gmail.com> --------- Co-authored-by: Thomas Lamiable <lamiablethomas@gmail.com> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * fix: Remove duplication of code * fix: Fix Idle animation --------- Co-authored-by: Thomas Lamiable <lamiablethomas@gmail.com> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * revert: Revert changes from EmptyRoom that breaked doors * feat: V1.0 of WaitingScreen * fix: Fix the way of sending props and remove the SocketManager from the player * fix: Remove the Socket when leaving to the menu * feat: Add the SocketManager to the Menu * fix: Fix player animation and options text --------- Co-authored-by: Thomas Lamiable <lamiablethomas@gmail.com> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * feat: Add trap persistance through rooms (#15) * feat: Camera Control & Room enlargement (#16) * feat: Try to update the camera of the user (a bit of a disaster by now) * fix: Add good tracker Y limit for camera move, synch HUD with camera move * fix: Fix the camera adapting to the scene * feat: Get the room bigger --------- Co-authored-by: Thomlam <lamiablethomas@gmail.com> * feat: Modify the new room (#17) * fix: Add a missing pillar * fix: Crossbow positions (#18) * fix: Fix the placement of the crossbows * feat: Add hitboxes to crossbows * fix: Remove useless traps spawns * fix: Reorder correctly the crossbow prefabs * Feature/add traps (#19) * feature: Update some animations and system for the player, and add new trap * feat: update EmptyRoom2 for test --------- Co-authored-by: Guillaume MORET <90462045+AyakorK@users.noreply.github.com> * fix: Trap management & improvements (#21) * fix: Enlarge the gridSizeY to match the room and modify the level of the floor to fix traps * feat: Improve doors and room and traps * feat: Add walls on first room * feat: Add bear_trap to trap manager * hotfix: Remove bear_trap from the EmptyRoom --------- Co-authored-by: Loule | Louis <35641311+Loule95450@users.noreply.github.com> Co-authored-by: Thomas Lamiable <lamiablethomas@gmail.com> Co-authored-by: Thomas Lamiable <86667484+Thomlam@users.noreply.github.com> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Summary by CodeRabbit
Nouvelles Fonctionnalités
Blacksmithet l'Altardans le système de salle.Prefabpour l'Altar, permettant des interactions avec les joueurs.Prefabpour leForgeron, enrichissant les interactions possibles dans le jeu.Améliorations
Corrections de Bugs