Implemented GeneratePlayerScav and GetCloneOfBotBase

This commit is contained in:
Chomp
2025-01-13 16:28:46 +00:00
parent 6a66923545
commit 9102d06d65
5 changed files with 51 additions and 13 deletions
+41 -5
View File
@@ -1,21 +1,36 @@
using Core.Annotations;
using Core.Annotations;
using Core.Models.Common;
using Core.Models.Eft.Common;
using Core.Models.Eft.Common.Tables;
using Core.Models.Enums;
using Core.Models.Enums.RaidSettings;
using Core.Models.Spt.Bots;
using Core.Models.Spt.Config;
using Core.Services;
using Core.Utils.Cloners;
using BodyPart = Core.Models.Eft.Common.Tables.BodyPart;
using ILogger = Core.Models.Utils.ILogger;
namespace Core.Generators;
[Injectable]
public class BotGenerator
{
private readonly ILogger _logger;
private readonly DatabaseService _databaseService;
private readonly ICloner _cloner;
private BotConfig _botConfig;
private PmcConfig _pmcConfig;
public BotGenerator()
public BotGenerator(
ILogger logger,
DatabaseService databaseService,
ICloner cloner
)
{
_logger = logger;
_databaseService = databaseService;
_cloner = cloner;
}
/// <summary>
@@ -27,9 +42,30 @@ public class BotGenerator
/// <param name="botTemplate">base bot template to use (e.g. assault/pmcbot)</param>
/// <param name="profile">profile of player generating pscav</param>
/// <returns>BotBase</returns>
public PmcData GeneratePlayerScav(string sessionId, string role, string difficulty, BotType botTemplate, PmcData profile)
public BotBase GeneratePlayerScav(string sessionId, string role, string difficulty, BotType botTemplate, PmcData profile)
{
throw new NotImplementedException();
var bot = GetCloneOfBotBase();
bot.Info.Settings.BotDifficulty = difficulty;
bot.Info.Settings.Role = role;
bot.Info.Side = "Savage";
var botGenDetails = new BotGenerationDetails{
IsPmc = false,
Side = "Savage",
Role = role,
BotRelativeLevelDeltaMax = 0,
BotRelativeLevelDeltaMin = 0,
BotCountToGenerate = 1,
BotDifficulty = difficulty,
IsPlayerScav = true,
};
bot = GenerateBot(sessionId, bot, botTemplate, botGenDetails);
// Sets the name after scav name shown in parentheses
bot.Info.MainProfileNickname = profile.Info.Nickname;
return bot;
}
/// <summary>
@@ -61,7 +97,7 @@ public class BotGenerator
/// <returns>BotBase object</returns>
public BotBase GetCloneOfBotBase()
{
throw new NotImplementedException();
return _cloner.Clone(_databaseService.GetBots().Base);
}
/// <summary>
+1 -1
View File
@@ -100,7 +100,7 @@ public class PlayerScavGenerator
var baseBotNode = ConstructBotBaseTemplate(playerScavKarmaSettings.BotTypeForLoot);
AdjustBotTemplateWithKarmaSpecificSettings(playerScavKarmaSettings, baseBotNode);
var scavData = _botGenerator.GeneratePlayerScav(
var scavData = (PmcData)_botGenerator.GeneratePlayerScav(
sessionID,
playerScavKarmaSettings.BotTypeForLoot.ToLower(),
"easy",
+5 -5
View File
@@ -1,8 +1,8 @@
namespace Core.Models.Enums;
namespace Core.Models.Enums;
public enum SideType
{
PMC,
SAVAGE,
RANDOM
}
Pmc,
Savage,
Random
}
+2 -1
View File
@@ -1,5 +1,6 @@
using System.Text.Json.Serialization;
using Core.Models.Common;
using Core.Models.Enums;
namespace Core.Models.Spt.Bots;
@@ -73,4 +74,4 @@ public class BotGenerationDetails
[JsonPropertyName("allPmcsHaveSameNameAsPlayer")]
public bool? AllPmcsHaveSameNameAsPlayer { get; set; }
}
}
+2 -1
View File
@@ -24,7 +24,8 @@ public class JsonUtil
new EftEnumConverter<SeasonalEventType>(),
new EftEnumConverter<ProfileChangeEventType>(),
new EftEnumConverter<QuestStatusEnum>(),
new EftEnumConverter<QuestRewardType>()
new EftEnumConverter<QuestRewardType>(),
new EftEnumConverter<SideType>()
}
};
private static readonly JsonSerializerOptions jsonSerializerOptionsIndented = new(jsonSerializerOptionsNoIndent)