Weapons Code Logic - UQdeco2800/2022-studio-2 GitHub Wiki
Back to Combat Items Contents Page
Defining the weapons
The type and stats of weapons in the game are defined in .json config files under \source\core\assets\configs
The parameters in the config files will be "parsed" into their weapon type config classes under source/core/src/main/com/deco2800/game/entities/configs/CombatItemsConfig. Image below shows the config class for Melee weapons.
The general weapon config class initialises specialised config classes for the weapons that will be defined in game.
Creating the weapons into the game
The type and stats of weapons in the config files can be sent into the WeaponFactory class under source\core\src\main\com\deco2800\game\entities\factories\WeaponFactory.java and read by the FileLoader.readClass() method as shown below
The types of weapons in the config files can be created with the different create() methods for each weapon type in the WeaponFactory class. The different weapon types weapon creator methods will call the base weapon creator method to create a base weapon entity, and have different component add-ons onto the Weapon Entity.
Weapon Stats Component
In this context, the most important component is WeaponStatsComponent in source/core/src/main/com/deco2800/game/components/CombatItemsComponents, which is an abstract class that is extended by the StatComponent classes for different weapon types (eg: Melee, Ranged, AreaOfEffect).
Every weapon has at least three stats:
damage
- The damage of the weaponcoolDown
- The duration in milliseconds before the next attack instance can be calledmaterials
- The materials required to craft the weapon These variables have protected status, so that every sub-weapon can inherit them.
The StatComponent classes have getter and setter methods used to get and define the stats of the weapons based on the config .json files as stated above.
The image below shows the constructor for the base WeaponStatsComponent constructor and a getter method.
Some extra getter and setter methods will be added to more specific StatComponents. Eg: setDuration() and getDuration() methods in AreaOfEffectStatsComponent
Aura Applier
In all of the StatComponentMethods, there is an auraEffect() that takes in an aura entity that acts as a buff, debuff or a curse to be applied to the weapon's stats. The method will have a timer that will revert the aura after a certain duration as specified by the aura applied.
UML Diagram
Back to Combat Items Contents Page
Author
- Eugene Chong
- GitHub: @eugene2341
- Discord: gene#0729
- Slack: Eugene Chong