mirror of
https://github.com/EpinelPS/EpinelPS.git
synced 2025-12-14 16:04:36 +01:00
Decrease database size
This commit is contained in:
@@ -21,7 +21,7 @@ namespace nksrv.LobbyServer.Msgs.Campaign
|
|||||||
var chapter = StaticDataParser.Instance.GetNormalChapterNumberFromFieldName(req.MapId);
|
var chapter = StaticDataParser.Instance.GetNormalChapterNumberFromFieldName(req.MapId);
|
||||||
var mod = req.MapId.Contains("hard") ? "Hard" : "Normal";
|
var mod = req.MapId.Contains("hard") ? "Hard" : "Normal";
|
||||||
var key = chapter + "_" + mod;
|
var key = chapter + "_" + mod;
|
||||||
var field = user.FieldInfo[key];
|
var field = user.FieldInfoNew[key];
|
||||||
|
|
||||||
// TODO
|
// TODO
|
||||||
response.Reward = new();
|
response.Reward = new();
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ namespace nksrv.LobbyServer.Msgs.Campaign
|
|||||||
var chapter = StaticDataParser.Instance.GetNormalChapterNumberFromFieldName(req.MapId);
|
var chapter = StaticDataParser.Instance.GetNormalChapterNumberFromFieldName(req.MapId);
|
||||||
var mod = req.MapId.Contains("hard") ? "Hard" : "Normal";
|
var mod = req.MapId.Contains("hard") ? "Hard" : "Normal";
|
||||||
var key = chapter + "_" + mod;
|
var key = chapter + "_" + mod;
|
||||||
var field = user.FieldInfo[key];
|
var field = user.FieldInfoNew[key];
|
||||||
|
|
||||||
field.CompletedObjects.Add(new NetFieldObject() { PositionId = req.FieldObject.PositionID, Json = req.FieldObject.Json, Type = req.FieldObject.Type });
|
field.CompletedObjects.Add(new NetFieldObject() { PositionId = req.FieldObject.PositionID, Json = req.FieldObject.Json, Type = req.FieldObject.Type });
|
||||||
JsonDb.Save();
|
JsonDb.Save();
|
||||||
|
|||||||
@@ -18,11 +18,13 @@ namespace nksrv.LobbyServer.Msgs.Stage
|
|||||||
var user = GetUser();
|
var user = GetUser();
|
||||||
Console.WriteLine("CheckClear len: " + req.StageIds.Count);
|
Console.WriteLine("CheckClear len: " + req.StageIds.Count);
|
||||||
|
|
||||||
foreach (var fields in user.FieldInfo)
|
// TODO: is this correct
|
||||||
|
|
||||||
|
foreach (var fields in user.FieldInfoNew)
|
||||||
{
|
{
|
||||||
foreach (var stages in fields.Value.CompletedStages)
|
foreach (var stages in fields.Value.CompletedStages)
|
||||||
{
|
{
|
||||||
response.ClearedStageIds.Add(stages.StageId);
|
response.ClearedStageIds.Add(stages);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -39,9 +39,9 @@ namespace nksrv.LobbyServer.Msgs.Stage
|
|||||||
if (clearedStage == null) throw new Exception("cleared stage cannot be null");
|
if (clearedStage == null) throw new Exception("cleared stage cannot be null");
|
||||||
|
|
||||||
|
|
||||||
if (user.FieldInfo.Count == 0)
|
if (user.FieldInfoNew.Count == 0)
|
||||||
{
|
{
|
||||||
user.FieldInfo.Add("0_" + clearedStage.chapter_mod, new FieldInfo() { });
|
user.FieldInfoNew.Add("0_" + clearedStage.chapter_mod, new FieldInfoNew() { });
|
||||||
}
|
}
|
||||||
|
|
||||||
DoQuestSpecificUserOperations(user, StageId);
|
DoQuestSpecificUserOperations(user, StageId);
|
||||||
@@ -78,10 +78,10 @@ namespace nksrv.LobbyServer.Msgs.Stage
|
|||||||
}
|
}
|
||||||
|
|
||||||
var key = (clearedStage.chapter_id - 1) + "_" + clearedStage.chapter_mod;
|
var key = (clearedStage.chapter_id - 1) + "_" + clearedStage.chapter_mod;
|
||||||
if (!user.FieldInfo.ContainsKey(key))
|
if (!user.FieldInfoNew.ContainsKey(key))
|
||||||
user.FieldInfo.Add(key, new FieldInfo());
|
user.FieldInfoNew.Add(key, new FieldInfoNew());
|
||||||
|
|
||||||
user.FieldInfo[key].CompletedStages.Add(new NetFieldStageData() { StageId = StageId });
|
user.FieldInfoNew[key].CompletedStages.Add(StageId);
|
||||||
JsonDb.Save();
|
JsonDb.Save();
|
||||||
return response;
|
return response;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -27,14 +27,14 @@ namespace nksrv.LobbyServer.Msgs.Stage
|
|||||||
var f = new NetFieldObjectData();
|
var f = new NetFieldObjectData();
|
||||||
bool found = false;
|
bool found = false;
|
||||||
string key = chapter + "_" + mod;
|
string key = chapter + "_" + mod;
|
||||||
foreach (var item in user.FieldInfo)
|
foreach (var item in user.FieldInfoNew)
|
||||||
{
|
{
|
||||||
if (item.Key == key)
|
if (item.Key == key)
|
||||||
{
|
{
|
||||||
found = true;
|
found = true;
|
||||||
foreach (var stage in item.Value.CompletedStages)
|
foreach (var stage in item.Value.CompletedStages)
|
||||||
{
|
{
|
||||||
f.Stages.Add(stage);
|
f.Stages.Add(new NetFieldStageData() { StageId = stage });
|
||||||
}
|
}
|
||||||
foreach (var obj in item.Value.CompletedObjects)
|
foreach (var obj in item.Value.CompletedObjects)
|
||||||
{
|
{
|
||||||
@@ -46,7 +46,7 @@ namespace nksrv.LobbyServer.Msgs.Stage
|
|||||||
|
|
||||||
if (!found)
|
if (!found)
|
||||||
{
|
{
|
||||||
user.FieldInfo.Add(key, new FieldInfo());
|
user.FieldInfoNew.Add(key, new FieldInfoNew());
|
||||||
return CreateFieldInfo(user, chapter, mod);
|
return CreateFieldInfo(user, chapter, mod);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -15,12 +15,12 @@ namespace nksrv.LobbyServer.Msgs.User
|
|||||||
List<int> specialStages = [6003003, 6002008, 6002016, 6005003, 6003021, 6011018, 6007021, 6004018, 6005013, 6003009, 6003012, 6009017, 6016039, 6001004, 6000003, 6000001, 6002001, 6004023, 6005026, 6020050, 6006004, 6006023];
|
List<int> specialStages = [6003003, 6002008, 6002016, 6005003, 6003021, 6011018, 6007021, 6004018, 6005013, 6003009, 6003012, 6009017, 6016039, 6001004, 6000003, 6000001, 6002001, 6004023, 6005026, 6020050, 6006004, 6006023];
|
||||||
|
|
||||||
var response = new ResGetContentsOpenData();
|
var response = new ResGetContentsOpenData();
|
||||||
foreach (var field in user.FieldInfo.Values)
|
foreach (var field in user.FieldInfoNew.Values)
|
||||||
{
|
{
|
||||||
foreach (var stage in field.CompletedStages)
|
foreach (var stage in field.CompletedStages)
|
||||||
{
|
{
|
||||||
if (specialStages.Contains(stage.StageId))
|
if (specialStages.Contains(stage))
|
||||||
response.ClearStageList.Add(stage.StageId);
|
response.ClearStageList.Add(stage);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
response.MaxGachaCount = 10;
|
response.MaxGachaCount = 10;
|
||||||
|
|||||||
@@ -18,6 +18,12 @@ namespace nksrv.Utils
|
|||||||
public List<NetFieldObject> CompletedObjects = [];
|
public List<NetFieldObject> CompletedObjects = [];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public class FieldInfoNew
|
||||||
|
{
|
||||||
|
public List<int> CompletedStages = [];
|
||||||
|
public List<NetFieldObject> CompletedObjects = [];
|
||||||
|
}
|
||||||
|
|
||||||
public class Character
|
public class Character
|
||||||
{
|
{
|
||||||
// TODO
|
// TODO
|
||||||
@@ -76,7 +82,9 @@ namespace nksrv.Utils
|
|||||||
|
|
||||||
// Game data
|
// Game data
|
||||||
public List<string> CompletedScenarios = [];
|
public List<string> CompletedScenarios = [];
|
||||||
public Dictionary<string, FieldInfo> FieldInfo = [];
|
public Dictionary<string, FieldInfo> FieldInfo = []; // here for backwards compatibility
|
||||||
|
|
||||||
|
public Dictionary<string, FieldInfoNew> FieldInfoNew = [];
|
||||||
public Dictionary<string, string> MapJson = [];
|
public Dictionary<string, string> MapJson = [];
|
||||||
public Dictionary<CurrencyType, long> Currency = new() {
|
public Dictionary<CurrencyType, long> Currency = new() {
|
||||||
{ CurrencyType.ContentStamina, 2 },
|
{ CurrencyType.ContentStamina, 2 },
|
||||||
@@ -132,16 +140,13 @@ namespace nksrv.Utils
|
|||||||
|
|
||||||
public bool IsStageCompleted(int id, bool isNorm)
|
public bool IsStageCompleted(int id, bool isNorm)
|
||||||
{
|
{
|
||||||
foreach (var item in FieldInfo)
|
foreach (var item in FieldInfoNew)
|
||||||
{
|
{
|
||||||
if (item.Key.Contains("hard") && isNorm) continue;
|
if (item.Key.Contains("hard") && isNorm) continue;
|
||||||
if (item.Key.Contains("normal") && !isNorm) continue;
|
if (item.Key.Contains("normal") && !isNorm) continue;
|
||||||
foreach (var s in item.Value.CompletedStages)
|
if (item.Value.CompletedStages.Contains(id))
|
||||||
{
|
{
|
||||||
if (s.StageId == id)
|
return true;
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -150,7 +155,7 @@ namespace nksrv.Utils
|
|||||||
}
|
}
|
||||||
public class CoreInfo
|
public class CoreInfo
|
||||||
{
|
{
|
||||||
public int DbVersion = 2;
|
public int DbVersion = 3;
|
||||||
public List<User> Users = [];
|
public List<User> Users = [];
|
||||||
|
|
||||||
public List<AccessToken> LauncherAccessTokens = [];
|
public List<AccessToken> LauncherAccessTokens = [];
|
||||||
@@ -185,14 +190,14 @@ namespace nksrv.Utils
|
|||||||
|
|
||||||
foreach (var user in Instance.Users)
|
foreach (var user in Instance.Users)
|
||||||
{
|
{
|
||||||
foreach (var f in user.FieldInfo.ToList())
|
foreach (var f in user.FieldInfoNew.ToList())
|
||||||
{
|
{
|
||||||
var isNumeric = int.TryParse(f.Key, out int n);
|
var isNumeric = int.TryParse(f.Key, out int n);
|
||||||
if (isNumeric)
|
if (isNumeric)
|
||||||
{
|
{
|
||||||
var val = f.Value;
|
var val = f.Value;
|
||||||
user.FieldInfo.Remove(f.Key);
|
user.FieldInfoNew.Remove(f.Key);
|
||||||
user.FieldInfo.Add(n + "_Normal", val);
|
user.FieldInfoNew.Add(n + "_Normal", val);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -212,6 +217,26 @@ namespace nksrv.Utils
|
|||||||
}
|
}
|
||||||
Console.WriteLine("Database update completed");
|
Console.WriteLine("Database update completed");
|
||||||
}
|
}
|
||||||
|
else if (Instance.DbVersion == 2)
|
||||||
|
{
|
||||||
|
Console.WriteLine("Starting database update...");
|
||||||
|
// I used to use a class for FieldInfo cleared stages, but now int list is used
|
||||||
|
Instance.DbVersion = 3;
|
||||||
|
foreach (var user in Instance.Users)
|
||||||
|
{
|
||||||
|
foreach (var f in user.FieldInfo)
|
||||||
|
{
|
||||||
|
var newField = new FieldInfoNew();
|
||||||
|
foreach (var stage in f.Value.CompletedStages)
|
||||||
|
{
|
||||||
|
newField.CompletedStages.Add(stage.StageId);
|
||||||
|
}
|
||||||
|
user.FieldInfoNew.Add(f.Key, newField);
|
||||||
|
}
|
||||||
|
user.FieldInfo.Clear();
|
||||||
|
}
|
||||||
|
Console.WriteLine("Database update completed");
|
||||||
|
}
|
||||||
Save();
|
Save();
|
||||||
|
|
||||||
ValidateDb();
|
ValidateDb();
|
||||||
|
|||||||
Reference in New Issue
Block a user