Mise à jour signale du panneau

This commit is contained in:
mrtoine 2025-10-10 09:21:12 +02:00
parent 016c834f21
commit 2370cb670d
31 changed files with 397 additions and 1611 deletions

File diff suppressed because one or more lines are too long

View file

@ -135,4 +135,4 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3}
m_Name:
m_EditorClassIdentifier:
version: 9
version: 10

View file

@ -135,4 +135,4 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3}
m_Name:
m_EditorClassIdentifier:
version: 9
version: 10

View file

@ -134,4 +134,4 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3}
m_Name:
m_EditorClassIdentifier:
version: 9
version: 10

View file

@ -12,7 +12,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3}
m_Name:
m_EditorClassIdentifier:
version: 9
version: 10
--- !u!21 &2100000
Material:
serializedVersion: 8
@ -97,6 +97,7 @@ Material:
m_Offset: {x: 0, y: 0}
m_Ints: []
m_Floats:
- _AddPrecomputedVelocity: 0
- _AlphaClip: 0
- _AlphaToMask: 0
- _Blend: 0
@ -128,6 +129,7 @@ Material:
- _Surface: 0
- _UVSec: 0
- _WorkflowMode: 1
- _XRMotionVectorsPass: 1
- _ZWrite: 1
m_Colors:
- _BaseColor: {r: 1, g: 1, b: 1, a: 1}

View file

@ -12,7 +12,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3}
m_Name:
m_EditorClassIdentifier:
version: 9
version: 10
--- !u!21 &2100000
Material:
serializedVersion: 8

View file

@ -12,7 +12,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3}
m_Name:
m_EditorClassIdentifier:
version: 9
version: 10
--- !u!21 &2100000
Material:
serializedVersion: 8

View file

@ -137,4 +137,4 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3}
m_Name:
m_EditorClassIdentifier:
version: 9
version: 10

View file

@ -12,7 +12,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3}
m_Name:
m_EditorClassIdentifier:
version: 9
version: 10
--- !u!21 &2100000
Material:
serializedVersion: 8

2
Assets/_/Content/Materials/Black.mat Executable file → Normal file
View file

@ -12,7 +12,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3}
m_Name:
m_EditorClassIdentifier:
version: 9
version: 10
--- !u!21 &2100000
Material:
serializedVersion: 8

2
Assets/_/Content/Materials/Blue.mat Executable file → Normal file
View file

@ -12,7 +12,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3}
m_Name:
m_EditorClassIdentifier:
version: 9
version: 10
--- !u!21 &2100000
Material:
serializedVersion: 8

2
Assets/_/Content/Materials/Gray.mat Executable file → Normal file
View file

@ -12,7 +12,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3}
m_Name:
m_EditorClassIdentifier:
version: 9
version: 10
--- !u!21 &2100000
Material:
serializedVersion: 8

2
Assets/_/Content/Materials/Green.mat Executable file → Normal file
View file

@ -12,7 +12,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3}
m_Name:
m_EditorClassIdentifier:
version: 9
version: 10
--- !u!21 &2100000
Material:
serializedVersion: 8

2
Assets/_/Content/Materials/Orange.mat Executable file → Normal file
View file

@ -12,7 +12,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3}
m_Name:
m_EditorClassIdentifier:
version: 9
version: 10
--- !u!21 &2100000
Material:
serializedVersion: 8

2
Assets/_/Content/Materials/Pink.mat Executable file → Normal file
View file

@ -12,7 +12,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3}
m_Name:
m_EditorClassIdentifier:
version: 9
version: 10
--- !u!21 &2100000
Material:
serializedVersion: 8

2
Assets/_/Content/Materials/Purple.mat Executable file → Normal file
View file

@ -12,7 +12,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3}
m_Name:
m_EditorClassIdentifier:
version: 9
version: 10
--- !u!21 &2100000
Material:
serializedVersion: 8

2
Assets/_/Content/Materials/Red.mat Executable file → Normal file
View file

@ -12,7 +12,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3}
m_Name:
m_EditorClassIdentifier:
version: 9
version: 10
--- !u!21 &2100000
Material:
serializedVersion: 8

2
Assets/_/Content/Materials/White.mat Executable file → Normal file
View file

@ -12,7 +12,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3}
m_Name:
m_EditorClassIdentifier:
version: 9
version: 10
--- !u!21 &2100000
Material:
serializedVersion: 8

2
Assets/_/Content/Materials/Yellow.mat Executable file → Normal file
View file

@ -12,7 +12,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3}
m_Name:
m_EditorClassIdentifier:
version: 9
version: 10
--- !u!21 &2100000
Material:
serializedVersion: 8

View file

@ -5,7 +5,8 @@
"GUID:2ca720bbf8aa349608caa5ce4acaa603",
"GUID:d01b71ecbce444a299cc1623f29e9d35",
"GUID:4a640bb60ad60478bba0cc41f9b80929",
"GUID:f5d0434d9e8c34eb1a16f4c57b172b85"
"GUID:f5d0434d9e8c34eb1a16f4c57b172b85",
"GUID:239153993e9574192a1980e14075369e"
],
"includePlatforms": [],
"excludePlatforms": [],

View file

@ -1,4 +1,11 @@
using System;
using System.Collections.Generic;
using System.Linq;
using Core.Runtime;
using EventSystem.Runtime;
using Player.Runtime;
using Quests.Runtime;
using UnityEngine;
namespace Decor.Runtime
{
@ -6,14 +13,63 @@ namespace Decor.Runtime
{
#region private & protected
[SerializeField] GameObject _parchment;
int _quests;
PlayerClass _player;
#endregion
#region Unity API
void Awake()
{
_player = GetFact<PlayerClass>(GameManager.Instance.Profile);
}
void Start()
{
//UpdateParchmentState();
Info($"<color=yellow>Il y a actuellement {_quests} quêtes affichés sur le Panneau</color>");
}
void Update()
{
UpdateParchmentState();
}
#endregion
#region Main Methods
//
#endregion
#region Utils
void UpdateParchmentState()
{
List<QuestTemplate> availableTemplates = QuestManager.Instance.GetAvailableQuests(_player.GuildLevel);
var allPossibleQuests = QuestManager.Instance.GetAvailableQuests(_player.GuildLevel);
// 2. Quêtes déjà démarrées (actives OU complétées)
var startedQuests = QuestManager.Instance.ActiveQuests
.Concat(QuestManager.Instance.CompletedQuests)
.ToList();
// 3. Quêtes vraiment disponibles = possibles - déjà démarrées
bool hasTrulyAvailableQuests = allPossibleQuests
.Any(possibleQuest =>
!startedQuests.Any(startedQuest =>
startedQuest.Name == possibleQuest.data.Name
)
);
_parchment.SetActive(hasTrulyAvailableQuests);
Info($"<color=green>Il y a actuellement {hasTrulyAvailableQuests} disponibles</color>");
}
#endregion
}
}

View file

@ -7,6 +7,7 @@ namespace EventSystem.Runtime
{
public static event Action<QuestClass> OnInfoQuestPanel;
public static event Action OnRefresh;
public static event Action OnNewQuestRegistered;
public static void RaiseInfoQuestPanel(QuestClass questClass)
{
@ -17,5 +18,10 @@ namespace EventSystem.Runtime
{
OnRefresh?.Invoke();
}
public static void RaiseNewQuestRegistered()
{
OnNewQuestRegistered?.Invoke();
}
}
}

View file

@ -23,6 +23,7 @@ namespace Quests.Runtime
public static event Action<QuestClass> OnQuestCompleted;
public static event Action<QuestEvent> OnEventReceived;
public static event Action<QuestClass> OnEventFromQuest;
public static event Action<List<QuestTemplate>> OnAvailableQuestsUpdated;
#endregion
@ -155,6 +156,23 @@ namespace Quests.Runtime
return quests;
}
public List<QuestTemplate> GetAvailableQuests(int level)
{
var factory = _questDatabase.GetFactoryForLevel(level);
if (factory == null)
return new List<QuestTemplate>();
return factory.questTemplates
.Where(q => q.data.MinLevel <= level)
.ToList();
}
public void NotifyAvailableQuestsUpdated(int level)
{
var available = GetAvailableQuests(level);
OnAvailableQuestsUpdated?.Invoke(available);
}
#endregion
#region Methods

View file

@ -1,4 +1,3 @@
using System;
using System.Collections.Generic;
using System.Linq;
using Core.Runtime;
@ -12,74 +11,42 @@ namespace GameUI.Runtime
{
public class QuestsBoardPanel : BaseMonobehaviour
{
#region Publics
public QuestFactoryDatabase _questFactoryDatabase;
#endregion
#region Unity API
void OnEnable()
{
_player = GetFact<PlayerClass>(GameManager.Instance.Profile);
QuestManager.OnAvailableQuestsUpdated += OnAvailableQuestsChanged;
}
/*void Start()
void OnDisable()
{
foreach (var txt in GetComponentsInChildren<TMP_Text>())
{
txt.text = LocalizationSystem.Instance.GetLocalizedText(txt.text);
}
QuestManager.OnAvailableQuestsUpdated -= OnAvailableQuestsChanged;
}
var factory = _questFactoryDatabase.GetFactoryForLevel(_player.GuildLevel);
if (factory != null)
{
var availableTemplates = factory.questTemplates
.Where(q => q.data.MinLevel <= _player.GuildLevel)
.ToList();
List<QuestClass> acceptedQuestNames = new List<QuestClass>();
if (FactExists<List<QuestClass>>("quests", out _))
{
acceptedQuestNames = GetFact<List<QuestClass>>("quests");
}
foreach (var quest in availableTemplates)
{
if (acceptedQuestNames != null && acceptedQuestNames.Any(q => q.ID == quest.data.ID))
continue;
DisplayCard(quest);
}
}
}*/
void Start()
{
InitializeLocalization();
List<QuestTemplate> availableTemplates = GetAvailableQuests();
List<QuestClass> acceptedQuests = GetAcceptedQuests();
List<QuestTemplate> availableTemplates = QuestManager.Instance.GetAvailableQuests(_player.GuildLevel);
List<QuestClass> acceptedQuests = QuestManager.Instance.ActiveQuests;
DisplayAvailableQuests(availableTemplates, acceptedQuests);
}
#endregion
#region Main Methods
//
#region Public
void OnAvailableQuestsChanged(List<QuestTemplate> availableTemplates)
{
List<QuestClass> acceptedQuests = QuestManager.Instance.ActiveQuests;
ClearPanel();
DisplayAvailableQuests(availableTemplates, acceptedQuests);
}
#endregion
#region Utils
void InitializeLocalization()
{
foreach (var txt in GetComponentsInChildren<TMP_Text>())
@ -88,51 +55,41 @@ namespace GameUI.Runtime
}
}
List<QuestTemplate> GetAvailableQuests()
void ClearPanel()
{
var factory = _questFactoryDatabase.GetFactoryForLevel(_player.GuildLevel);
if (factory == null)
return new List<QuestTemplate>();
return factory.questTemplates
.Where(q => q.data.MinLevel <= _player.GuildLevel)
.ToList();
}
List<QuestClass> GetAcceptedQuests()
{
if (FactExists<List<QuestClass>>("quests", out _))
foreach (Transform child in _panel.transform)
{
return GetFact<List<QuestClass>>("quests");
Destroy(child.gameObject);
}
return new List<QuestClass>();
}
void DisplayAvailableQuests(List<QuestTemplate> availableTemplates, List<QuestClass> acceptedQuests)
{
foreach(var quest in availableTemplates)
foreach (var quest in availableTemplates)
{
if (acceptedQuests.Any(q => q.Name == quest.data.Name))
{
continue;
}
DisplayCard(quest);
}
}
void DisplayCard(QuestTemplate quest)
{
GameObject GO = Instantiate(_questCardPrefab, _panel.transform);
QuestCardUI card = GO.GetComponent<QuestCardUI>();
card.Setup(quest.ToQuestClass(QuestStateEnum.Disponible));
}
#endregion
#region Privates and Protected
PlayerClass _player;
[SerializeField] GameObject _panel;
[SerializeField] GameObject _questCardPrefab;
#endregion
}
}
}

View file

@ -1304,7 +1304,6 @@ MonoBehaviour:
m_ScreenCoordScaleBias: {x: 0, y: 0, z: 0, w: 0}
m_RequiresDepthTexture: 0
m_RequiresColorTexture: 0
m_Version: 2
m_TaaSettings:
m_Quality: 3
m_FrameInfluence: 0.1
@ -1312,6 +1311,7 @@ MonoBehaviour:
m_MipBias: 0
m_VarianceClampScale: 0.9
m_ContrastAdaptiveSharpening: 0
m_Version: 2
--- !u!114 &330585548
MonoBehaviour:
m_ObjectHideFlags: 0
@ -1641,17 +1641,23 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 474bcb49853aa07438625e644c072ee6, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Version: 3
m_UsePipelineSettings: 1
m_AdditionalLightsShadowResolutionTier: 2
m_LightLayerMask: 1
m_RenderingLayers: 1
m_CustomShadowLayers: 0
m_ShadowLayerMask: 1
m_ShadowRenderingLayers: 1
m_LightCookieSize: {x: 1, y: 1}
m_LightCookieOffset: {x: 0, y: 0}
m_SoftShadowQuality: 1
m_RenderingLayersMask:
serializedVersion: 0
m_Bits: 1
m_ShadowRenderingLayersMask:
serializedVersion: 0
m_Bits: 1
m_Version: 4
m_LightLayerMask: 1
m_ShadowLayerMask: 1
m_RenderingLayers: 1
m_ShadowRenderingLayers: 1
--- !u!1001 &423356076
PrefabInstance:
m_ObjectHideFlags: 0
@ -1828,6 +1834,8 @@ SpriteRenderer:
m_RayTracingAccelStructBuildFlagsOverride: 0
m_RayTracingAccelStructBuildFlags: 1
m_SmallMeshCulling: 1
m_ForceMeshLod: -1
m_MeshLodSelectionBias: 0
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
@ -1849,6 +1857,7 @@ SpriteRenderer:
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_GlobalIlluminationMeshLod: 0
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
@ -3096,6 +3105,7 @@ GameObject:
serializedVersion: 6
m_Component:
- component: {fileID: 896731487}
- component: {fileID: 896731488}
m_Layer: 0
m_Name: PanelQuests
m_TagString: Untagged
@ -3119,8 +3129,54 @@ Transform:
- {fileID: 1678081093}
- {fileID: 677607615}
- {fileID: 113759540}
- {fileID: 905935686}
m_Father: {fileID: 1322594616}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &896731488
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 896731486}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: ee4d7e155702f0836847d55f31276d2f, type: 3}
m_Name:
m_EditorClassIdentifier:
m_isVerbose: 1
_parchment: {fileID: 1814929025}
--- !u!1 &905935685
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 905935686}
m_Layer: 0
m_Name: SignPivot
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &905935686
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 905935685}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 3.63, y: 1.023, z: 4.72}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 896731487}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &933097341
GameObject:
m_ObjectHideFlags: 0
@ -4875,17 +4931,23 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 474bcb49853aa07438625e644c072ee6, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Version: 3
m_UsePipelineSettings: 1
m_AdditionalLightsShadowResolutionTier: 2
m_LightLayerMask: 1
m_RenderingLayers: 1
m_CustomShadowLayers: 0
m_ShadowLayerMask: 1
m_ShadowRenderingLayers: 1
m_LightCookieSize: {x: 1, y: 1}
m_LightCookieOffset: {x: 0, y: 0}
m_SoftShadowQuality: 0
m_RenderingLayersMask:
serializedVersion: 0
m_Bits: 1
m_ShadowRenderingLayersMask:
serializedVersion: 0
m_Bits: 1
m_Version: 4
m_LightLayerMask: 1
m_ShadowLayerMask: 1
m_RenderingLayers: 1
m_ShadowRenderingLayers: 1
--- !u!108 &1430254894
Light:
m_ObjectHideFlags: 0
@ -6033,6 +6095,11 @@ Transform:
m_CorrespondingSourceObject: {fileID: 8496603833583034419, guid: 726cae9a9eadce34cb37f945e9c37432, type: 3}
m_PrefabInstance: {fileID: 1803305437}
m_PrefabAsset: {fileID: 0}
--- !u!1 &1814929025 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 7152422665204371551, guid: 7ae78b65dda913b46935796ea11ff6fd, type: 3}
m_PrefabInstance: {fileID: 53848034}
m_PrefabAsset: {fileID: 0}
--- !u!1001 &1840731359
PrefabInstance:
m_ObjectHideFlags: 0
@ -6289,7 +6356,6 @@ MonoBehaviour:
m_ScreenCoordScaleBias: {x: 0, y: 0, z: 0, w: 0}
m_RequiresDepthTexture: 0
m_RequiresColorTexture: 0
m_Version: 2
m_TaaSettings:
m_Quality: 3
m_FrameInfluence: 0.1
@ -6297,6 +6363,7 @@ MonoBehaviour:
m_MipBias: 0
m_VarianceClampScale: 0.9
m_ContrastAdaptiveSharpening: 0
m_Version: 2
--- !u!81 &1929299934
AudioListener:
m_ObjectHideFlags: 0