Add skill management system: implement Skill and PetSkill models, create SkillController, and update ApplicationDbContext for skills
This commit is contained in:
@@ -12,6 +12,9 @@ namespace PetCompanion.Data
|
||||
public DbSet<Pet> Pets { get; set; }
|
||||
public DbSet<PetStats> PetStats { get; set; }
|
||||
public DbSet<Resources> Resources { get; set; }
|
||||
public DbSet<Skill> Skills { get; set; }
|
||||
public DbSet<SkillEffect> SkillEffects { get; set; }
|
||||
public DbSet<PetSkill> PetSkills { get; set; }
|
||||
|
||||
protected override void OnModelCreating(ModelBuilder modelBuilder)
|
||||
{
|
||||
@@ -29,6 +32,32 @@ namespace PetCompanion.Data
|
||||
.HasConversion(
|
||||
v => v != DateTime.MinValue ? v.ToUniversalTime() : v,
|
||||
v => v != DateTime.MinValue ? DateTime.SpecifyKind(v, DateTimeKind.Utc) : v);
|
||||
|
||||
modelBuilder.Entity<PetSkill>()
|
||||
.HasOne(ps => ps.Pet)
|
||||
.WithMany(p => p.Skills)
|
||||
.HasForeignKey(ps => ps.PetId);
|
||||
|
||||
modelBuilder.Entity<PetSkill>()
|
||||
.HasOne(ps => ps.Skill)
|
||||
.WithMany(s => s.PetSkills)
|
||||
.HasForeignKey(ps => ps.SkillId);
|
||||
|
||||
modelBuilder.Entity<SkillEffect>()
|
||||
.HasOne(se => se.Skill)
|
||||
.WithMany(s => s.Effects)
|
||||
.HasForeignKey(se => se.SkillId);
|
||||
|
||||
// Seed initial skills
|
||||
var skills = SkillsData.GetInitialSkills();
|
||||
foreach (var skill in skills)
|
||||
{
|
||||
modelBuilder.Entity<Skill>().HasData(skill);
|
||||
foreach (var effect in skill.Effects)
|
||||
{
|
||||
modelBuilder.Entity<SkillEffect>().HasData(effect);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
273
Data/SkillsData.cs
Normal file
273
Data/SkillsData.cs
Normal file
@@ -0,0 +1,273 @@
|
||||
using PetCompanion.Models;
|
||||
|
||||
namespace PetCompanion.Data
|
||||
{
|
||||
public static class SkillsData
|
||||
{
|
||||
public static IEnumerable<Skill> GetInitialSkills()
|
||||
{
|
||||
return new List<Skill>
|
||||
{
|
||||
new Skill
|
||||
{
|
||||
Id = 1,
|
||||
Name = "Vitality Mastery",
|
||||
Description = "Increases maximum health of your pet, making it more resilient.",
|
||||
Type = SkillType.GROUND,
|
||||
PointsCost = 1,
|
||||
Icon = "❤",
|
||||
SkillsIdRequired = null,
|
||||
Effects = new List<SkillEffect>
|
||||
{
|
||||
new SkillEffect
|
||||
{
|
||||
Id = 1,
|
||||
SkillId = 1,
|
||||
Tier = SkillTier.I,
|
||||
Effect = "MaxHealth",
|
||||
Value = 25
|
||||
},
|
||||
new SkillEffect
|
||||
{
|
||||
Id = 2,
|
||||
SkillId = 1,
|
||||
Tier = SkillTier.II,
|
||||
Effect = "MaxHealth",
|
||||
Value = 50
|
||||
},
|
||||
new SkillEffect
|
||||
{
|
||||
Id = 3,
|
||||
SkillId = 1,
|
||||
Tier = SkillTier.III,
|
||||
Effect = "MaxHealth",
|
||||
Value = 100
|
||||
}
|
||||
}
|
||||
},
|
||||
new Skill
|
||||
{
|
||||
Id = 2,
|
||||
Name = "Mind Enhancement",
|
||||
Description = "Increases maximum intelligence of your pet, improving its learning capabilities.",
|
||||
Type = SkillType.GROUND,
|
||||
PointsCost = 1,
|
||||
Icon = "🧠",
|
||||
SkillsIdRequired = null,
|
||||
Effects = new List<SkillEffect>
|
||||
{
|
||||
new SkillEffect
|
||||
{
|
||||
Id = 4,
|
||||
SkillId = 2,
|
||||
Tier = SkillTier.I,
|
||||
Effect = "MaxIntelligence",
|
||||
Value = 5
|
||||
},
|
||||
new SkillEffect
|
||||
{
|
||||
Id = 5,
|
||||
SkillId = 2,
|
||||
Tier = SkillTier.II,
|
||||
Effect = "MaxIntelligence",
|
||||
Value = 10
|
||||
},
|
||||
new SkillEffect
|
||||
{
|
||||
Id = 6,
|
||||
SkillId = 2,
|
||||
Tier = SkillTier.III,
|
||||
Effect = "MaxIntelligence",
|
||||
Value = 20
|
||||
}
|
||||
}
|
||||
},
|
||||
new Skill
|
||||
{
|
||||
Id = 3,
|
||||
Name = "Strength Training",
|
||||
Description = "Increases maximum strength of your pet, making it more powerful.",
|
||||
Type = SkillType.GROUND,
|
||||
PointsCost = 1,
|
||||
Icon = "💪",
|
||||
SkillsIdRequired = null,
|
||||
Effects = new List<SkillEffect>
|
||||
{
|
||||
new SkillEffect
|
||||
{
|
||||
Id = 7,
|
||||
SkillId = 3,
|
||||
Tier = SkillTier.I,
|
||||
Effect = "MaxStrength",
|
||||
Value = 5
|
||||
},
|
||||
new SkillEffect
|
||||
{
|
||||
Id = 8,
|
||||
SkillId = 3,
|
||||
Tier = SkillTier.II,
|
||||
Effect = "MaxStrength",
|
||||
Value = 10
|
||||
},
|
||||
new SkillEffect
|
||||
{
|
||||
Id = 9,
|
||||
SkillId = 3,
|
||||
Tier = SkillTier.III,
|
||||
Effect = "MaxStrength",
|
||||
Value = 20
|
||||
}
|
||||
}
|
||||
},
|
||||
new Skill
|
||||
{
|
||||
Id = 4,
|
||||
Name = "Charisma Boost",
|
||||
Description = "Increases maximum charisma of your pet, making it more charming.",
|
||||
Type = SkillType.GROUND,
|
||||
PointsCost = 1,
|
||||
Icon = "🎭",
|
||||
SkillsIdRequired = null,
|
||||
Effects = new List<SkillEffect>
|
||||
{
|
||||
new SkillEffect
|
||||
{
|
||||
Id = 10,
|
||||
SkillId = 4,
|
||||
Tier = SkillTier.I,
|
||||
Effect = "MaxCharisma",
|
||||
Value = 5
|
||||
},
|
||||
new SkillEffect
|
||||
{
|
||||
Id = 11,
|
||||
SkillId = 4,
|
||||
Tier = SkillTier.II,
|
||||
Effect = "MaxCharisma",
|
||||
Value = 10
|
||||
},
|
||||
new SkillEffect
|
||||
{
|
||||
Id = 12,
|
||||
SkillId = 4,
|
||||
Tier = SkillTier.III,
|
||||
Effect = "MaxCharisma",
|
||||
Value = 20
|
||||
}
|
||||
}
|
||||
},
|
||||
new Skill
|
||||
{
|
||||
Id = 5,
|
||||
Name = "Luck of the Draw",
|
||||
Description = "Increases luck of your pet, making it more fortunate to find rare items.",
|
||||
Type = SkillType.GROUND,
|
||||
PointsCost = 1,
|
||||
Icon = "🍀",
|
||||
SkillsIdRequired = new List<int> { 4 },
|
||||
Effects = new List<SkillEffect>
|
||||
{
|
||||
new SkillEffect
|
||||
{
|
||||
Id = 13,
|
||||
SkillId = 5,
|
||||
Tier = SkillTier.I,
|
||||
Effect = "Luck",
|
||||
Value = 1
|
||||
},
|
||||
new SkillEffect
|
||||
{
|
||||
Id = 14,
|
||||
SkillId = 5,
|
||||
Tier = SkillTier.II,
|
||||
Effect = "Luck",
|
||||
Value = 2
|
||||
},
|
||||
new SkillEffect
|
||||
{
|
||||
Id = 15,
|
||||
SkillId = 5,
|
||||
Tier = SkillTier.III,
|
||||
Effect = "Luck",
|
||||
Value = 3
|
||||
}
|
||||
}
|
||||
},
|
||||
new Skill
|
||||
{
|
||||
Id = 6,
|
||||
Name = "Agility Training",
|
||||
Description = "Increases agility of your pet, making it faster in combat.",
|
||||
Type = SkillType.GROUND,
|
||||
PointsCost = 1,
|
||||
Icon = "🏃",
|
||||
SkillsIdRequired = new List<int> { 3 },
|
||||
Effects = new List<SkillEffect>
|
||||
{
|
||||
new SkillEffect
|
||||
{
|
||||
Id = 16,
|
||||
SkillId = 6,
|
||||
Tier = SkillTier.I,
|
||||
Effect = "Agility",
|
||||
Value = 1
|
||||
},
|
||||
new SkillEffect
|
||||
{
|
||||
Id = 17,
|
||||
SkillId = 6,
|
||||
Tier = SkillTier.II,
|
||||
Effect = "Agility",
|
||||
Value = 2
|
||||
},
|
||||
new SkillEffect
|
||||
{
|
||||
Id = 18,
|
||||
SkillId = 6,
|
||||
Tier = SkillTier.III,
|
||||
Effect = "Agility",
|
||||
Value = 3
|
||||
}
|
||||
}
|
||||
},
|
||||
new Skill
|
||||
{
|
||||
Id = 7,
|
||||
Name = "Perception Boost",
|
||||
Description = "Increases perception of your pet, making it more aware of its surroundings.",
|
||||
Type = SkillType.GROUND,
|
||||
PointsCost = 1,
|
||||
Icon = "👀",
|
||||
SkillsIdRequired = new List<int> { 2 },
|
||||
Effects = new List<SkillEffect>
|
||||
{
|
||||
new SkillEffect
|
||||
{
|
||||
Id = 19,
|
||||
SkillId = 7,
|
||||
Tier = SkillTier.I,
|
||||
Effect = "Perception",
|
||||
Value = 1
|
||||
},
|
||||
new SkillEffect
|
||||
{
|
||||
Id = 20,
|
||||
SkillId = 7,
|
||||
Tier = SkillTier.II,
|
||||
Effect = "Perception",
|
||||
Value = 2
|
||||
},
|
||||
new SkillEffect
|
||||
{
|
||||
Id = 21,
|
||||
SkillId = 7,
|
||||
Tier = SkillTier.III,
|
||||
Effect = "Perception",
|
||||
Value = 3
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user