- Home /
Handling different combinations of enum selection
Hi! I'm trying to build a system where the player can configure the bullet used by its gun in a highly customizable way.
I would like to have options for:
The status effect applied by the bullet (none, burning, freezing, poisoning)
The way it handles collisions (pierce targets, explodes, bounces)
Trajectory modifiers (none, follow mouse position, autro track enemies)
I've done this using enums (I have one enum for each one of these categories), but I will have to configure some attributes according to what is selected. Example:
For an explosive round, I will have to configure the radius of the explosion and its damage
For a burning round, I will have to determine the duration of the DoT effect and its damage
... and so on
I was wondering what is the most effective way of handling this in a OOP approach. I don't expect you guys to do all the work for me, but if you could guide my through the best approach (e.g. "create a class"/"use scriptable objects"/other) it would be really helpful.
Thanks!
Answer by garycampbell3690 · Feb 06 at 02:54 AM
If you select an effect type from the UI, a switch could then show the relevant attribute to input:
switch(bulletEffect)
...
case(BulletEffect.Burning):
doTInput.SetActive = true;
...
allowing you to input and update the doT value
when complete you can then do a call to create a new bullet object with the values you need.
var customBullet = new Bullet(dot, radius, damage...)
...
class Bullet{
public int dot;
public int radius;
public int damage;
...
Bullet (doT, radius...damage){
this.doT = doT;
this.radius = radius;
this.damage = damage;
... } }
giving you a customBullet object should then be able to use for further logic...
OnBulletHit(Bullet customBullet){
if(customBullet.doT >0){
...do fire effect etc.
}
if(customBullet.radius>0){
...do explosion effect.
}
}
Sorry if this isn't too helpful in terms of implementation it's just what I could think of at the moment. I'm sure someone else could figure a more robust solution that simply checking the bullet object for what values it has out of all of them...
Your answer
Follow this Question
Related Questions
An OS design issue: File types associated with their appropriate programs 1 Answer
Enum with multiple fields 1 Answer
Enum with multiple fields 2 Answers
FPS weapons class structure 1 Answer