mirror of
https://github.com/rafi1212122/BLHX.Server.git
synced 2025-12-13 06:54:51 +01:00
dummy chapter handling + OpMove PoC
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
using BLHX.Server.Common.Data;
|
||||
using BLHX.Server.Common.Database;
|
||||
using BLHX.Server.Common.Proto;
|
||||
using BLHX.Server.Common.Proto.p13;
|
||||
|
||||
@@ -6,7 +7,7 @@ namespace BLHX.Server.Game.Handlers
|
||||
{
|
||||
internal static class P13
|
||||
{
|
||||
[PacketHandler(Command.Cs13101)]
|
||||
[PacketHandler(Command.Cs13101, SaveDataAfterRun = true)]
|
||||
static void TrackingHandler(Connection connection, Packet packet)
|
||||
{
|
||||
var req = packet.Decode<Cs13101>();
|
||||
@@ -18,17 +19,100 @@ namespace BLHX.Server.Game.Handlers
|
||||
return;
|
||||
}
|
||||
|
||||
// TODO: Populate values, pls make managers
|
||||
connection.player.DoResource(2, chapterTemplate.Oil * -1);
|
||||
|
||||
var cells = chapterTemplate.GridItems.Select(x =>
|
||||
{
|
||||
var cellInfo = new Chaptercellinfo()
|
||||
{
|
||||
Pos = new Chaptercellpos() { Column = x.Column, Row = x.Row }
|
||||
};
|
||||
|
||||
if (x.Flag == ChapterAttachFlag.AttachEnemy)
|
||||
{
|
||||
cellInfo.ItemType = (uint)x.Flag;
|
||||
cellInfo.ItemId = (uint)chapterTemplate.ExpeditionIdWeightList[Random.Shared.Next(chapterTemplate.ExpeditionIdWeightList.Length)][0];
|
||||
}
|
||||
|
||||
if (x.Flag == ChapterAttachFlag.AttachBoss && chapterTemplate.BossRefresh == 0)
|
||||
{
|
||||
cellInfo.ItemType = (uint)x.Flag;
|
||||
cellInfo.ItemId = (uint)chapterTemplate.BossExpeditionId[Random.Shared.Next(chapterTemplate.BossExpeditionId.Length)];
|
||||
}
|
||||
|
||||
return cellInfo;
|
||||
}).ToList();
|
||||
var born = chapterTemplate.GridItems.Find(x => x.Flag == ChapterAttachFlag.AttachBorn);
|
||||
var chapter = new Currentchapterinfo()
|
||||
{
|
||||
Id = req.Id,
|
||||
Time = (uint)new DateTimeOffset(DateTime.Now.AddSeconds(chapterTemplate.Time)).ToUnixTimeSeconds(),
|
||||
CellLists = cells,
|
||||
GroupLists = req.GroupIdLists.Select(x =>
|
||||
{
|
||||
var fleet = connection.player.Fleets.Find(y => y.Id == x);
|
||||
|
||||
return new Groupinchapter()
|
||||
{
|
||||
Id = x,
|
||||
ShipLists = fleet?.ShipLists.Select(x => new Shipinchapter() { Id = x, HpRant = 10000 }).ToList(),
|
||||
Pos = new Chaptercellpos() { Column = born.Column, Row = born.Row },
|
||||
Bullet = 5,
|
||||
StartPos = new(),
|
||||
FleetId = x
|
||||
};
|
||||
}).ToList(),
|
||||
IsSubmarineAutoAttack = 1,
|
||||
InitShipCount = (uint)connection.player.Fleets.Where(x => req.GroupIdLists.Contains(x.Id)).Sum(x => x.ShipLists.Count)
|
||||
};
|
||||
|
||||
if (connection.player.ChapterInfoes.Any(x => x.Id == chapter.Id))
|
||||
{
|
||||
connection.player.ChapterInfoes.Remove(connection.player.ChapterInfoes.First(x => x.Id == chapter.Id));
|
||||
}
|
||||
connection.player.ChapterInfoes.Add(ChapterInfo.FromProto(chapter, connection.player.Uid));
|
||||
connection.player.CurrentChapter = chapter.Id;
|
||||
|
||||
connection.Send(new Sc13102()
|
||||
{
|
||||
CurrentChapter = new()
|
||||
{
|
||||
Id = req.Id,
|
||||
Time = (uint)(DateTimeOffset.Now.ToUnixTimeSeconds() + chapterTemplate.Time)
|
||||
}
|
||||
CurrentChapter = chapter
|
||||
});
|
||||
}
|
||||
|
||||
[PacketHandler(Command.Cs13103)]
|
||||
static void ChapterOPHandler(Connection connection, Packet packet)
|
||||
{
|
||||
var req = packet.Decode<Cs13103>();
|
||||
var rsp = new Sc13104();
|
||||
|
||||
switch ((ChapterOP)req.Act)
|
||||
{
|
||||
case ChapterOP.OpMove:
|
||||
rsp.MovePaths.Add(new() { Row = req.ActArg1, Column = req.ActArg2 });
|
||||
break;
|
||||
case ChapterOP.OpRetreat:
|
||||
case ChapterOP.OpBox:
|
||||
case ChapterOP.OpAmbush:
|
||||
case ChapterOP.OpStrategy:
|
||||
case ChapterOP.OpRepair:
|
||||
case ChapterOP.OpSupply:
|
||||
case ChapterOP.OpEnemyRound:
|
||||
case ChapterOP.OpSubState:
|
||||
case ChapterOP.OpStory:
|
||||
case ChapterOP.OpBarrier:
|
||||
case ChapterOP.OpSubTeleport:
|
||||
case ChapterOP.OpPreClear:
|
||||
case ChapterOP.OpRequest:
|
||||
case ChapterOP.OpSwitch:
|
||||
case ChapterOP.OpSkipBattle:
|
||||
rsp.Result = 1;
|
||||
connection.Send(rsp);
|
||||
throw new NotImplementedException($"{nameof(Cs13103)}, {JSON.Stringify(req)}");
|
||||
}
|
||||
|
||||
connection.Send(rsp);
|
||||
}
|
||||
|
||||
[PacketHandler(Command.Cs13505)]
|
||||
static void RemasterInfoRequestHandler(Connection connection, Packet packet)
|
||||
{
|
||||
@@ -43,4 +127,24 @@ namespace BLHX.Server.Game.Handlers
|
||||
connection.Send(new Sc13001() { ReactChapter = new() });
|
||||
}
|
||||
}
|
||||
|
||||
enum ChapterOP
|
||||
{
|
||||
OpRetreat = 0,
|
||||
OpMove = 1,
|
||||
OpBox = 2,
|
||||
OpAmbush = 4,
|
||||
OpStrategy = 5,
|
||||
OpRepair = 6,
|
||||
OpSupply = 7,
|
||||
OpEnemyRound = 8,
|
||||
OpSubState = 9,
|
||||
OpStory = 10,
|
||||
OpBarrier = 16,
|
||||
OpSubTeleport = 19,
|
||||
OpPreClear = 30,
|
||||
OpRequest = 49,
|
||||
OpSwitch = 98,
|
||||
OpSkipBattle = 99
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user