save campaign field object

This commit is contained in:
Mikhail
2024-07-06 14:03:45 -04:00
parent 699bbed3dd
commit 3df70d2dbe
11 changed files with 201 additions and 4 deletions

View File

@@ -26,7 +26,6 @@ namespace nksrv.LobbyServer.Msgs.Campaign
// TODO
response.Reward = new();
WriteData(response);

View File

@@ -0,0 +1,37 @@
using nksrv.StaticInfo;
using nksrv.Utils;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace nksrv.LobbyServer.Msgs.Campaign
{
[PacketPath("/campaign/savefieldobject")]
public class SaveFieldObject : LobbyMsgHandler
{
protected override async Task HandleAsync()
{
var req = await ReadData<ReqSaveCampaignFieldObject>();
var user = GetUser();
Console.WriteLine("Map ID: " + req.MapId);
var response = new ResSaveCampaignFieldObject();
Console.WriteLine($"save {req.MapId} with {req.FieldObject.PositionID}");
var chapter = StaticDataParser.Instance.GetNormalChapterNumberFromFieldName(req.MapId);
var mod = req.MapId.Contains("hard") ? "Hard" : "Normal";
var key = chapter + "_" + mod;
var field = user.FieldInfo[key];
field.CompletedObjects.Add(new NetFieldObject() { PositionId = req.FieldObject.PositionID, Json = req.FieldObject.Json, Type = req.FieldObject.Type });
JsonDb.Save();
WriteData(response);
}
}
}

View File

@@ -0,0 +1,37 @@
using nksrv.Utils;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace nksrv.LobbyServer.Msgs.Event
{
[PacketPath("/event/scenario/complete")]
public class CompleteEventScenario : LobbyMsgHandler
{
protected override async Task HandleAsync()
{
var req = await ReadData<ReqSetEventScenarioComplete>();
var user = GetUser();
if (user.EventInfo.ContainsKey(req.EventID))
{
var evt = user.EventInfo[req.EventID];
evt.CompletedScenarios.Add(req.ScenarioId);
}
else
{
var evt = new EventData();
evt.CompletedScenarios.Add(req.ScenarioId);
user.EventInfo.Add(req.EventID, evt);
}
var response = new ResSetEventScenarioComplete();
// TODO reward
WriteData(response);
}
}
}

View File

@@ -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.Event
{
[PacketPath("/eventfield/enter")]
public class EnterEventField : LobbyMsgHandler
{
protected override async Task HandleAsync()
{
var req = await ReadData<ReqEnterEventField>();
var response = new ResEnterEventField();
// TOOD
WriteData(response);
}
}
}

View File

@@ -0,0 +1,32 @@
using nksrv.Utils;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace nksrv.LobbyServer.Msgs.Event
{
[PacketPath("/event/scenario/get")]
public class GetEventScenario : LobbyMsgHandler
{
protected override async Task HandleAsync()
{
var req = await ReadData<ReqGetEventScenarioData>();
var user = GetUser();
var response = new ResGetEventScenarioData();
if (user.EventInfo.ContainsKey(req.EventID))
{
var evt = user.EventInfo[req.EventID];
response.ScenarioIdList.AddRange(evt.CompletedScenarios);
}
else
{
user.EventInfo.Add(req.EventID, new EventData());
}
WriteData(response);
}
}
}

View File

@@ -89,7 +89,7 @@ namespace nksrv.LobbyServer.Msgs.Event
EventVisibleDate = DateTime.UtcNow.Subtract(TimeSpan.FromDays(1)).Ticks,
EventDisableDate = DateTime.Now.AddDays(20).Ticks,
EventEndDate = DateTime.Now.AddDays(20).Ticks,
EventSystemType = 2
EventSystemType = 22
});
// Aegis the Diver event

View File

@@ -18,7 +18,7 @@ namespace nksrv.LobbyServer.Msgs.Inventory
var response = new ResGetInventoryData();
foreach (var item in user.Items)
{
response.Items.Add(new NetUserItemData() { Tid = item.ItemType, Count = 1 });
response.Items.Add(new NetUserItemData() { Count = item.Count, Tid = item.ItemType, Csn = item.Csn, Lv = item.Level, Exp = item.Exp, Corporation = item.Corp, Isn = item.Isn, Position = item.Position });
}
// TODO implement

View File

@@ -43,6 +43,10 @@ namespace nksrv.LobbyServer.Msgs.Stage
{
f.Stages.Add(stage);
}
foreach (var obj in item.Value.CompletedObjects)
{
f.Objects.Add(obj);
}
break;
}
}

View File

@@ -53,7 +53,7 @@ namespace nksrv.LobbyServer.Msgs.User
}
foreach (var item in user.Items)
{
response.Items.Add(new NetUserItemData() { Count = 1, Tid = item.ItemType});
response.Items.Add(new NetUserItemData() { Count = item.Count, Tid = item.ItemType, Csn = item.Csn, Lv = item.Level, Exp = item.Exp, Corporation = item.Corp, Isn = item.Isn, Position = item.Position});
}

View File

@@ -2065,4 +2065,53 @@ message ReqExistScenarioBookmark {
}
message ResExistScenarioBookmark {
repeated string existingBookmarkList = 1;
}
message ReqGetEventScenarioData {
int32 EventID = 2;
}
message ResGetEventScenarioData {
repeated string scenarioIdList = 1;
repeated string bookmarkScenarioList = 2;
}
message ReqSetEventScenarioComplete {
int32 EventID = 2;
string ScenarioId = 3;
int32 DialogType = 4;
}
message ResSetEventScenarioComplete {
NetRewardData Reward = 1;
}
message ReqEnterEventField {
string MapId = 1;
repeated int32 ProgressEventGroupIdList = 2;
int32 EventFieldId = 3;
}
message NetUserAutoChargeData {
int32 AutoChargeId = 1;
int32 Value = 2;
}
message NetNonResettableFieldObject {
string PositionId = 1;
int32 Type = 2;
string Json = 3;
}
message ResEnterEventField {
NetUserTeamData team = 2;
repeated NetCampaignTeamPosition TeamPositions = 3;
string json = 4;
repeated int32 userEventIdList = 5;
repeated NetUserAutoChargeData autoChargeDataList = 6;
repeated NetNonResettableFieldObject NonResettableFieldObjects = 7;
}
message ReqSaveCampaignFieldObject {
string mapId = 2;
NetCampaignFieldObject fieldObject = 3;
}
message ResSaveCampaignFieldObject {
}

View File

@@ -21,6 +21,7 @@ namespace nksrv.Utils
public class FieldInfo
{
public List<NetFieldStageData> CompletedStages = [];
public List<NetFieldObject> CompletedObjects = [];
}
public class Character
@@ -51,6 +52,17 @@ namespace nksrv.Utils
public class ItemData
{
public int ItemType;
public long Csn;
public int Count;
public int Level;
public int Exp;
public int Position;
public int Corp;
public long Isn;
}
public class EventData
{
public List<string> CompletedScenarios = new();
}
public class User
@@ -95,6 +107,9 @@ namespace nksrv.Utils
public NetOutpostBattleLevel OutpostBattleLevel = new() { Level = 1 };
public int GachaTutorialPlayCount = 0;
// Event data
public Dictionary<int, EventData> EventInfo = new();
public void SetQuest(int tid, bool recieved)
{
if (MainQuestData.ContainsKey(tid))