mirror of
https://github.com/EpinelPS/EpinelPS.git
synced 2025-12-12 15:04:36 +01:00
begin work on subquests
This commit is contained in:
@@ -265,6 +265,7 @@ namespace EpinelPS.Database
|
||||
|
||||
public Dictionary<int, NetUserTeamData> UserTeams = new Dictionary<int, NetUserTeamData>();
|
||||
public Dictionary<int, bool> MainQuestData = new();
|
||||
public Dictionary<int, bool> SubQuestData = new();
|
||||
public int InfraCoreExp = 0;
|
||||
public int InfraCoreLvl = 1;
|
||||
public UserPointData userPointData = new();
|
||||
@@ -350,6 +351,15 @@ namespace EpinelPS.Database
|
||||
}
|
||||
}
|
||||
|
||||
public void SetSubQuest(int tid, bool recievedReward)
|
||||
{
|
||||
if (!SubQuestData.TryAdd(tid, recievedReward))
|
||||
{
|
||||
SubQuestData[tid] = recievedReward;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
public int GenerateUniqueItemId()
|
||||
{
|
||||
var num = Rng.RandomId();
|
||||
@@ -684,6 +694,23 @@ namespace EpinelPS.Database
|
||||
}
|
||||
}
|
||||
|
||||
public static void Reload()
|
||||
{
|
||||
if (!File.Exists(AppDomain.CurrentDomain.BaseDirectory + "/db.json"))
|
||||
{
|
||||
Console.WriteLine("users: warning: configuration not found, writing default data");
|
||||
Instance = new CoreInfo();
|
||||
Save();
|
||||
}
|
||||
|
||||
var j = JsonConvert.DeserializeObject<CoreInfo>(File.ReadAllText(AppDomain.CurrentDomain.BaseDirectory + "/db.json"));
|
||||
if (j != null)
|
||||
{
|
||||
Instance = j;
|
||||
Console.WriteLine("Database reload complete.");
|
||||
}
|
||||
}
|
||||
|
||||
private static void ValidateDb()
|
||||
{
|
||||
// check if character level is valid
|
||||
|
||||
@@ -214,12 +214,12 @@ namespace EpinelPS.LobbyServer.Gacha
|
||||
|
||||
// Add "New Character" Badge
|
||||
user.AddBadge(BadgeContents.BadgeContentsNikkeNew, characterData.name_code.ToString());
|
||||
user.AddTrigger(TriggerType.ObtainCharacter, 1, characterData.name_code);
|
||||
|
||||
if (characterData.original_rare == "SSR" || characterData.original_rare == "SR")
|
||||
{
|
||||
user.BondInfo.Add(new() { NameCode = characterData.name_code, Level = 1 });
|
||||
|
||||
user.AddTrigger(TriggerType.ObtainCharacter, 1, characterData.name_code);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -8,10 +8,18 @@ namespace EpinelPS.LobbyServer.Subquest
|
||||
protected override async Task HandleAsync()
|
||||
{
|
||||
var req = await ReadData<ReqGetSubQuestList>();
|
||||
var user = GetUser();
|
||||
|
||||
var response = new ResGetSubQuestList();
|
||||
|
||||
// TOOD
|
||||
foreach(var item in user.SubQuestData)
|
||||
{
|
||||
response.SubquestList.Add(new NetSubQuestData(){
|
||||
CreatedAt = DateTime.UtcNow.Ticks, // TODO does this matter
|
||||
SubQuestId = item.Key,
|
||||
IsReceived = item.Value
|
||||
});
|
||||
}
|
||||
|
||||
await WriteDataAsync(response);
|
||||
}
|
||||
|
||||
28
EpinelPS/LobbyServer/Subquest/SetTrigger.cs
Normal file
28
EpinelPS/LobbyServer/Subquest/SetTrigger.cs
Normal file
@@ -0,0 +1,28 @@
|
||||
using EpinelPS.Database;
|
||||
using EpinelPS.StaticInfo;
|
||||
using EpinelPS.Utils;
|
||||
|
||||
namespace EpinelPS.LobbyServer.Subquest
|
||||
{
|
||||
[PacketPath("/subquest/settrigger")]
|
||||
public class SetTrigger : LobbyMsgHandler
|
||||
{
|
||||
protected override async Task HandleAsync()
|
||||
{
|
||||
var req = await ReadData<ReqSetTriggerFromSubQuest>();
|
||||
var user = GetUser();
|
||||
|
||||
var response = new ResSetTriggerFromSubQuest();
|
||||
|
||||
if (!GameData.Instance.Subquests.TryGetValue(req.SubquestId, out SubquestRecord? record))
|
||||
throw new Exception("no such subquest: " + req.SubquestId);
|
||||
|
||||
user.AddTrigger(TriggerType.CampaignGroupClear, record.clear_condition_value, record.clear_condition_id); // TODO this may need to go elsewhere
|
||||
user.AddTrigger(TriggerType.SubQuestClear, 1, req.SubquestId);
|
||||
|
||||
JsonDb.Save();
|
||||
|
||||
await WriteDataAsync(response);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -210,6 +210,7 @@ namespace EpinelPS
|
||||
Console.WriteLine(" ls /users - show all users");
|
||||
Console.WriteLine(" cd (user id) - select user by id");
|
||||
Console.WriteLine(" rmuser - delete selected user");
|
||||
Console.WriteLine(" r - load changes to database from disk. Discards data in memory.");
|
||||
Console.WriteLine(" ban - ban selected user from game");
|
||||
Console.WriteLine(" unban - unban selected user from game");
|
||||
Console.WriteLine(" exit - exit server application");
|
||||
@@ -898,6 +899,10 @@ namespace EpinelPS
|
||||
{
|
||||
Console.WriteLine("Not implemented");
|
||||
}
|
||||
else if (input == "r")
|
||||
{
|
||||
JsonDb.Reload();
|
||||
}
|
||||
else
|
||||
{
|
||||
Console.WriteLine("Unknown command");
|
||||
|
||||
Reference in New Issue
Block a user