MVP of the plane throwing game (#77)
Co-authored-by: Michal Pikulski <michal@foolhardyhorizons.com> Co-authored-by: Michal Pikulski <michal.a.pikulski@gmail.com> Reviewed-on: #77
This commit is contained in:
@@ -0,0 +1,69 @@
|
||||
using AppleHills.Core.Settings;
|
||||
using Core;
|
||||
using Minigames.Airplane.Data;
|
||||
|
||||
namespace Minigames.Airplane.Abilities
|
||||
{
|
||||
/// <summary>
|
||||
/// Factory for creating airplane abilities from settings configuration.
|
||||
/// </summary>
|
||||
public static class AbilityFactory
|
||||
{
|
||||
/// <summary>
|
||||
/// Create an ability instance based on type and settings.
|
||||
/// </summary>
|
||||
public static BaseAirplaneAbility CreateAbility(AirplaneAbilityType type, IAirplaneSettings settings)
|
||||
{
|
||||
if (settings == null)
|
||||
{
|
||||
Logging.Error("[AbilityFactory] Settings is null!");
|
||||
return null;
|
||||
}
|
||||
|
||||
return type switch
|
||||
{
|
||||
AirplaneAbilityType.Jet => CreateJetAbility(settings),
|
||||
AirplaneAbilityType.Bobbing => CreateBobbingAbility(settings),
|
||||
AirplaneAbilityType.Drop => CreateDropAbility(settings),
|
||||
_ => null
|
||||
};
|
||||
}
|
||||
|
||||
private static JetAbility CreateJetAbility(IAirplaneSettings settings)
|
||||
{
|
||||
var config = settings.JetAbilityConfig;
|
||||
return new JetAbility(
|
||||
config.abilityName,
|
||||
config.abilityIcon,
|
||||
config.cooldownDuration,
|
||||
config.jetSpeed,
|
||||
config.jetAngle
|
||||
);
|
||||
}
|
||||
|
||||
private static BobbingAbility CreateBobbingAbility(IAirplaneSettings settings)
|
||||
{
|
||||
var config = settings.BobbingAbilityConfig;
|
||||
return new BobbingAbility(
|
||||
config.abilityName,
|
||||
config.abilityIcon,
|
||||
config.cooldownDuration,
|
||||
config.bobForce
|
||||
);
|
||||
}
|
||||
|
||||
private static DropAbility CreateDropAbility(IAirplaneSettings settings)
|
||||
{
|
||||
var config = settings.DropAbilityConfig;
|
||||
return new DropAbility(
|
||||
config.abilityName,
|
||||
config.abilityIcon,
|
||||
config.cooldownDuration,
|
||||
config.dropForce,
|
||||
config.dropDistance,
|
||||
config.zeroHorizontalVelocity
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user