mirror of
https://github.com/MikuLeaks/MikuSB.git
synced 2026-06-04 06:43:57 +00:00
add lineup manager
This commit is contained in:
29
GameServer/Game/Lineup/LineupManager.cs
Normal file
29
GameServer/Game/Lineup/LineupManager.cs
Normal file
@@ -0,0 +1,29 @@
|
||||
using MikuSB.Database;
|
||||
using MikuSB.GameServer.Game.Player;
|
||||
using MikuSB.Database.Lineup;
|
||||
|
||||
namespace MikuSB.GameServer.Game.Lineup;
|
||||
|
||||
public class LineupManager(PlayerInstance player) : BasePlayerManager(player)
|
||||
{
|
||||
public LineupData LineupData { get; } = DatabaseHelper.GetInstanceOrCreateNew<LineupData>(player.Uid);
|
||||
|
||||
public async ValueTask<LineupDataInfo?> UpdateLineup(int lineupId, uint member1, uint member2, uint member3)
|
||||
{
|
||||
if (!LineupData.LineupInfo.TryGetValue(lineupId, out var formation))
|
||||
{
|
||||
formation = new LineupDataInfo
|
||||
{
|
||||
Index = (uint)lineupId,
|
||||
Name = lineupId.ToString()
|
||||
};
|
||||
|
||||
LineupData.LineupInfo[lineupId] = formation;
|
||||
}
|
||||
|
||||
formation.Member1 = member1;
|
||||
formation.Member2 = member2;
|
||||
formation.Member3 = member3;
|
||||
return formation;
|
||||
}
|
||||
}
|
||||
@@ -6,7 +6,7 @@ using MikuSB.Enums.Item;
|
||||
using MikuSB.GameServer.Game.Character;
|
||||
using MikuSB.GameServer.Game.Inventory;
|
||||
using MikuSB.GameServer.Server;
|
||||
using MikuSB.Proto;
|
||||
using MikuSB.GameServer.Game.Lineup;
|
||||
using MikuSB.TcpSharp;
|
||||
using MikuSB.Util.Extensions;
|
||||
|
||||
@@ -29,6 +29,7 @@ public class PlayerInstance(PlayerGameData data)
|
||||
public PlayerGameData Data { get; set; } = data;
|
||||
public CharacterManager CharacterManager { get; set; } = null!;
|
||||
public InventoryManager InventoryManager { get; set; } = null!;
|
||||
public LineupManager LineupManager { get; set; } = null!;
|
||||
|
||||
#endregion
|
||||
|
||||
@@ -65,6 +66,14 @@ public class PlayerInstance(PlayerGameData data)
|
||||
await CharacterManager.AddCharacter((ItemTypeEnum)card.Genre, card.Detail, card.Particular, card.Level);
|
||||
}
|
||||
|
||||
var selected = CharacterManager.CharacterData.Characters
|
||||
.OrderBy(_ => Guid.NewGuid())
|
||||
.Take(3)
|
||||
.Select(x => x.Guid)
|
||||
.ToList();
|
||||
|
||||
await LineupManager.UpdateLineup(1, selected[0], selected[1], selected[2]);
|
||||
|
||||
var bootstrapAttrs = BuildLobbyBootstrapAttrs();
|
||||
var existingAttrs = Data.Attrs
|
||||
.ToDictionary(x => (x.Gid, x.Sid));
|
||||
@@ -103,6 +112,7 @@ public class PlayerInstance(PlayerGameData data)
|
||||
Uid = Data.Uid;
|
||||
Data.LastActiveTime = Extensions.GetUnixSec();
|
||||
InventoryManager = new InventoryManager(this);
|
||||
LineupManager = new LineupManager(this);
|
||||
CharacterManager = new CharacterManager(this);
|
||||
|
||||
await Task.CompletedTask;
|
||||
@@ -162,18 +172,8 @@ public class PlayerInstance(PlayerGameData data)
|
||||
Name = Data.Name,
|
||||
Level = Data.Level,
|
||||
Sex = Data.Gender,
|
||||
Vigor = 240,
|
||||
Solutions =
|
||||
{
|
||||
new Lineup // TODO Lineup Manager
|
||||
{
|
||||
Index = 1,
|
||||
Name = "Default",
|
||||
Member1 = 1,
|
||||
Member2 = 2,
|
||||
Member3 = 3
|
||||
}
|
||||
},
|
||||
Vigor = Data.Vigor,
|
||||
Solutions = { LineupManager.LineupData.LineupInfo.Values.Select(x => x.ToProto()) },
|
||||
};
|
||||
|
||||
foreach (var item in InventoryManager.InventoryData.Items.Values) proto.Items.Add(item.ToProto());
|
||||
|
||||
Reference in New Issue
Block a user