Les events se déroule bien comme il faut. Les aventuriers sont bien repasser en IsAvailable = true quand une quête se termine.
This commit is contained in:
parent
838f91ede7
commit
3ba8dad4a2
16 changed files with 310 additions and 68 deletions
BIN
.DS_Store
vendored
BIN
.DS_Store
vendored
Binary file not shown.
|
|
@ -53,6 +53,7 @@ MonoBehaviour:
|
||||||
m_AdditionalLightsShadowResolutionTierHigh: 1024
|
m_AdditionalLightsShadowResolutionTierHigh: 1024
|
||||||
m_ReflectionProbeBlending: 1
|
m_ReflectionProbeBlending: 1
|
||||||
m_ReflectionProbeBoxProjection: 1
|
m_ReflectionProbeBoxProjection: 1
|
||||||
|
m_ReflectionProbeAtlas: 1
|
||||||
m_ShadowDistance: 50
|
m_ShadowDistance: 50
|
||||||
m_ShadowCascadeCount: 4
|
m_ShadowCascadeCount: 4
|
||||||
m_Cascade2Split: 0.25
|
m_Cascade2Split: 0.25
|
||||||
|
|
@ -129,6 +130,10 @@ MonoBehaviour:
|
||||||
m_PrefilterScreenCoord: 1
|
m_PrefilterScreenCoord: 1
|
||||||
m_PrefilterNativeRenderPass: 1
|
m_PrefilterNativeRenderPass: 1
|
||||||
m_PrefilterUseLegacyLightmaps: 0
|
m_PrefilterUseLegacyLightmaps: 0
|
||||||
|
m_PrefilterBicubicLightmapSampling: 1
|
||||||
|
m_PrefilterReflectionProbeBlending: 0
|
||||||
|
m_PrefilterReflectionProbeBoxProjection: 0
|
||||||
|
m_PrefilterReflectionProbeAtlas: 0
|
||||||
m_ShaderVariantLogLevel: 0
|
m_ShaderVariantLogLevel: 0
|
||||||
m_ShadowCascades: 0
|
m_ShadowCascades: 0
|
||||||
m_Textures:
|
m_Textures:
|
||||||
|
|
|
||||||
|
|
@ -55,15 +55,29 @@ MonoBehaviour:
|
||||||
- rid: 8712630790384254976
|
- rid: 8712630790384254976
|
||||||
- rid: 3032807696540106752
|
- rid: 3032807696540106752
|
||||||
- rid: 3032807696540106753
|
- rid: 3032807696540106753
|
||||||
- rid: 8483784638438047744
|
- rid: 8483784701748969479
|
||||||
- rid: 8483784638438047745
|
- rid: 8483784701748969480
|
||||||
- rid: 8483784638438047746
|
- rid: 8483784701748969481
|
||||||
- rid: 8483784638438047747
|
- rid: 8483784701748969482
|
||||||
- rid: 8483784638438047748
|
- rid: 8483784701748969483
|
||||||
- rid: 8483784638438047749
|
- rid: 8483784701748969484
|
||||||
- rid: 8483784638438047750
|
- rid: 8483784701748969485
|
||||||
m_RuntimeSettings:
|
m_RuntimeSettings:
|
||||||
m_List: []
|
m_List:
|
||||||
|
- rid: 6852985685364965378
|
||||||
|
- rid: 6852985685364965379
|
||||||
|
- rid: 6852985685364965380
|
||||||
|
- rid: 6852985685364965381
|
||||||
|
- rid: 6852985685364965384
|
||||||
|
- rid: 6852985685364965385
|
||||||
|
- rid: 6852985685364965392
|
||||||
|
- rid: 6852985685364965394
|
||||||
|
- rid: 8712630790384254976
|
||||||
|
- rid: 3032807696540106752
|
||||||
|
- rid: 8483784701748969480
|
||||||
|
- rid: 8483784701748969481
|
||||||
|
- rid: 8483784701748969484
|
||||||
|
- rid: 8483784701748969485
|
||||||
m_AssetVersion: 8
|
m_AssetVersion: 8
|
||||||
m_ObsoleteDefaultVolumeProfile: {fileID: 0}
|
m_ObsoleteDefaultVolumeProfile: {fileID: 0}
|
||||||
m_RenderingLayerNames:
|
m_RenderingLayerNames:
|
||||||
|
|
@ -263,7 +277,7 @@ MonoBehaviour:
|
||||||
m_version: 0
|
m_version: 0
|
||||||
m_EnableCompilationCaching: 1
|
m_EnableCompilationCaching: 1
|
||||||
m_EnableValidityChecks: 1
|
m_EnableValidityChecks: 1
|
||||||
- rid: 8483784638438047744
|
- rid: 8483784701748969479
|
||||||
type: {class: PostProcessData/ShaderResources, ns: UnityEngine.Rendering.Universal, asm: Unity.RenderPipelines.Universal.Runtime}
|
type: {class: PostProcessData/ShaderResources, ns: UnityEngine.Rendering.Universal, asm: Unity.RenderPipelines.Universal.Runtime}
|
||||||
data:
|
data:
|
||||||
stopNanPS: {fileID: 4800000, guid: 1121bb4e615ca3c48b214e79e841e823, type: 3}
|
stopNanPS: {fileID: 4800000, guid: 1121bb4e615ca3c48b214e79e841e823, type: 3}
|
||||||
|
|
@ -283,12 +297,12 @@ MonoBehaviour:
|
||||||
uberPostPS: {fileID: 4800000, guid: e7857e9d0c934dc4f83f270f8447b006, type: 3}
|
uberPostPS: {fileID: 4800000, guid: e7857e9d0c934dc4f83f270f8447b006, type: 3}
|
||||||
finalPostPassPS: {fileID: 4800000, guid: c49e63ed1bbcb334780a3bd19dfed403, type: 3}
|
finalPostPassPS: {fileID: 4800000, guid: c49e63ed1bbcb334780a3bd19dfed403, type: 3}
|
||||||
m_ShaderResourcesVersion: 0
|
m_ShaderResourcesVersion: 0
|
||||||
- rid: 8483784638438047745
|
- rid: 8483784701748969480
|
||||||
type: {class: ScreenSpaceAmbientOcclusionPersistentResources, ns: UnityEngine.Rendering.Universal, asm: Unity.RenderPipelines.Universal.Runtime}
|
type: {class: ScreenSpaceAmbientOcclusionPersistentResources, ns: UnityEngine.Rendering.Universal, asm: Unity.RenderPipelines.Universal.Runtime}
|
||||||
data:
|
data:
|
||||||
m_Shader: {fileID: 4800000, guid: 0849e84e3d62649e8882e9d6f056a017, type: 3}
|
m_Shader: {fileID: 4800000, guid: 0849e84e3d62649e8882e9d6f056a017, type: 3}
|
||||||
m_Version: 0
|
m_Version: 0
|
||||||
- rid: 8483784638438047746
|
- rid: 8483784701748969481
|
||||||
type: {class: ScreenSpaceAmbientOcclusionDynamicResources, ns: UnityEngine.Rendering.Universal, asm: Unity.RenderPipelines.Universal.Runtime}
|
type: {class: ScreenSpaceAmbientOcclusionDynamicResources, ns: UnityEngine.Rendering.Universal, asm: Unity.RenderPipelines.Universal.Runtime}
|
||||||
data:
|
data:
|
||||||
m_BlueNoise256Textures:
|
m_BlueNoise256Textures:
|
||||||
|
|
@ -300,7 +314,7 @@ MonoBehaviour:
|
||||||
- {fileID: 2800000, guid: 3302065f671a8450b82c9ddf07426f3a, type: 3}
|
- {fileID: 2800000, guid: 3302065f671a8450b82c9ddf07426f3a, type: 3}
|
||||||
- {fileID: 2800000, guid: 56a77a3e8d64f47b6afe9e3c95cb57d5, type: 3}
|
- {fileID: 2800000, guid: 56a77a3e8d64f47b6afe9e3c95cb57d5, type: 3}
|
||||||
m_Version: 0
|
m_Version: 0
|
||||||
- rid: 8483784638438047747
|
- rid: 8483784701748969482
|
||||||
type: {class: PostProcessData/TextureResources, ns: UnityEngine.Rendering.Universal, asm: Unity.RenderPipelines.Universal.Runtime}
|
type: {class: PostProcessData/TextureResources, ns: UnityEngine.Rendering.Universal, asm: Unity.RenderPipelines.Universal.Runtime}
|
||||||
data:
|
data:
|
||||||
blueNoise16LTex:
|
blueNoise16LTex:
|
||||||
|
|
@ -350,11 +364,11 @@ MonoBehaviour:
|
||||||
smaaAreaTex: {fileID: 2800000, guid: d1f1048909d55cd4fa1126ab998f617e, type: 3}
|
smaaAreaTex: {fileID: 2800000, guid: d1f1048909d55cd4fa1126ab998f617e, type: 3}
|
||||||
smaaSearchTex: {fileID: 2800000, guid: 51eee22c2a633ef4aada830eed57c3fd, type: 3}
|
smaaSearchTex: {fileID: 2800000, guid: 51eee22c2a633ef4aada830eed57c3fd, type: 3}
|
||||||
m_TexturesResourcesVersion: 0
|
m_TexturesResourcesVersion: 0
|
||||||
- rid: 8483784638438047748
|
- rid: 8483784701748969483
|
||||||
type: {class: RenderingDebuggerRuntimeResources, ns: UnityEngine.Rendering, asm: Unity.RenderPipelines.Core.Runtime}
|
type: {class: RenderingDebuggerRuntimeResources, ns: UnityEngine.Rendering, asm: Unity.RenderPipelines.Core.Runtime}
|
||||||
data:
|
data:
|
||||||
m_version: 0
|
m_version: 0
|
||||||
- rid: 8483784638438047749
|
- rid: 8483784701748969484
|
||||||
type: {class: VrsRenderPipelineRuntimeResources, ns: UnityEngine.Rendering, asm: Unity.RenderPipelines.Core.Runtime}
|
type: {class: VrsRenderPipelineRuntimeResources, ns: UnityEngine.Rendering, asm: Unity.RenderPipelines.Core.Runtime}
|
||||||
data:
|
data:
|
||||||
m_TextureComputeShader: {fileID: 7200000, guid: cacb30de6c40c7444bbc78cb0a81fd2a, type: 3}
|
m_TextureComputeShader: {fileID: 7200000, guid: cacb30de6c40c7444bbc78cb0a81fd2a, type: 3}
|
||||||
|
|
@ -381,7 +395,7 @@ MonoBehaviour:
|
||||||
- {r: 0.5, g: 0, b: 0.5, a: 1}
|
- {r: 0.5, g: 0, b: 0.5, a: 1}
|
||||||
- {r: 0.5, g: 0.5, b: 0.5, a: 1}
|
- {r: 0.5, g: 0.5, b: 0.5, a: 1}
|
||||||
- {r: 0, g: 0, b: 1, a: 1}
|
- {r: 0, g: 0, b: 1, a: 1}
|
||||||
- rid: 8483784638438047750
|
- rid: 8483784701748969485
|
||||||
type: {class: LightmapSamplingSettings, ns: UnityEngine.Rendering, asm: Unity.RenderPipelines.Core.Runtime}
|
type: {class: LightmapSamplingSettings, ns: UnityEngine.Rendering, asm: Unity.RenderPipelines.Core.Runtime}
|
||||||
data:
|
data:
|
||||||
m_Version: 1
|
m_Version: 1
|
||||||
|
|
|
||||||
|
|
@ -26,11 +26,11 @@ namespace Core.Runtime
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
return _fact;
|
return m_gameFacts;
|
||||||
}
|
}
|
||||||
set
|
set
|
||||||
{
|
{
|
||||||
_fact = value;
|
m_gameFacts = value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -135,7 +135,7 @@ namespace Core.Runtime
|
||||||
{
|
{
|
||||||
GeneralSettings settings = new GeneralSettings
|
GeneralSettings settings = new GeneralSettings
|
||||||
{
|
{
|
||||||
Language = EnumLanguage.English,
|
Language = EnumLanguage.French,
|
||||||
};
|
};
|
||||||
SetFact("GeneralSettings", settings, FactPersistence.Persistent);
|
SetFact("GeneralSettings", settings, FactPersistence.Persistent);
|
||||||
SaveFacts("GeneralSettings");
|
SaveFacts("GeneralSettings");
|
||||||
|
|
|
||||||
|
|
@ -30,8 +30,6 @@ namespace Decor.Runtime
|
||||||
void Start()
|
void Start()
|
||||||
{
|
{
|
||||||
_player = GetFact<PlayerClass>(GameManager.Instance.Profile);
|
_player = GetFact<PlayerClass>(GameManager.Instance.Profile);
|
||||||
Info($"Player : {_player.GuildName}");
|
|
||||||
|
|
||||||
QuestManager.Instance.NotifyAvailableQuestsUpdated(_player.GuildLevel);
|
QuestManager.Instance.NotifyAvailableQuestsUpdated(_player.GuildLevel);
|
||||||
UpdateParchmentState();
|
UpdateParchmentState();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -74,7 +74,11 @@ namespace Quests.Runtime
|
||||||
case TargetingType.AllHeroes:
|
case TargetingType.AllHeroes:
|
||||||
return assignedAdventurers;
|
return assignedAdventurers;
|
||||||
case TargetingType.RandomHero:
|
case TargetingType.RandomHero:
|
||||||
return new List<AdventurerClass> { assignedAdventurers[UnityEngine.Random.Range(0, assignedAdventurers.Count)] };
|
if (assignedAdventurers == null || assignedAdventurers.Count == 0)
|
||||||
|
return new List<AdventurerClass>();
|
||||||
|
int count = assignedAdventurers.Count;
|
||||||
|
int idx = UnityEngine.Random.Range(0, count);
|
||||||
|
return new List<AdventurerClass> { assignedAdventurers[idx] };
|
||||||
case TargetingType.LowestHp:
|
case TargetingType.LowestHp:
|
||||||
return assignedAdventurers
|
return assignedAdventurers
|
||||||
.OrderBy(adventurer => adventurer.Health)
|
.OrderBy(adventurer => adventurer.Health)
|
||||||
|
|
|
||||||
|
|
@ -56,7 +56,7 @@ namespace Quests.Runtime
|
||||||
public List<ItemReward> Rewards
|
public List<ItemReward> Rewards
|
||||||
{
|
{
|
||||||
get { return _rewards; }
|
get { return _rewards; }
|
||||||
set { _rewards = new List<ItemReward>(); }
|
set { _rewards = value ?? new List<ItemReward>(); }
|
||||||
}
|
}
|
||||||
|
|
||||||
public QuestStateEnum State
|
public QuestStateEnum State
|
||||||
|
|
@ -215,12 +215,35 @@ namespace Quests.Runtime
|
||||||
|
|
||||||
public static AdventurerClass GetOneAdventurerFromId(Guid adventurerId)
|
public static AdventurerClass GetOneAdventurerFromId(Guid adventurerId)
|
||||||
{
|
{
|
||||||
if (GameManager.Instance.Fact.GetFact<List<AdventurerClass>>("my_adventurers") == null)
|
// Guard against GameManager or Fact system not ready
|
||||||
|
Debug.Log($"ID recherché : {adventurerId}");
|
||||||
|
if (GameManager.Instance == null)
|
||||||
{
|
{
|
||||||
|
Debug.Log("GameManager introuvable ou pas initialisé");
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
List<AdventurerClass> currentAdventurers = GameManager.Instance.Fact.GetFact<List<AdventurerClass>>("my_adventurers");
|
|
||||||
return currentAdventurers.Find(adventurer => adventurer.ID == adventurerId);
|
if (GameManager.Instance.Fact == null)
|
||||||
|
{
|
||||||
|
Debug.Log("Fact introuvable ou null");
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
var list = GameManager.Instance.Fact.GetFact<List<AdventurerClass>>("my_adventurers");
|
||||||
|
if (list == null)
|
||||||
|
{
|
||||||
|
Debug.Log("Liste des aventuriers est null");
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Debug.Log($"Nombre d'Aventuriers : {list.Count}");
|
||||||
|
}
|
||||||
|
|
||||||
|
var adventurer = list.Find(adventurer => adventurer != null && adventurer.ID == adventurerId);
|
||||||
|
Debug.Log($"retourne : {adventurer}");
|
||||||
|
|
||||||
|
return list.Find(adventurer => adventurer != null && adventurer.ID == adventurerId);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static List<Guid> GetIdFromAdventurers(List<AdventurerClass> adventurers)
|
public static List<Guid> GetIdFromAdventurers(List<AdventurerClass> adventurers)
|
||||||
|
|
@ -235,8 +258,13 @@ namespace Quests.Runtime
|
||||||
|
|
||||||
public static Guid GetOneIdFromAdventurer(AdventurerClass adventurer)
|
public static Guid GetOneIdFromAdventurer(AdventurerClass adventurer)
|
||||||
{
|
{
|
||||||
List<AdventurerClass> currentAdventurers = GameManager.Instance.Fact.GetFact<List<AdventurerClass>>("my_adventurers");
|
if (adventurer == null || GameManager.Instance == null || GameManager.Instance.Fact == null)
|
||||||
return currentAdventurers.Find(adv => adv.ID == adventurer.ID).ID;
|
{
|
||||||
|
return Guid.Empty;
|
||||||
|
}
|
||||||
|
var currentAdventurers = GameManager.Instance.Fact.GetFact<List<AdventurerClass>>("my_adventurers");
|
||||||
|
var adv = currentAdventurers?.Find(a => a != null && a.ID == adventurer.ID);
|
||||||
|
return adv != null ? adv.ID : Guid.Empty;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
|
||||||
|
|
@ -45,11 +45,33 @@ namespace Quests.Runtime
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Instance = this;
|
Instance = this;
|
||||||
|
if (_activeEvents == null) _activeEvents = new List<QuestEvent>();
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnEnable()
|
||||||
|
{
|
||||||
|
GameManager.OnTimeAdvanced += CheckMissionsProgress;
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnDisable()
|
||||||
|
{
|
||||||
|
GameManager.OnTimeAdvanced -= CheckMissionsProgress;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Start()
|
void Start()
|
||||||
{
|
{
|
||||||
_disponibleQuests = _questDatabase.GetAll().SelectMany(f => f.questTemplates).Select(t => t.ToQuestClass(QuestStateEnum.Disponible)).ToList();
|
if (_questDatabase != null)
|
||||||
|
{
|
||||||
|
_disponibleQuests = _questDatabase
|
||||||
|
.GetAll()
|
||||||
|
.SelectMany(f => f.questTemplates)
|
||||||
|
.Select(t => t.ToQuestClass(QuestStateEnum.Disponible))
|
||||||
|
.ToList();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
_disponibleQuests = new List<QuestClass>();
|
||||||
|
}
|
||||||
|
|
||||||
// Ensure quest lists are initialized to avoid null issues in consumers
|
// Ensure quest lists are initialized to avoid null issues in consumers
|
||||||
if (_activeQuests == null) _activeQuests = new List<QuestClass>();
|
if (_activeQuests == null) _activeQuests = new List<QuestClass>();
|
||||||
|
|
@ -112,8 +134,7 @@ namespace Quests.Runtime
|
||||||
|
|
||||||
public QuestManager()
|
public QuestManager()
|
||||||
{
|
{
|
||||||
_activeEvents = new List<QuestEvent>();
|
// Unity will call constructor before Awake; avoid subscribing here.
|
||||||
GameManager.OnTimeAdvanced += CheckMissionsProgress;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
@ -166,7 +187,16 @@ namespace Quests.Runtime
|
||||||
{
|
{
|
||||||
QuestClass quest = GetQuestById(questId);
|
QuestClass quest = GetQuestById(questId);
|
||||||
|
|
||||||
List<QuestEventLog> events = GetFact<Dictionary<Guid, List<QuestEventLog>>>("events_quests_history")[questId];
|
var dict = GetFact<Dictionary<Guid, List<QuestEventLog>>>("events_quests_history");
|
||||||
|
List<QuestEventLog> events = null;
|
||||||
|
if (dict != null && dict.TryGetValue(questId, out var history))
|
||||||
|
{
|
||||||
|
events = history;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
events = new List<QuestEventLog>();
|
||||||
|
}
|
||||||
|
|
||||||
return new QuestSummary(quest, events);
|
return new QuestSummary(quest, events);
|
||||||
}
|
}
|
||||||
|
|
@ -185,8 +215,8 @@ namespace Quests.Runtime
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public bool IsQuestCompleted(string questName)
|
public bool IsQuestCompleted(string questName)
|
||||||
{
|
{
|
||||||
return ActiveQuests != null
|
return CompletedQuests != null
|
||||||
&& ActiveQuests.Any(q => q.Name == questName);
|
&& CompletedQuests.Any(q => q.Name == questName);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
@ -195,11 +225,20 @@ namespace Quests.Runtime
|
||||||
public List<QuestClass> ResolveQuestsList(List<QuestClass> questsFromSave)
|
public List<QuestClass> ResolveQuestsList(List<QuestClass> questsFromSave)
|
||||||
{
|
{
|
||||||
List<QuestClass> quests = new List<QuestClass>();
|
List<QuestClass> quests = new List<QuestClass>();
|
||||||
foreach (var quest in questsFromSave)
|
foreach (var saved in questsFromSave)
|
||||||
{
|
{
|
||||||
QuestTemplate template = _questDatabase.GetTemplatesByName(quest.Name);
|
QuestTemplate template = _questDatabase.GetTemplatesByName(saved.Name);
|
||||||
if (template == null) continue;
|
if (template == null) continue;
|
||||||
quests.Add(template.ToQuestClass(quest.State, quest.ID));
|
|
||||||
|
var rebuilt = template.ToQuestClass(saved.State, saved.ID);
|
||||||
|
|
||||||
|
// Restaurer les infos runtime utiles
|
||||||
|
rebuilt.StartSeconds = saved.StartSeconds;
|
||||||
|
rebuilt.EndSeconds = saved.EndSeconds;
|
||||||
|
if (saved.AssignedAdventurersID != null)
|
||||||
|
rebuilt.AssignedAdventurersID = new List<Guid>(saved.AssignedAdventurersID);
|
||||||
|
|
||||||
|
quests.Add(rebuilt);
|
||||||
}
|
}
|
||||||
return quests;
|
return quests;
|
||||||
}
|
}
|
||||||
|
|
@ -237,6 +276,18 @@ namespace Quests.Runtime
|
||||||
quest.AssignedAdventurersID = new List<Guid>();
|
quest.AssignedAdventurersID = new List<Guid>();
|
||||||
quest.AssignedAdventurersID.Add(adventurer.ID);
|
quest.AssignedAdventurersID.Add(adventurer.ID);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Synchroniser la sauvegarde de la quête avec les aventuriers assignés
|
||||||
|
var saveQuests = GetFact<List<QuestClass>>("accepted_quests");
|
||||||
|
if (saveQuests != null)
|
||||||
|
{
|
||||||
|
var saveQuest = saveQuests.FirstOrDefault(q => q.ID == quest.ID);
|
||||||
|
if (saveQuest != null)
|
||||||
|
{
|
||||||
|
saveQuest.AssignedAdventurersID = new List<Guid>(quest.AssignedAdventurersID);
|
||||||
|
}
|
||||||
|
SaveFacts();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
@ -277,11 +328,26 @@ namespace Quests.Runtime
|
||||||
/// </summary>
|
/// </summary>
|
||||||
void ReleaseAdventurers(List<Guid> team)
|
void ReleaseAdventurers(List<Guid> team)
|
||||||
{
|
{
|
||||||
|
bool anyChanged = false;
|
||||||
foreach (var adventurerId in team)
|
foreach (var adventurerId in team)
|
||||||
{
|
{
|
||||||
AdventurerClass adventurer = QuestClass.GetOneAdventurerFromId(adventurerId);
|
AdventurerClass adventurer = QuestClass.GetOneAdventurerFromId(adventurerId);
|
||||||
if (adventurer != null)
|
if (adventurer == null)
|
||||||
|
{
|
||||||
|
Info($"<color=orange>Aventurer {adventurerId} introuvable</color>");
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
Info($"<color=orange>{adventurer.Name} est dans la team avec le status dispo : {adventurer.IsAvailable}</color>");
|
||||||
|
if (adventurer != null && adventurer.IsAvailable == false)
|
||||||
|
{
|
||||||
adventurer.IsAvailable = true;
|
adventurer.IsAvailable = true;
|
||||||
|
anyChanged = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (anyChanged)
|
||||||
|
{
|
||||||
|
Info("<color=cyan>Comme les données on changées, on les sauvegarde.</color>");
|
||||||
|
SaveFacts();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -319,6 +385,7 @@ namespace Quests.Runtime
|
||||||
{
|
{
|
||||||
if(_activeQuests == null) return;
|
if(_activeQuests == null) return;
|
||||||
|
|
||||||
|
|
||||||
var questsToComplete = new List<QuestClass>();
|
var questsToComplete = new List<QuestClass>();
|
||||||
var activeQuests = _activeQuests.Where(q => q.State == QuestStateEnum.InProgress).ToList();
|
var activeQuests = _activeQuests.Where(q => q.State == QuestStateEnum.InProgress).ToList();
|
||||||
|
|
||||||
|
|
@ -344,14 +411,23 @@ namespace Quests.Runtime
|
||||||
/// </summary>
|
/// </summary>
|
||||||
void CheckQuestEvents(QuestClass quest, int currentSeconds)
|
void CheckQuestEvents(QuestClass quest, int currentSeconds)
|
||||||
{
|
{
|
||||||
|
if (quest?.ActiveEvents == null || quest.TriggeredEventsDescriptionKeys == null)
|
||||||
|
return;
|
||||||
|
|
||||||
foreach (var questEvent in quest.ActiveEvents)
|
foreach (var questEvent in quest.ActiveEvents)
|
||||||
{
|
{
|
||||||
|
if (questEvent == null) continue;
|
||||||
if (quest.TriggeredEventsDescriptionKeys.Contains(questEvent.DescriptionKey))
|
if (quest.TriggeredEventsDescriptionKeys.Contains(questEvent.DescriptionKey))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
// Skip malformed time windows
|
||||||
|
if (questEvent.MinTimeTrigger > questEvent.MaxTimeTrigger)
|
||||||
|
continue;
|
||||||
|
|
||||||
if (_snapTime >= questEvent.MinTimeTrigger && _snapTime <= questEvent.MaxTimeTrigger)
|
if (_snapTime >= questEvent.MinTimeTrigger && _snapTime <= questEvent.MaxTimeTrigger)
|
||||||
{
|
{
|
||||||
if (Random.Range(0f, 100f) <= questEvent.PercentTrigger)
|
float percent = Mathf.Clamp(questEvent.PercentTrigger, 0f, 100f);
|
||||||
|
if (Random.Range(0f, 100f) <= percent)
|
||||||
{
|
{
|
||||||
TriggerEvent(questEvent, quest);
|
TriggerEvent(questEvent, quest);
|
||||||
quest.TriggeredEventsDescriptionKeys.Add(questEvent.DescriptionKey);
|
quest.TriggeredEventsDescriptionKeys.Add(questEvent.DescriptionKey);
|
||||||
|
|
@ -371,16 +447,22 @@ namespace Quests.Runtime
|
||||||
|
|
||||||
var targets = questEvent.GetTargets(quest.AssignedAdventurersID);
|
var targets = questEvent.GetTargets(quest.AssignedAdventurersID);
|
||||||
ApplyEffect(questEvent.Effects, targets);
|
ApplyEffect(questEvent.Effects, targets);
|
||||||
Dictionary<Guid, List<QuestEventLog>> events = GetFact<Dictionary<Guid, List<QuestEventLog>>>("events_quests_history");
|
var eventsDict = GetFact<Dictionary<Guid, List<QuestEventLog>>>("events_quests_history");
|
||||||
|
if (eventsDict == null)
|
||||||
if(!events.ContainsKey(quest.ID))
|
|
||||||
{
|
{
|
||||||
events.Add(quest.ID, new List<QuestEventLog>());
|
eventsDict = new Dictionary<Guid, List<QuestEventLog>>();
|
||||||
|
SetFact("events_quests_history", eventsDict, FactPersistence.Persistent);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!eventsDict.ContainsKey(quest.ID))
|
||||||
|
{
|
||||||
|
eventsDict.Add(quest.ID, new List<QuestEventLog>());
|
||||||
}
|
}
|
||||||
|
|
||||||
QuestEventLog questEventLog = new QuestEventLog(_snapTime, questEvent.Id);
|
QuestEventLog questEventLog = new QuestEventLog(_snapTime, questEvent.Id);
|
||||||
|
|
||||||
events[quest.ID].Add(questEventLog);
|
eventsDict[quest.ID].Add(questEventLog);
|
||||||
|
if (_activeEvents == null) _activeEvents = new List<QuestEvent>();
|
||||||
_activeEvents.Add(questEvent);
|
_activeEvents.Add(questEvent);
|
||||||
SaveFacts();
|
SaveFacts();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
3
Assets/_/Features/Tests/Editor.meta
Normal file
3
Assets/_/Features/Tests/Editor.meta
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: efcd90c5fc4a4d29a9edb30408d27e72
|
||||||
|
timeCreated: 1760191011
|
||||||
99
Assets/_/Features/Tests/Editor/QuestManagerTests.cs
Normal file
99
Assets/_/Features/Tests/Editor/QuestManagerTests.cs
Normal file
|
|
@ -0,0 +1,99 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using NUnit.Framework;
|
||||||
|
using UnityEngine;
|
||||||
|
using Quests.Runtime;
|
||||||
|
using Core.Runtime;
|
||||||
|
|
||||||
|
namespace GuildTycoon.Tests.Editor
|
||||||
|
{
|
||||||
|
public class QuestManagerTests
|
||||||
|
{
|
||||||
|
private GameObject _gmGO;
|
||||||
|
private GameObject _qmGO;
|
||||||
|
private GameManager _gameManager;
|
||||||
|
private QuestManager _questManager;
|
||||||
|
|
||||||
|
[SetUp]
|
||||||
|
public void SetUp()
|
||||||
|
{
|
||||||
|
// Create and initialize GameManager (Awake will set up facts dictionary)
|
||||||
|
_gmGO = new GameObject("GameManager_Test");
|
||||||
|
_gameManager = _gmGO.AddComponent<GameManager>();
|
||||||
|
|
||||||
|
// Ensure profile and base facts are set
|
||||||
|
_gameManager.Profile = "UnitTestProfile";
|
||||||
|
_gameManager.Fact = new FactDictionnary();
|
||||||
|
GameManager.m_gameFacts = _gameManager.Fact; // ensure BaseMonobehaviour access works
|
||||||
|
|
||||||
|
// Pre-seed facts used by QuestManager
|
||||||
|
_gameManager.Fact.SetFact("accepted_quests", new List<QuestClass>(), BaseMonobehaviour.FactPersistence.Normal);
|
||||||
|
_gameManager.Fact.SetFact("events_quests_history", new Dictionary<Guid, List<QuestEventLog>>(), BaseMonobehaviour.FactPersistence.Normal);
|
||||||
|
|
||||||
|
// Create QuestManager
|
||||||
|
_qmGO = new GameObject("QuestManager_Test");
|
||||||
|
_questManager = _qmGO.AddComponent<QuestManager>();
|
||||||
|
|
||||||
|
// Initialize lists to avoid nulls and isolate from Start() DB usage
|
||||||
|
_questManager.ActiveQuests = new List<QuestClass>();
|
||||||
|
_questManager.CompletedQuests = new List<QuestClass>();
|
||||||
|
_questManager.DisponibleQuests = new List<QuestClass>();
|
||||||
|
}
|
||||||
|
|
||||||
|
[TearDown]
|
||||||
|
public void TearDown()
|
||||||
|
{
|
||||||
|
if (_qmGO != null) UnityEngine.Object.DestroyImmediate(_qmGO);
|
||||||
|
if (_gmGO != null) UnityEngine.Object.DestroyImmediate(_gmGO);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void CompletingQuest_MovesItFromActiveToCompleted_AndUpdatesFacts()
|
||||||
|
{
|
||||||
|
// Arrange: create a simple quest in progress
|
||||||
|
var questId = Guid.NewGuid();
|
||||||
|
var quest = new QuestClass(questId, "Test Quest", "Desc", "Obj", duration: 1, difficulty: QuestDifficultyEnum.Easy, reward: new List<Item.Runtime.ItemReward>(), minLevel: 1)
|
||||||
|
{
|
||||||
|
State = QuestStateEnum.InProgress,
|
||||||
|
StartSeconds = 0,
|
||||||
|
EndSeconds = 10,
|
||||||
|
AssignedAdventurersID = new List<Guid>()
|
||||||
|
};
|
||||||
|
|
||||||
|
_questManager.ActiveQuests.Add(quest);
|
||||||
|
|
||||||
|
// Seed facts with the same quest so QuestManager can update saved state
|
||||||
|
var accepted = new List<QuestClass> { new QuestClass(questId, quest.Name, quest.Description, quest.Objective, quest.Duration, quest.Difficulty, quest.Rewards, quest.MinLevel) { State = QuestStateEnum.InProgress } };
|
||||||
|
_gameManager.Fact.SetFact("accepted_quests", accepted, BaseMonobehaviour.FactPersistence.Normal);
|
||||||
|
|
||||||
|
QuestClass completedRaised = null;
|
||||||
|
Action<QuestClass> handler = q => completedRaised = q;
|
||||||
|
QuestManager.OnQuestCompleted += handler;
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
// Act: Directly complete the quest
|
||||||
|
_questManager.CompleteQuest(quest, quest.AssignedAdventurersID);
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
QuestManager.OnQuestCompleted -= handler; // ensure unsubscribe even if assertion fails
|
||||||
|
}
|
||||||
|
|
||||||
|
// Assert: quest state and lists updated
|
||||||
|
Assert.AreEqual(QuestStateEnum.Completed, quest.State, "La quête devrait être marquée comme complétée.");
|
||||||
|
CollectionAssert.DoesNotContain(_questManager.ActiveQuests, quest, "La quête ne doit plus être dans la liste des quêtes actives.");
|
||||||
|
CollectionAssert.Contains(_questManager.CompletedQuests, quest, "La quête devrait apparaître dans la liste des quêtes complétées.");
|
||||||
|
|
||||||
|
// Facts: accepted_quests should reflect Completed state for the same ID
|
||||||
|
var saved = _gameManager.Fact.GetFact<List<QuestClass>>("accepted_quests");
|
||||||
|
var savedQuest = saved.Find(q => q.ID == questId);
|
||||||
|
Assert.IsNotNull(savedQuest, "La quête devrait être présente dans les faits 'accepted_quests'.");
|
||||||
|
Assert.AreEqual(QuestStateEnum.Completed, savedQuest.State, "L'état sauvegardé de la quête devrait être 'Completed'.");
|
||||||
|
|
||||||
|
// Event notification raised
|
||||||
|
Assert.IsNotNull(completedRaised, "Un événement OnQuestCompleted devrait être déclenché.");
|
||||||
|
Assert.AreEqual(questId, completedRaised.ID, "L'événement devrait concerner la même quête.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
3
Assets/_/Features/Tests/Editor/QuestManagerTests.cs.meta
Normal file
3
Assets/_/Features/Tests/Editor/QuestManagerTests.cs.meta
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 64e828a55046493c82c79b4ed49e10ba
|
||||||
|
timeCreated: 1760191011
|
||||||
|
|
@ -112,7 +112,6 @@ namespace GameUI.Runtime
|
||||||
_panelRecap.SetActive(false);
|
_panelRecap.SetActive(false);
|
||||||
break;
|
break;
|
||||||
case QuestStateEnum.InProgress:
|
case QuestStateEnum.InProgress:
|
||||||
Info("La quête est active.");
|
|
||||||
_buttonActivation.SetActive(false);
|
_buttonActivation.SetActive(false);
|
||||||
_adventurersOnThisQuestPanel.SetActive(true);
|
_adventurersOnThisQuestPanel.SetActive(true);
|
||||||
_adventurersSelection.SetActive(false);
|
_adventurersSelection.SetActive(false);
|
||||||
|
|
|
||||||
|
|
@ -60,19 +60,17 @@ namespace GameUI.Runtime
|
||||||
// Ensure state order: Disponible -> Accepted
|
// Ensure state order: Disponible -> Accepted
|
||||||
_quest.State = QuestStateEnum.Accepted;
|
_quest.State = QuestStateEnum.Accepted;
|
||||||
|
|
||||||
// Persist in saved quests list
|
// Persist in saved quests list, ensure it exists
|
||||||
List<QuestClass> savedQuests = GetFact<List<QuestClass>>("accepted_quests");
|
var savedQuests = GetFact<List<QuestClass>>("accepted_quests");
|
||||||
savedQuests.Add(_quest);
|
if (savedQuests == null)
|
||||||
|
|
||||||
// Also add to runtime active quests list so other systems can find it
|
|
||||||
if (FactExists<List<QuestClass>>("accepted_quests", out _))
|
|
||||||
{
|
{
|
||||||
var acceptedQuests = GetFact<List<QuestClass>>("accepted_quests");
|
savedQuests = new List<QuestClass>();
|
||||||
// Avoid duplicates by GUID
|
SetFact("accepted_quests", savedQuests, FactPersistence.Persistent);
|
||||||
if (!acceptedQuests.Any(q => q.ID == _quest.ID))
|
}
|
||||||
{
|
// Avoid duplicates by GUID
|
||||||
acceptedQuests.Add(_quest);
|
if (!savedQuests.Any(q => q.ID == _quest.ID))
|
||||||
}
|
{
|
||||||
|
savedQuests.Add(_quest);
|
||||||
}
|
}
|
||||||
|
|
||||||
SaveFacts();
|
SaveFacts();
|
||||||
|
|
@ -83,7 +81,6 @@ namespace GameUI.Runtime
|
||||||
QuestManager.Instance.NotifyAvailableQuestsUpdated(player.GuildLevel);
|
QuestManager.Instance.NotifyAvailableQuestsUpdated(player.GuildLevel);
|
||||||
|
|
||||||
// Remove the accepted card from the board
|
// Remove the accepted card from the board
|
||||||
Info($"<color=green>Quest accepted?: {_quest.Name} : {_quest.State}</color>");
|
|
||||||
Destroy(gameObject);
|
Destroy(gameObject);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -92,7 +92,6 @@ namespace GameUI.Runtime
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
#region privates and protected
|
#region privates and protected
|
||||||
|
|
||||||
[SerializeField] GameObject _panel;
|
[SerializeField] GameObject _panel;
|
||||||
|
|
|
||||||
|
|
@ -135,7 +135,7 @@ GameObject:
|
||||||
- component: {fileID: 21829260}
|
- component: {fileID: 21829260}
|
||||||
- component: {fileID: 21829261}
|
- component: {fileID: 21829261}
|
||||||
m_Layer: 0
|
m_Layer: 0
|
||||||
m_Name: QuestInit
|
m_Name: QuestManager
|
||||||
m_TagString: Untagged
|
m_TagString: Untagged
|
||||||
m_Icon: {fileID: 0}
|
m_Icon: {fileID: 0}
|
||||||
m_NavMeshLayer: 0
|
m_NavMeshLayer: 0
|
||||||
|
|
@ -165,11 +165,11 @@ MonoBehaviour:
|
||||||
m_GameObject: {fileID: 21829259}
|
m_GameObject: {fileID: 21829259}
|
||||||
m_Enabled: 1
|
m_Enabled: 1
|
||||||
m_EditorHideFlags: 0
|
m_EditorHideFlags: 0
|
||||||
m_Script: {fileID: 11500000, guid: e8c934d099ac44d6ba1e06e7233c2be1, type: 3}
|
m_Script: {fileID: 11500000, guid: ae1758b45e06411c99b6177d9b402a19, type: 3}
|
||||||
m_Name:
|
m_Name:
|
||||||
m_EditorClassIdentifier:
|
m_EditorClassIdentifier: Quests.Runtime::Quests.Runtime.QuestManager
|
||||||
m_isVerbose: 0
|
m_isVerbose: 1
|
||||||
_questFactoryDatabase: {fileID: 11400000, guid: e8f120ee188e64915aef36c8454c8f68, type: 2}
|
_questDatabase: {fileID: 11400000, guid: e8f120ee188e64915aef36c8454c8f68, type: 2}
|
||||||
--- !u!1001 &27914899
|
--- !u!1001 &27914899
|
||||||
PrefabInstance:
|
PrefabInstance:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
|
|
@ -2291,7 +2291,7 @@ MonoBehaviour:
|
||||||
m_PrefabInstance: {fileID: 0}
|
m_PrefabInstance: {fileID: 0}
|
||||||
m_PrefabAsset: {fileID: 0}
|
m_PrefabAsset: {fileID: 0}
|
||||||
m_GameObject: {fileID: 619425342}
|
m_GameObject: {fileID: 619425342}
|
||||||
m_Enabled: 0
|
m_Enabled: 1
|
||||||
m_EditorHideFlags: 0
|
m_EditorHideFlags: 0
|
||||||
m_Script: {fileID: 11500000, guid: 8309fb5f87214c46a2994daf35aa90a5, type: 3}
|
m_Script: {fileID: 11500000, guid: 8309fb5f87214c46a2994daf35aa90a5, type: 3}
|
||||||
m_Name:
|
m_Name:
|
||||||
|
|
@ -2304,7 +2304,7 @@ MonoBehaviour:
|
||||||
m_PrefabInstance: {fileID: 0}
|
m_PrefabInstance: {fileID: 0}
|
||||||
m_PrefabAsset: {fileID: 0}
|
m_PrefabAsset: {fileID: 0}
|
||||||
m_GameObject: {fileID: 619425342}
|
m_GameObject: {fileID: 619425342}
|
||||||
m_Enabled: 1
|
m_Enabled: 0
|
||||||
m_EditorHideFlags: 0
|
m_EditorHideFlags: 0
|
||||||
m_Script: {fileID: 11500000, guid: feb5575f76804030a0ae6877ba236d61, type: 3}
|
m_Script: {fileID: 11500000, guid: feb5575f76804030a0ae6877ba236d61, type: 3}
|
||||||
m_Name:
|
m_Name:
|
||||||
|
|
|
||||||
|
|
@ -86,6 +86,7 @@ PlayerSettings:
|
||||||
muteOtherAudioSources: 0
|
muteOtherAudioSources: 0
|
||||||
Prepare IOS For Recording: 0
|
Prepare IOS For Recording: 0
|
||||||
Force IOS Speakers When Recording: 0
|
Force IOS Speakers When Recording: 0
|
||||||
|
audioSpatialExperience: 0
|
||||||
deferSystemGesturesMode: 0
|
deferSystemGesturesMode: 0
|
||||||
hideHomeButton: 0
|
hideHomeButton: 0
|
||||||
submitAnalytics: 1
|
submitAnalytics: 1
|
||||||
|
|
@ -132,6 +133,7 @@ PlayerSettings:
|
||||||
switchNVNMaxPublicSamplerIDCount: 0
|
switchNVNMaxPublicSamplerIDCount: 0
|
||||||
switchMaxWorkerMultiple: 8
|
switchMaxWorkerMultiple: 8
|
||||||
switchNVNGraphicsFirmwareMemory: 32
|
switchNVNGraphicsFirmwareMemory: 32
|
||||||
|
switchGraphicsJobsSyncAfterKick: 1
|
||||||
vulkanNumSwapchainBuffers: 3
|
vulkanNumSwapchainBuffers: 3
|
||||||
vulkanEnableSetSRGBWrite: 0
|
vulkanEnableSetSRGBWrite: 0
|
||||||
vulkanEnablePreTransform: 1
|
vulkanEnablePreTransform: 1
|
||||||
|
|
@ -274,6 +276,9 @@ PlayerSettings:
|
||||||
AndroidBuildApkPerCpuArchitecture: 0
|
AndroidBuildApkPerCpuArchitecture: 0
|
||||||
AndroidTVCompatibility: 0
|
AndroidTVCompatibility: 0
|
||||||
AndroidIsGame: 1
|
AndroidIsGame: 1
|
||||||
|
androidAppCategory: 3
|
||||||
|
useAndroidAppCategory: 1
|
||||||
|
androidAppCategoryOther:
|
||||||
AndroidEnableTango: 0
|
AndroidEnableTango: 0
|
||||||
androidEnableBanner: 1
|
androidEnableBanner: 1
|
||||||
androidUseLowAccuracyLocation: 0
|
androidUseLowAccuracyLocation: 0
|
||||||
|
|
@ -517,7 +522,10 @@ PlayerSettings:
|
||||||
m_Height: 720
|
m_Height: 720
|
||||||
m_Kind: 1
|
m_Kind: 1
|
||||||
m_SubKind:
|
m_SubKind:
|
||||||
m_BuildTargetBatching: []
|
m_BuildTargetBatching:
|
||||||
|
- m_BuildTarget: Standalone
|
||||||
|
m_StaticBatching: 1
|
||||||
|
m_DynamicBatching: 0
|
||||||
m_BuildTargetShaderSettings: []
|
m_BuildTargetShaderSettings: []
|
||||||
m_BuildTargetGraphicsJobs: []
|
m_BuildTargetGraphicsJobs: []
|
||||||
m_BuildTargetGraphicsJobMode: []
|
m_BuildTargetGraphicsJobMode: []
|
||||||
|
|
@ -543,6 +551,7 @@ PlayerSettings:
|
||||||
- serializedVersion: 2
|
- serializedVersion: 2
|
||||||
m_BuildTarget: Android
|
m_BuildTarget: Android
|
||||||
m_EncodingQuality: 1
|
m_EncodingQuality: 1
|
||||||
|
m_BuildTargetGroupHDRCubemapEncodingQuality: []
|
||||||
m_BuildTargetGroupLightmapSettings: []
|
m_BuildTargetGroupLightmapSettings: []
|
||||||
m_BuildTargetGroupLoadStoreDebugModeSettings: []
|
m_BuildTargetGroupLoadStoreDebugModeSettings: []
|
||||||
m_BuildTargetNormalMapEncoding:
|
m_BuildTargetNormalMapEncoding:
|
||||||
|
|
@ -811,12 +820,12 @@ PlayerSettings:
|
||||||
webGLMemoryLinearGrowthStep: 16
|
webGLMemoryLinearGrowthStep: 16
|
||||||
webGLMemoryGeometricGrowthStep: 0.2
|
webGLMemoryGeometricGrowthStep: 0.2
|
||||||
webGLMemoryGeometricGrowthCap: 96
|
webGLMemoryGeometricGrowthCap: 96
|
||||||
webGLEnableWebGPU: 0
|
|
||||||
webGLPowerPreference: 2
|
webGLPowerPreference: 2
|
||||||
webGLWebAssemblyTable: 0
|
webGLWebAssemblyTable: 0
|
||||||
webGLWebAssemblyBigInt: 0
|
webGLWebAssemblyBigInt: 0
|
||||||
webGLCloseOnQuit: 0
|
webGLCloseOnQuit: 0
|
||||||
webWasm2023: 0
|
webWasm2023: 0
|
||||||
|
webEnableSubmoduleStrippingCompatibility: 0
|
||||||
scriptingDefineSymbols:
|
scriptingDefineSymbols:
|
||||||
Android: DOTWEEN
|
Android: DOTWEEN
|
||||||
EmbeddedLinux: DOTWEEN
|
EmbeddedLinux: DOTWEEN
|
||||||
|
|
@ -946,3 +955,5 @@ PlayerSettings:
|
||||||
insecureHttpOption: 0
|
insecureHttpOption: 0
|
||||||
androidVulkanDenyFilterList: []
|
androidVulkanDenyFilterList: []
|
||||||
androidVulkanAllowFilterList: []
|
androidVulkanAllowFilterList: []
|
||||||
|
androidVulkanDeviceFilterListAsset: {fileID: 0}
|
||||||
|
d3d12DeviceFilterListAsset: {fileID: 0}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue