From 3ba8dad4a213446ca7419c195322a52ef4a5c6ac Mon Sep 17 00:00:00 2001 From: mrtoine Date: Sat, 11 Oct 2025 17:50:11 +0200 Subject: [PATCH] =?UTF-8?q?Les=20events=20se=20d=C3=A9roule=20bien=20comme?= =?UTF-8?q?=20il=20faut.=20Les=20aventuriers=20sont=20bien=20repasser=20en?= =?UTF-8?q?=20IsAvailable=20=3D=20true=20quand=20une=20qu=C3=AAte=20se=20t?= =?UTF-8?q?ermine.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .DS_Store | Bin 10244 -> 10244 bytes Assets/Settings/PC_RPAsset.asset | 5 + ...niversalRenderPipelineGlobalSettings.asset | 44 ++++--- Assets/_/Features/Core/Runtime/GameManager.cs | 6 +- Assets/_/Features/Decor/Runtime/QuestSign.cs | 2 - .../Quests/Runtime/Events/QuestEvent.cs | 6 +- .../_/Features/Quests/Runtime/QuestClass.cs | 40 +++++- .../_/Features/Quests/Runtime/QuestManager.cs | 116 +++++++++++++++--- Assets/_/Features/Tests/Editor.meta | 3 + .../Tests/Editor/QuestManagerTests.cs | 99 +++++++++++++++ .../Tests/Editor/QuestManagerTests.cs.meta | 3 + .../UI/Runtime/Quests/InfoQuestPanel.cs | 1 - .../Features/UI/Runtime/Quests/QuestCardUI.cs | 23 ++-- .../Features/UI/Runtime/Quests/QuestsPanel.cs | 1 - Assets/_/Levels/Game.unity | 14 +-- ProjectSettings/ProjectSettings.asset | 15 ++- 16 files changed, 310 insertions(+), 68 deletions(-) create mode 100644 Assets/_/Features/Tests/Editor.meta create mode 100644 Assets/_/Features/Tests/Editor/QuestManagerTests.cs create mode 100644 Assets/_/Features/Tests/Editor/QuestManagerTests.cs.meta diff --git a/.DS_Store b/.DS_Store index 795867bde36a3f241e7f5ba2170a8098b5178c7f..ac0b85d7001450c6d96ff06451e1bba58c147941 100644 GIT binary patch delta 157 zcmZn(XbG6$&uF(XU^hRb-DVzvSIl8K>4w3{`MCuQ2*AeR#8AqR$&ka4!cd%>@8Xh_ zlb-~X=1_XRYKpJ#aYrB8xDf$E`FV6%3zN9N2 delta 379 zcmZn(XbG6$&*-u-U^hRb%Vr*dSIlvqIr+&+Ir&Kp3=9H5ydH?>{Raaei-CcS!HJ=i zA(J78A%&qhC*3eOIX|}mB*E#n;S0KaZoZ2P)GUq%cHYb1$WPV~kz<20eMICGIDJ5R zQB5riF3QWv&r1i2Gj7fkDQD!AWN>H5XGmnonS4Rql5zd!Yog9f-qH-YK*2m9j%P?_ zC<00sGh{I6F{A=rmdIcVgeE|22;}QA7yxk=P#&lr&3{EeTgo=`NrW;Bi!p=%73VS( z06mw;Py*68IYCfUQ5NWqcSu1Xj;?NUf~d~q4U(*r`=wPUKadpO+%Nr(X*0XRFP6(GameManager.Instance.Profile); - Info($"Player : {_player.GuildName}"); - QuestManager.Instance.NotifyAvailableQuestsUpdated(_player.GuildLevel); UpdateParchmentState(); } diff --git a/Assets/_/Features/Quests/Runtime/Events/QuestEvent.cs b/Assets/_/Features/Quests/Runtime/Events/QuestEvent.cs index 9db97278..cfde39f1 100644 --- a/Assets/_/Features/Quests/Runtime/Events/QuestEvent.cs +++ b/Assets/_/Features/Quests/Runtime/Events/QuestEvent.cs @@ -74,7 +74,11 @@ namespace Quests.Runtime case TargetingType.AllHeroes: return assignedAdventurers; case TargetingType.RandomHero: - return new List { assignedAdventurers[UnityEngine.Random.Range(0, assignedAdventurers.Count)] }; + if (assignedAdventurers == null || assignedAdventurers.Count == 0) + return new List(); + int count = assignedAdventurers.Count; + int idx = UnityEngine.Random.Range(0, count); + return new List { assignedAdventurers[idx] }; case TargetingType.LowestHp: return assignedAdventurers .OrderBy(adventurer => adventurer.Health) diff --git a/Assets/_/Features/Quests/Runtime/QuestClass.cs b/Assets/_/Features/Quests/Runtime/QuestClass.cs index 0357f053..603a277f 100644 --- a/Assets/_/Features/Quests/Runtime/QuestClass.cs +++ b/Assets/_/Features/Quests/Runtime/QuestClass.cs @@ -56,7 +56,7 @@ namespace Quests.Runtime public List Rewards { get { return _rewards; } - set { _rewards = new List(); } + set { _rewards = value ?? new List(); } } public QuestStateEnum State @@ -215,12 +215,35 @@ namespace Quests.Runtime public static AdventurerClass GetOneAdventurerFromId(Guid adventurerId) { - if (GameManager.Instance.Fact.GetFact>("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; } - List currentAdventurers = GameManager.Instance.Fact.GetFact>("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>("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 GetIdFromAdventurers(List adventurers) @@ -235,8 +258,13 @@ namespace Quests.Runtime public static Guid GetOneIdFromAdventurer(AdventurerClass adventurer) { - List currentAdventurers = GameManager.Instance.Fact.GetFact>("my_adventurers"); - return currentAdventurers.Find(adv => adv.ID == adventurer.ID).ID; + if (adventurer == null || GameManager.Instance == null || GameManager.Instance.Fact == null) + { + return Guid.Empty; + } + var currentAdventurers = GameManager.Instance.Fact.GetFact>("my_adventurers"); + var adv = currentAdventurers?.Find(a => a != null && a.ID == adventurer.ID); + return adv != null ? adv.ID : Guid.Empty; } #endregion diff --git a/Assets/_/Features/Quests/Runtime/QuestManager.cs b/Assets/_/Features/Quests/Runtime/QuestManager.cs index 08ec586f..18ca2ef0 100644 --- a/Assets/_/Features/Quests/Runtime/QuestManager.cs +++ b/Assets/_/Features/Quests/Runtime/QuestManager.cs @@ -45,11 +45,33 @@ namespace Quests.Runtime return; } Instance = this; + if (_activeEvents == null) _activeEvents = new List(); + } + + void OnEnable() + { + GameManager.OnTimeAdvanced += CheckMissionsProgress; + } + + void OnDisable() + { + GameManager.OnTimeAdvanced -= CheckMissionsProgress; } 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(); + } // Ensure quest lists are initialized to avoid null issues in consumers if (_activeQuests == null) _activeQuests = new List(); @@ -112,8 +134,7 @@ namespace Quests.Runtime public QuestManager() { - _activeEvents = new List(); - GameManager.OnTimeAdvanced += CheckMissionsProgress; + // Unity will call constructor before Awake; avoid subscribing here. } #endregion @@ -166,7 +187,16 @@ namespace Quests.Runtime { QuestClass quest = GetQuestById(questId); - List events = GetFact>>("events_quests_history")[questId]; + var dict = GetFact>>("events_quests_history"); + List events = null; + if (dict != null && dict.TryGetValue(questId, out var history)) + { + events = history; + } + else + { + events = new List(); + } return new QuestSummary(quest, events); } @@ -185,8 +215,8 @@ namespace Quests.Runtime /// public bool IsQuestCompleted(string questName) { - return ActiveQuests != null - && ActiveQuests.Any(q => q.Name == questName); + return CompletedQuests != null + && CompletedQuests.Any(q => q.Name == questName); } /// @@ -195,11 +225,20 @@ namespace Quests.Runtime public List ResolveQuestsList(List questsFromSave) { List quests = new List(); - 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; - 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(saved.AssignedAdventurersID); + + quests.Add(rebuilt); } return quests; } @@ -237,6 +276,18 @@ namespace Quests.Runtime quest.AssignedAdventurersID = new List(); quest.AssignedAdventurersID.Add(adventurer.ID); } + + // Synchroniser la sauvegarde de la quête avec les aventuriers assignés + var saveQuests = GetFact>("accepted_quests"); + if (saveQuests != null) + { + var saveQuest = saveQuests.FirstOrDefault(q => q.ID == quest.ID); + if (saveQuest != null) + { + saveQuest.AssignedAdventurersID = new List(quest.AssignedAdventurersID); + } + SaveFacts(); + } } /// @@ -277,11 +328,26 @@ namespace Quests.Runtime /// void ReleaseAdventurers(List team) { + bool anyChanged = false; foreach (var adventurerId in team) { AdventurerClass adventurer = QuestClass.GetOneAdventurerFromId(adventurerId); - if (adventurer != null) + if (adventurer == null) + { + Info($"Aventurer {adventurerId} introuvable"); + continue; + } + Info($"{adventurer.Name} est dans la team avec le status dispo : {adventurer.IsAvailable}"); + if (adventurer != null && adventurer.IsAvailable == false) + { adventurer.IsAvailable = true; + anyChanged = true; + } + } + if (anyChanged) + { + Info("Comme les données on changées, on les sauvegarde."); + SaveFacts(); } } @@ -318,7 +384,8 @@ namespace Quests.Runtime void CheckMissionsProgress(int currentSeconds) { if(_activeQuests == null) return; - + + var questsToComplete = new List(); var activeQuests = _activeQuests.Where(q => q.State == QuestStateEnum.InProgress).ToList(); @@ -344,14 +411,23 @@ namespace Quests.Runtime /// void CheckQuestEvents(QuestClass quest, int currentSeconds) { + if (quest?.ActiveEvents == null || quest.TriggeredEventsDescriptionKeys == null) + return; + foreach (var questEvent in quest.ActiveEvents) { + if (questEvent == null) continue; if (quest.TriggeredEventsDescriptionKeys.Contains(questEvent.DescriptionKey)) continue; + // Skip malformed time windows + if (questEvent.MinTimeTrigger > questEvent.MaxTimeTrigger) + continue; + 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); quest.TriggeredEventsDescriptionKeys.Add(questEvent.DescriptionKey); @@ -371,16 +447,22 @@ namespace Quests.Runtime var targets = questEvent.GetTargets(quest.AssignedAdventurersID); ApplyEffect(questEvent.Effects, targets); - Dictionary> events = GetFact>>("events_quests_history"); - - if(!events.ContainsKey(quest.ID)) + var eventsDict = GetFact>>("events_quests_history"); + if (eventsDict == null) { - events.Add(quest.ID, new List()); + eventsDict = new Dictionary>(); + SetFact("events_quests_history", eventsDict, FactPersistence.Persistent); + } + + if(!eventsDict.ContainsKey(quest.ID)) + { + eventsDict.Add(quest.ID, new List()); } QuestEventLog questEventLog = new QuestEventLog(_snapTime, questEvent.Id); - events[quest.ID].Add(questEventLog); + eventsDict[quest.ID].Add(questEventLog); + if (_activeEvents == null) _activeEvents = new List(); _activeEvents.Add(questEvent); SaveFacts(); } diff --git a/Assets/_/Features/Tests/Editor.meta b/Assets/_/Features/Tests/Editor.meta new file mode 100644 index 00000000..9bd96380 --- /dev/null +++ b/Assets/_/Features/Tests/Editor.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: efcd90c5fc4a4d29a9edb30408d27e72 +timeCreated: 1760191011 \ No newline at end of file diff --git a/Assets/_/Features/Tests/Editor/QuestManagerTests.cs b/Assets/_/Features/Tests/Editor/QuestManagerTests.cs new file mode 100644 index 00000000..7ec77042 --- /dev/null +++ b/Assets/_/Features/Tests/Editor/QuestManagerTests.cs @@ -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(); + + // 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(), BaseMonobehaviour.FactPersistence.Normal); + _gameManager.Fact.SetFact("events_quests_history", new Dictionary>(), BaseMonobehaviour.FactPersistence.Normal); + + // Create QuestManager + _qmGO = new GameObject("QuestManager_Test"); + _questManager = _qmGO.AddComponent(); + + // Initialize lists to avoid nulls and isolate from Start() DB usage + _questManager.ActiveQuests = new List(); + _questManager.CompletedQuests = new List(); + _questManager.DisponibleQuests = new List(); + } + + [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(), minLevel: 1) + { + State = QuestStateEnum.InProgress, + StartSeconds = 0, + EndSeconds = 10, + AssignedAdventurersID = new List() + }; + + _questManager.ActiveQuests.Add(quest); + + // Seed facts with the same quest so QuestManager can update saved state + var accepted = new List { 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 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>("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."); + } + } +} diff --git a/Assets/_/Features/Tests/Editor/QuestManagerTests.cs.meta b/Assets/_/Features/Tests/Editor/QuestManagerTests.cs.meta new file mode 100644 index 00000000..c4ddb225 --- /dev/null +++ b/Assets/_/Features/Tests/Editor/QuestManagerTests.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 64e828a55046493c82c79b4ed49e10ba +timeCreated: 1760191011 \ No newline at end of file diff --git a/Assets/_/Features/UI/Runtime/Quests/InfoQuestPanel.cs b/Assets/_/Features/UI/Runtime/Quests/InfoQuestPanel.cs index b6958e6f..6ba47428 100644 --- a/Assets/_/Features/UI/Runtime/Quests/InfoQuestPanel.cs +++ b/Assets/_/Features/UI/Runtime/Quests/InfoQuestPanel.cs @@ -112,7 +112,6 @@ namespace GameUI.Runtime _panelRecap.SetActive(false); break; case QuestStateEnum.InProgress: - Info("La quête est active."); _buttonActivation.SetActive(false); _adventurersOnThisQuestPanel.SetActive(true); _adventurersSelection.SetActive(false); diff --git a/Assets/_/Features/UI/Runtime/Quests/QuestCardUI.cs b/Assets/_/Features/UI/Runtime/Quests/QuestCardUI.cs index 466c6550..377a4c34 100644 --- a/Assets/_/Features/UI/Runtime/Quests/QuestCardUI.cs +++ b/Assets/_/Features/UI/Runtime/Quests/QuestCardUI.cs @@ -60,19 +60,17 @@ namespace GameUI.Runtime // Ensure state order: Disponible -> Accepted _quest.State = QuestStateEnum.Accepted; - // Persist in saved quests list - List savedQuests = GetFact>("accepted_quests"); - savedQuests.Add(_quest); - - // Also add to runtime active quests list so other systems can find it - if (FactExists>("accepted_quests", out _)) + // Persist in saved quests list, ensure it exists + var savedQuests = GetFact>("accepted_quests"); + if (savedQuests == null) { - var acceptedQuests = GetFact>("accepted_quests"); - // Avoid duplicates by GUID - if (!acceptedQuests.Any(q => q.ID == _quest.ID)) - { - acceptedQuests.Add(_quest); - } + savedQuests = new List(); + SetFact("accepted_quests", savedQuests, FactPersistence.Persistent); + } + // Avoid duplicates by GUID + if (!savedQuests.Any(q => q.ID == _quest.ID)) + { + savedQuests.Add(_quest); } SaveFacts(); @@ -83,7 +81,6 @@ namespace GameUI.Runtime QuestManager.Instance.NotifyAvailableQuestsUpdated(player.GuildLevel); // Remove the accepted card from the board - Info($"Quest accepted?: {_quest.Name} : {_quest.State}"); Destroy(gameObject); } diff --git a/Assets/_/Features/UI/Runtime/Quests/QuestsPanel.cs b/Assets/_/Features/UI/Runtime/Quests/QuestsPanel.cs index 0511d61f..bdb7d3af 100644 --- a/Assets/_/Features/UI/Runtime/Quests/QuestsPanel.cs +++ b/Assets/_/Features/UI/Runtime/Quests/QuestsPanel.cs @@ -92,7 +92,6 @@ namespace GameUI.Runtime #endregion - #region privates and protected [SerializeField] GameObject _panel; diff --git a/Assets/_/Levels/Game.unity b/Assets/_/Levels/Game.unity index 3d34044b..48533355 100644 --- a/Assets/_/Levels/Game.unity +++ b/Assets/_/Levels/Game.unity @@ -135,7 +135,7 @@ GameObject: - component: {fileID: 21829260} - component: {fileID: 21829261} m_Layer: 0 - m_Name: QuestInit + m_Name: QuestManager m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -165,11 +165,11 @@ MonoBehaviour: m_GameObject: {fileID: 21829259} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: e8c934d099ac44d6ba1e06e7233c2be1, type: 3} + m_Script: {fileID: 11500000, guid: ae1758b45e06411c99b6177d9b402a19, type: 3} m_Name: - m_EditorClassIdentifier: - m_isVerbose: 0 - _questFactoryDatabase: {fileID: 11400000, guid: e8f120ee188e64915aef36c8454c8f68, type: 2} + m_EditorClassIdentifier: Quests.Runtime::Quests.Runtime.QuestManager + m_isVerbose: 1 + _questDatabase: {fileID: 11400000, guid: e8f120ee188e64915aef36c8454c8f68, type: 2} --- !u!1001 &27914899 PrefabInstance: m_ObjectHideFlags: 0 @@ -2291,7 +2291,7 @@ MonoBehaviour: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 619425342} - m_Enabled: 0 + m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 8309fb5f87214c46a2994daf35aa90a5, type: 3} m_Name: @@ -2304,7 +2304,7 @@ MonoBehaviour: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 619425342} - m_Enabled: 1 + m_Enabled: 0 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: feb5575f76804030a0ae6877ba236d61, type: 3} m_Name: diff --git a/ProjectSettings/ProjectSettings.asset b/ProjectSettings/ProjectSettings.asset index 2117307c..75af3d37 100644 --- a/ProjectSettings/ProjectSettings.asset +++ b/ProjectSettings/ProjectSettings.asset @@ -86,6 +86,7 @@ PlayerSettings: muteOtherAudioSources: 0 Prepare IOS For Recording: 0 Force IOS Speakers When Recording: 0 + audioSpatialExperience: 0 deferSystemGesturesMode: 0 hideHomeButton: 0 submitAnalytics: 1 @@ -132,6 +133,7 @@ PlayerSettings: switchNVNMaxPublicSamplerIDCount: 0 switchMaxWorkerMultiple: 8 switchNVNGraphicsFirmwareMemory: 32 + switchGraphicsJobsSyncAfterKick: 1 vulkanNumSwapchainBuffers: 3 vulkanEnableSetSRGBWrite: 0 vulkanEnablePreTransform: 1 @@ -274,6 +276,9 @@ PlayerSettings: AndroidBuildApkPerCpuArchitecture: 0 AndroidTVCompatibility: 0 AndroidIsGame: 1 + androidAppCategory: 3 + useAndroidAppCategory: 1 + androidAppCategoryOther: AndroidEnableTango: 0 androidEnableBanner: 1 androidUseLowAccuracyLocation: 0 @@ -517,7 +522,10 @@ PlayerSettings: m_Height: 720 m_Kind: 1 m_SubKind: - m_BuildTargetBatching: [] + m_BuildTargetBatching: + - m_BuildTarget: Standalone + m_StaticBatching: 1 + m_DynamicBatching: 0 m_BuildTargetShaderSettings: [] m_BuildTargetGraphicsJobs: [] m_BuildTargetGraphicsJobMode: [] @@ -543,6 +551,7 @@ PlayerSettings: - serializedVersion: 2 m_BuildTarget: Android m_EncodingQuality: 1 + m_BuildTargetGroupHDRCubemapEncodingQuality: [] m_BuildTargetGroupLightmapSettings: [] m_BuildTargetGroupLoadStoreDebugModeSettings: [] m_BuildTargetNormalMapEncoding: @@ -811,12 +820,12 @@ PlayerSettings: webGLMemoryLinearGrowthStep: 16 webGLMemoryGeometricGrowthStep: 0.2 webGLMemoryGeometricGrowthCap: 96 - webGLEnableWebGPU: 0 webGLPowerPreference: 2 webGLWebAssemblyTable: 0 webGLWebAssemblyBigInt: 0 webGLCloseOnQuit: 0 webWasm2023: 0 + webEnableSubmoduleStrippingCompatibility: 0 scriptingDefineSymbols: Android: DOTWEEN EmbeddedLinux: DOTWEEN @@ -946,3 +955,5 @@ PlayerSettings: insecureHttpOption: 0 androidVulkanDenyFilterList: [] androidVulkanAllowFilterList: [] + androidVulkanDeviceFilterListAsset: {fileID: 0} + d3d12DeviceFilterListAsset: {fileID: 0}