Knowledge UI (#779)

* knowledge button in HUD

* ui controller

* bugfixes

* finish

* all-knowing ghosts

* Create knowledge-ui.ftl
This commit is contained in:
Ed
2025-01-18 14:43:11 +03:00
committed by GitHub
parent 734d12cfac
commit 68ab77d4d4
17 changed files with 308 additions and 1 deletions

View File

@@ -38,6 +38,8 @@ public sealed partial class CP14KnowledgeSystem : SharedCP14KnowledgeSystem
SubscribeLocalEvent<CP14KnowledgeStorageComponent, GetVerbsEvent<Verb>>(AddKnowledgeAdminVerb);
SubscribeLocalEvent<CP14KnowledgeLearningSourceComponent, GetVerbsEvent<Verb>>(AddKnowledgeLearningVerb);
SubscribeLocalEvent<CP14KnowledgeStorageComponent, CP14KnowledgeLearnDoAfterEvent>(KnowledgeLearnedEvent);
SubscribeNetworkEvent<RequestKnowledgeInfoEvent>(OnRequestKnowledgeInfoEvent);
}
private void KnowledgeLearnedEvent(Entity<CP14KnowledgeStorageComponent> ent, ref CP14KnowledgeLearnDoAfterEvent args)
@@ -120,7 +122,7 @@ public sealed partial class CP14KnowledgeSystem : SharedCP14KnowledgeSystem
Category = VerbCategory.CP14KnowledgeAdd,
Act = () =>
{
TryLearnKnowledge(ent, knowledge, false);
TryLearnKnowledge(ent, knowledge, true);
},
Impact = LogImpact.High,
});
@@ -251,4 +253,17 @@ public sealed partial class CP14KnowledgeSystem : SharedCP14KnowledgeSystem
$"{EntityManager.ToPrettyString(uid):player} forgot knowledge: {Loc.GetString(indexedKnowledge.Name)}");
return true;
}
private void OnRequestKnowledgeInfoEvent(RequestKnowledgeInfoEvent msg, EntitySessionEventArgs args)
{
if (!args.SenderSession.AttachedEntity.HasValue || args.SenderSession.AttachedEntity != GetEntity(msg.NetEntity))
return;
var entity = args.SenderSession.AttachedEntity.Value;
if (!TryComp<CP14KnowledgeStorageComponent>(entity, out var knowledgeComp))
return;
RaiseNetworkEvent(new CP14KnowledgeInfoEvent(GetNetEntity(entity),knowledgeComp.Knowledges), args.SenderSession);
}
}