mirror of
https://github.com/EpinelPS/EpinelPS.git
synced 2025-12-13 07:24:52 +01:00
Basic manufacturer tower implementation with progress saving. (#15)
* Basic manufacturer tower with progress saving * Whoops
This commit is contained in:
@@ -171,6 +171,8 @@ namespace EpinelPS.Database
|
||||
public List<int> Memorial = new();
|
||||
public List<int> JukeboxBgm = new List<int>();
|
||||
|
||||
public Dictionary<int, int> TowerProgress = new Dictionary<int, int>();
|
||||
|
||||
// Event data
|
||||
public Dictionary<int, EventData> EventInfo = new();
|
||||
|
||||
|
||||
47
EpinelPS/LobbyServer/Msgs/Tower/ClearTower.cs
Normal file
47
EpinelPS/LobbyServer/Msgs/Tower/ClearTower.cs
Normal file
@@ -0,0 +1,47 @@
|
||||
using EpinelPS.Database;
|
||||
using EpinelPS.Utils;
|
||||
|
||||
namespace EpinelPS.LobbyServer.Msgs.Tower
|
||||
{
|
||||
[PacketPath("/tower/cleartower")]
|
||||
public class ClearTower : LobbyMsgHandler
|
||||
{
|
||||
protected override async Task HandleAsync()
|
||||
{
|
||||
var req = await ReadData<ReqClearTower>();
|
||||
|
||||
var response = new ResClearTower();
|
||||
var user = GetUser();
|
||||
|
||||
if (req.BattleResult == 1)
|
||||
{
|
||||
response = CompleteTower(user, req.TowerId);
|
||||
}
|
||||
|
||||
await WriteDataAsync(response);
|
||||
}
|
||||
|
||||
public static ResClearTower CompleteTower(Database.User user, int TowerId)
|
||||
{
|
||||
var response = new ResClearTower();
|
||||
|
||||
// Parse TowerId to get TowerType and FloorNumber
|
||||
int TowerType = (TowerId / 10000) - 1; // For some weird reason the Type here doesn't match up with NetTowerData, thus the -1
|
||||
int FloorNumber = TowerId % 10000;
|
||||
|
||||
// Update user's TowerProgress
|
||||
if (!user.TowerProgress.ContainsKey(TowerType))
|
||||
{
|
||||
user.TowerProgress[TowerType] = FloorNumber;
|
||||
}
|
||||
else if (user.TowerProgress[TowerType] < FloorNumber)
|
||||
{
|
||||
user.TowerProgress[TowerType] = FloorNumber;
|
||||
}
|
||||
|
||||
JsonDb.Save();
|
||||
|
||||
return response;
|
||||
}
|
||||
}
|
||||
}
|
||||
17
EpinelPS/LobbyServer/Msgs/Tower/EnterTower.cs
Normal file
17
EpinelPS/LobbyServer/Msgs/Tower/EnterTower.cs
Normal file
@@ -0,0 +1,17 @@
|
||||
using EpinelPS.Utils;
|
||||
|
||||
namespace EpinelPS.LobbyServer.Msgs.Tower
|
||||
{
|
||||
[PacketPath("/tower/entertower")]
|
||||
public class EnterTower : LobbyMsgHandler
|
||||
{
|
||||
protected override async Task HandleAsync()
|
||||
{
|
||||
var req = await ReadData<ReqEnterTower>();
|
||||
|
||||
var response = new ResEnterTower();
|
||||
|
||||
await WriteDataAsync(response);
|
||||
}
|
||||
}
|
||||
}
|
||||
17
EpinelPS/LobbyServer/Msgs/Tower/FastClearTower.cs
Normal file
17
EpinelPS/LobbyServer/Msgs/Tower/FastClearTower.cs
Normal file
@@ -0,0 +1,17 @@
|
||||
using EpinelPS.Utils;
|
||||
|
||||
namespace EpinelPS.LobbyServer.Msgs.Tower
|
||||
{
|
||||
[PacketPath("/tower/fastcleartower")]
|
||||
public class FastClearTower : LobbyMsgHandler
|
||||
{
|
||||
protected override async Task HandleAsync()
|
||||
{
|
||||
var req = await ReadData<ReqFastClearTower>();
|
||||
|
||||
var response = new ResFastClearTower();
|
||||
|
||||
await WriteDataAsync(response);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -11,6 +11,8 @@ namespace EpinelPS.LobbyServer.Msgs.Tower
|
||||
|
||||
var response = new ResGetTowerData();
|
||||
|
||||
var user = GetUser();
|
||||
|
||||
// TODO: Load remain count for these
|
||||
var t0 = new NetTowerData() { Type = 1, RemainCount = 3 };
|
||||
var t1 = new NetTowerData() { Type = 2, RemainCount = 3 };
|
||||
@@ -25,6 +27,17 @@ namespace EpinelPS.LobbyServer.Msgs.Tower
|
||||
t3.Schedules.Add(new NetSchedule() { DayOfWeek = new() { DayOfWeeks = { 2, 6 }, StartTime = 720000000000, Duration = 863990000000 } });
|
||||
t4.Schedules.Add(new NetSchedule() { AllTime = new() });
|
||||
|
||||
if (user.TowerProgress.TryGetValue(1, out int floor1))
|
||||
t0.Floor = floor1;
|
||||
if (user.TowerProgress.TryGetValue(2, out int floor2))
|
||||
t1.Floor = floor2;
|
||||
if (user.TowerProgress.TryGetValue(3, out int floor3))
|
||||
t2.Floor = floor3;
|
||||
if (user.TowerProgress.TryGetValue(4, out int floor4))
|
||||
t3.Floor = floor4;
|
||||
if (user.TowerProgress.TryGetValue(5, out int floor5))
|
||||
t4.Floor = floor5;
|
||||
|
||||
response.Data.Add(t0);
|
||||
response.Data.Add(t1);
|
||||
response.Data.Add(t2);
|
||||
|
||||
Reference in New Issue
Block a user