feat: All models added to game service

This commit is contained in:
2025-09-29 16:51:50 +03:00
parent 56c874e220
commit 0342562187
8 changed files with 150 additions and 1 deletions

View File

@@ -20,6 +20,9 @@ public class ApplicationContext : DbContext
public required DbSet<RankSkillRule> RankSkillRules { get; set; } public required DbSet<RankSkillRule> RankSkillRules { get; set; }
public required DbSet<PlayerSkill> PlayerSkills { get; set; } public required DbSet<PlayerSkill> PlayerSkills { get; set; }
public required DbSet<PlayerMission> PlayerMissions { get; set; } public required DbSet<PlayerMission> PlayerMissions { get; set; }
public required DbSet<Dialogue> Dialogues { get; set; }
public required DbSet<DialogueMessage> DialogueMessages { get; set; }
public required DbSet<DialogueMessageResponseOption> DialogueMessageResponseOptions { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder) protected override void OnModelCreating(ModelBuilder modelBuilder)
{ {
@@ -63,6 +66,12 @@ public class ApplicationContext : DbContext
.WithMany(m => m.ChildMissions) .WithMany(m => m.ChildMissions)
.HasForeignKey(m => m.ParentMissionId) .HasForeignKey(m => m.ParentMissionId)
.IsRequired(false); .IsRequired(false);
// Dialogue relationship for Mission
modelBuilder.Entity<Mission>()
.HasOne(m => m.Dialogue)
.WithOne(d => d.Mission)
.HasForeignKey<Mission>(m => m.DialogueId)
.IsRequired(false);
// MissionRankRule configurations // MissionRankRule configurations
modelBuilder.Entity<MissionRankRule>() modelBuilder.Entity<MissionRankRule>()
@@ -129,5 +138,45 @@ public class ApplicationContext : DbContext
.HasOne(pm => pm.Mission) .HasOne(pm => pm.Mission)
.WithMany(m => m.PlayerMissions) .WithMany(m => m.PlayerMissions)
.HasForeignKey(pm => pm.MissionId); .HasForeignKey(pm => pm.MissionId);
// Dialogue configurations
modelBuilder.Entity<Dialogue>()
.HasOne(d => d.Mission)
.WithOne(m => m.Dialogue)
.HasForeignKey<Dialogue>(d => d.MissionId)
.IsRequired();
// DialogueMessage configurations
modelBuilder.Entity<DialogueMessage>()
.HasOne(dm => dm.InitialDialogue)
.WithMany()
.HasForeignKey(dm => dm.InitialDialogueId)
.IsRequired(false)
.OnDelete(DeleteBehavior.Restrict);
modelBuilder.Entity<DialogueMessage>()
.HasOne(dm => dm.InterimDialogue)
.WithMany()
.HasForeignKey(dm => dm.InterimDialogueId)
.IsRequired(false)
.OnDelete(DeleteBehavior.Restrict);
modelBuilder.Entity<DialogueMessage>()
.HasOne(dm => dm.EndDialogue)
.WithMany()
.HasForeignKey(dm => dm.EndDialogueId)
.IsRequired(false)
.OnDelete(DeleteBehavior.Restrict);
// DialogueMessageResponseOption configurations
modelBuilder.Entity<DialogueMessageResponseOption>()
.HasOne(dmro => dmro.ParentDialogueMessage)
.WithMany(dm => dm.DialogueMessageResponseOptions)
.HasForeignKey(dmro => dmro.ParentDialogueMessageId)
.IsRequired();
modelBuilder.Entity<DialogueMessageResponseOption>()
.HasOne(dmro => dmro.DestinationDialogueMessage)
.WithMany()
.HasForeignKey(dmro => dmro.DestinationDialogueMessageId)
.IsRequired(false)
.OnDelete(DeleteBehavior.Restrict);
} }
} }

View File

@@ -0,0 +1,16 @@
namespace GamificationService.Models.Database;
public class Dialogue
{
public Guid Id { get; set; }
public Guid MissionId { get; set; }
public required Mission Mission { get; set; }
public Guid InitialDialogueMessageId { get; set; }
public Dialogue? InitialDialogueMessage { get; set; }
public Guid InterimDialogueMessageId { get; set; }
public Dialogue? InterimDialogueMessage { get; set; }
public Guid EndDialogueMessageId { get; set; }
public Dialogue? EndDialogueMessage { get; set; }
}

View File

@@ -0,0 +1,27 @@
using GamificationService.Models.Enums;
namespace GamificationService.Models.Database;
public class DialogueMessage
{
public Guid Id { get; set; }
public Character CharacterLeft { get; set; } = Character.None;
public Character CharacterRight { get; set; } = Character.None;
public CharacterAnimation CharacterLeftAnim { get; set; } = CharacterAnimation.Neutral;
public CharacterAnimation CharacterRightAnim { get; set; } = CharacterAnimation.Neutral;
public string CharacterLeftMessage { get; set; } = string.Empty;
public string CharacterRightMessage { get; set; } = string.Empty;
public MessageStyle CharacterLeftMessageStyle { get; set; } = MessageStyle.Normal;
public MessageStyle CharacterRightMessageStyle { get; set; } = MessageStyle.Normal;
public bool AllowMessageAi { get; set; }
public string MessageAiButtonText { get; set; } = string.Empty;
public Guid InitialDialogueId { get; set; }
public Dialogue? InitialDialogue { get; set; }
public Guid InterimDialogueId { get; set; }
public Dialogue? InterimDialogue { get; set; }
public Guid EndDialogueId { get; set; }
public Dialogue? EndDialogue { get; set; }
public ICollection<DialogueMessageResponseOption> DialogueMessageResponseOptions = new List<DialogueMessageResponseOption>();
}

View File

@@ -0,0 +1,16 @@
using GamificationService.Models.Enums;
namespace GamificationService.Models.Database;
public class DialogueMessageResponseOption
{
public Guid Id { get; set; }
public string Message { get; set; } = "...";
public MessageStyle MessageStyle { get; set; } = MessageStyle.Normal;
public int z { get; set; }
public Guid ParentDialogueMessageId { get; set; }
public required DialogueMessage ParentDialogueMessage { get; set; }
public Guid DestinationDialogueMessageId { get; set; }
public DialogueMessage? DestinationDialogueMessage { get; set; }
}

View File

@@ -11,7 +11,10 @@ public class Mission
public long ParentMissionId { get; set; } public long ParentMissionId { get; set; }
public int ExpReward { get; set; } public int ExpReward { get; set; }
public int ManaReward { get; set; } public int ManaReward { get; set; }
public Guid DialogueId { get; set; }
public Dialogue? Dialogue { get; set; }
public ICollection<Mission> ChildMissions { get; set; } = new List<Mission>(); public ICollection<Mission> ChildMissions { get; set; } = new List<Mission>();
public ICollection<PlayerMission> PlayerMissions { get; set; } = new List<PlayerMission>(); public ICollection<PlayerMission> PlayerMissions { get; set; } = new List<PlayerMission>();
public ICollection<MissionItemReward> MissionItemRewards { get; set; } = new List<MissionItemReward>(); public ICollection<MissionItemReward> MissionItemRewards { get; set; } = new List<MissionItemReward>();

11
Models/Enums/Character.cs Normal file
View File

@@ -0,0 +1,11 @@
namespace GamificationService.Models.Enums;
public enum Character
{
None,
Assistant,
Pilot,
Janitor,
Administrator,
Mechanic
}

View File

@@ -0,0 +1,18 @@
namespace GamificationService.Models.Enums;
public enum CharacterAnimation
{
Neutral,
Happy,
Laughter,
Mock,
Sad,
Crying,
Annoyed,
Angry,
Threats,
Wave,
Silhouette,
Scared,
Embarassed
}

View File

@@ -0,0 +1,9 @@
namespace GamificationService.Models.Enums;
public enum MessageStyle
{
Normal,
Loud,
Think,
Action
}