mirror of
https://github.com/EpinelPS/EpinelPS.git
synced 2025-12-14 07:55:01 +01:00
Implement stage skipping
This commit is contained in:
22
nksrv/LobbyServer/Msgs/Arena/ShowSpecialArenaReward.cs
Normal file
22
nksrv/LobbyServer/Msgs/Arena/ShowSpecialArenaReward.cs
Normal file
@@ -0,0 +1,22 @@
|
||||
using nksrv.Utils;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace nksrv.LobbyServer.Msgs.Arena
|
||||
{
|
||||
[PacketPath("/arena/special/showreward")]
|
||||
public class ShowSpecialArenaReward : LobbyMsgHandler
|
||||
{
|
||||
protected override async Task HandleAsync()
|
||||
{
|
||||
var req = await ReadData<ReqShowSpecialArenaReward>();
|
||||
|
||||
var response = new ResShowSpecialArenaReward();
|
||||
// TODO
|
||||
await WriteDataAsync(response);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
using nksrv.Utils;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace nksrv.LobbyServer.Msgs.FavoriteItem
|
||||
{
|
||||
[PacketPath("/favoriteitem/library")]
|
||||
public class GetFavoriteItemLibrary : LobbyMsgHandler
|
||||
{
|
||||
protected override async Task HandleAsync()
|
||||
{
|
||||
var req = await ReadData<ReqGetFavoriteItemLibrary>();
|
||||
|
||||
var response = new ResGetFavoriteItemLibrary();
|
||||
var user = GetUser();
|
||||
|
||||
|
||||
await WriteDataAsync(response);
|
||||
}
|
||||
}
|
||||
}
|
||||
23
nksrv/LobbyServer/Msgs/FavoriteItem/ListFavoriteItem.cs
Normal file
23
nksrv/LobbyServer/Msgs/FavoriteItem/ListFavoriteItem.cs
Normal file
@@ -0,0 +1,23 @@
|
||||
using nksrv.Utils;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace nksrv.LobbyServer.Msgs.FavoriteItem
|
||||
{
|
||||
[PacketPath("/favoriteitem/list")]
|
||||
public class ListFavoriteItem : LobbyMsgHandler
|
||||
{
|
||||
protected override async Task HandleAsync()
|
||||
{
|
||||
var req = await ReadData<ReqListFavoriteItem>();
|
||||
var user = GetUser();
|
||||
|
||||
var response = new ResListFavoriteItem();
|
||||
|
||||
await WriteDataAsync(response);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
using nksrv.Utils;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace nksrv.LobbyServer.Msgs.FavoriteItem
|
||||
{
|
||||
[PacketPath("/favoriteitem/quest/list")]
|
||||
public class ListFavoriteItemQuests : LobbyMsgHandler
|
||||
{
|
||||
protected override async Task HandleAsync()
|
||||
{
|
||||
var req = await ReadData<ReqListFavoriteItemQuest>();
|
||||
var user = GetUser();
|
||||
|
||||
var response = new ResListFavoriteItemQuest();
|
||||
|
||||
await WriteDataAsync(response);
|
||||
}
|
||||
}
|
||||
}
|
||||
25
nksrv/LobbyServer/Msgs/Liberate/GetLiberateData.cs
Normal file
25
nksrv/LobbyServer/Msgs/Liberate/GetLiberateData.cs
Normal file
@@ -0,0 +1,25 @@
|
||||
using nksrv.Utils;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace nksrv.LobbyServer.Msgs.Liberate
|
||||
{
|
||||
[PacketPath("/liberate/get")]
|
||||
public class GetLiberateData : LobbyMsgHandler
|
||||
{
|
||||
protected override async Task HandleAsync()
|
||||
{
|
||||
var req = await ReadData<ReqGetLiberateData>();
|
||||
var user = GetUser();
|
||||
|
||||
var response = new ResGetLiberateData() { };
|
||||
|
||||
// TODO
|
||||
|
||||
await WriteDataAsync(response);
|
||||
}
|
||||
}
|
||||
}
|
||||
25
nksrv/LobbyServer/Msgs/Lostsector/GetLostSectorData.cs
Normal file
25
nksrv/LobbyServer/Msgs/Lostsector/GetLostSectorData.cs
Normal file
@@ -0,0 +1,25 @@
|
||||
using nksrv.Utils;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace nksrv.LobbyServer.Msgs.Lostsector
|
||||
{
|
||||
[PacketPath("/lostsector/get")]
|
||||
public class GetLostSectorData : LobbyMsgHandler
|
||||
{
|
||||
protected override async Task HandleAsync()
|
||||
{
|
||||
var req = await ReadData<ReqGetLostSectorData>();
|
||||
var user = GetUser();
|
||||
|
||||
var response = new ResGetLostSectorData();
|
||||
|
||||
// TODO
|
||||
|
||||
await WriteDataAsync(response);
|
||||
}
|
||||
}
|
||||
}
|
||||
25
nksrv/LobbyServer/Msgs/Sidestory/ListSideStory.cs
Normal file
25
nksrv/LobbyServer/Msgs/Sidestory/ListSideStory.cs
Normal file
@@ -0,0 +1,25 @@
|
||||
using nksrv.Utils;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace nksrv.LobbyServer.Msgs.Sidestory
|
||||
{
|
||||
[PacketPath("/sidestory/list")]
|
||||
public class ListSideStory : LobbyMsgHandler
|
||||
{
|
||||
protected override async Task HandleAsync()
|
||||
{
|
||||
var req = await ReadData<ReqListSideStory>();
|
||||
var user = GetUser();
|
||||
|
||||
var response = new ResListSideStory();
|
||||
|
||||
// TODO
|
||||
|
||||
await WriteDataAsync(response);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -24,56 +24,68 @@ namespace nksrv.LobbyServer.Msgs.Stage
|
||||
// TODO: check if user has already cleared this stage
|
||||
if (req.BattleResult == 1)
|
||||
{
|
||||
var clearedStage = StaticDataParser.Instance.GetStageData(req.StageId);
|
||||
if (clearedStage == null) throw new Exception("cleared stage cannot be null");
|
||||
|
||||
|
||||
if (user.FieldInfo.Count == 0)
|
||||
{
|
||||
user.FieldInfo.Add("0_" + clearedStage.chapter_mod, new FieldInfo() { });
|
||||
}
|
||||
|
||||
DoQuestSpecificUserOperations(user, req.StageId);
|
||||
var rewardData = StaticDataParser.Instance.GetRewardTableEntry(clearedStage.reward_id);
|
||||
|
||||
if (rewardData != null)
|
||||
response.StageClearReward = RegisterRewardsForUser(user, rewardData);
|
||||
else
|
||||
Logger.Warn("rewardId is null for stage " + req.StageId);
|
||||
|
||||
|
||||
if (clearedStage.stage_category == "Normal" || clearedStage.stage_category == "Boss" || clearedStage.stage_category == "Hard")
|
||||
{
|
||||
if (clearedStage.chapter_mod == "Hard")
|
||||
{
|
||||
user.LastHardStageCleared = req.StageId;
|
||||
}
|
||||
else if (clearedStage.chapter_mod == "Normal")
|
||||
{
|
||||
user.LastNormalStageCleared = req.StageId;
|
||||
}
|
||||
else
|
||||
{
|
||||
Logger.Warn("Unknown chapter mod " + clearedStage.chapter_mod);
|
||||
}
|
||||
}
|
||||
else if (clearedStage.stage_category == "Extra")
|
||||
{
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
Logger.Warn("Unknown stage category " + clearedStage.stage_category);
|
||||
}
|
||||
|
||||
user.FieldInfo[(clearedStage.chapter_id - 1) + "_" + clearedStage.chapter_mod].CompletedStages.Add(new NetFieldStageData() { StageId = req.StageId });
|
||||
JsonDb.Save();
|
||||
response = CompleteStage(user, req.StageId);
|
||||
}
|
||||
|
||||
await WriteDataAsync(response);
|
||||
}
|
||||
|
||||
private NetRewardData RegisterRewardsForUser(Utils.User user, RewardTableRecord rewardData)
|
||||
|
||||
public static ResClearStage CompleteStage(Utils.User user, int StageId)
|
||||
{
|
||||
var response = new ResClearStage();
|
||||
var clearedStage = StaticDataParser.Instance.GetStageData(StageId);
|
||||
if (clearedStage == null) throw new Exception("cleared stage cannot be null");
|
||||
|
||||
|
||||
if (user.FieldInfo.Count == 0)
|
||||
{
|
||||
user.FieldInfo.Add("0_" + clearedStage.chapter_mod, new FieldInfo() { });
|
||||
}
|
||||
|
||||
DoQuestSpecificUserOperations(user, StageId);
|
||||
var rewardData = StaticDataParser.Instance.GetRewardTableEntry(clearedStage.reward_id);
|
||||
|
||||
if (rewardData != null)
|
||||
response.StageClearReward = RegisterRewardsForUser(user, rewardData);
|
||||
else
|
||||
Logger.Warn("rewardId is null for stage " + StageId);
|
||||
|
||||
|
||||
if (clearedStage.stage_category == "Normal" || clearedStage.stage_category == "Boss" || clearedStage.stage_category == "Hard")
|
||||
{
|
||||
if (clearedStage.chapter_mod == "Hard")
|
||||
{
|
||||
user.LastHardStageCleared = StageId;
|
||||
}
|
||||
else if (clearedStage.chapter_mod == "Normal")
|
||||
{
|
||||
user.LastNormalStageCleared = StageId;
|
||||
}
|
||||
else
|
||||
{
|
||||
Logger.Warn("Unknown chapter mod " + clearedStage.chapter_mod);
|
||||
}
|
||||
}
|
||||
else if (clearedStage.stage_category == "Extra")
|
||||
{
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
Logger.Warn("Unknown stage category " + clearedStage.stage_category);
|
||||
}
|
||||
|
||||
var key = (clearedStage.chapter_id - 1) + "_" + clearedStage.chapter_mod;
|
||||
if (!user.FieldInfo.ContainsKey(key))
|
||||
user.FieldInfo.Add(key, new FieldInfo());
|
||||
|
||||
user.FieldInfo[key].CompletedStages.Add(new NetFieldStageData() { StageId = StageId });
|
||||
JsonDb.Save();
|
||||
return response;
|
||||
}
|
||||
|
||||
private static NetRewardData RegisterRewardsForUser(Utils.User user, RewardTableRecord rewardData)
|
||||
{
|
||||
NetRewardData ret = new();
|
||||
if (rewardData.rewards == null) return ret;
|
||||
|
||||
Reference in New Issue
Block a user