mirror of
https://github.com/misternebula/quantum-space-buddies.git
synced 2025-03-11 01:13:47 +00:00
QSBCharacterDialogueTree initial state sync (enough)
This commit is contained in:
parent
ec5e6e9eb8
commit
13865485d9
@ -45,7 +45,7 @@ public class ConversationManager : WorldObjectManager
|
|||||||
QSBWorldSync.Init<QSBCharacterDialogueTree, CharacterDialogueTree>();
|
QSBWorldSync.Init<QSBCharacterDialogueTree, CharacterDialogueTree>();
|
||||||
}
|
}
|
||||||
|
|
||||||
public uint GetPlayerTalkingToTree(CharacterDialogueTree tree) =>
|
public uint GetPlayerTalkingToTree(CharacterDialogueTree tree) =>
|
||||||
QSBPlayerManager.PlayerList.FirstOrDefault(x => x.CurrentCharacterDialogueTree?.AttachedObject == tree)
|
QSBPlayerManager.PlayerList.FirstOrDefault(x => x.CurrentCharacterDialogueTree?.AttachedObject == tree)
|
||||||
?.PlayerId ?? uint.MaxValue;
|
?.PlayerId ?? uint.MaxValue;
|
||||||
|
|
||||||
@ -62,7 +62,7 @@ public class ConversationManager : WorldObjectManager
|
|||||||
new ConversationMessage(ConversationType.CloseCharacter, id).Send();
|
new ConversationMessage(ConversationType.CloseCharacter, id).Send();
|
||||||
|
|
||||||
public void SendConvState(QSBCharacterDialogueTree tree, bool state)
|
public void SendConvState(QSBCharacterDialogueTree tree, bool state)
|
||||||
=> tree.SendMessage(new ConversationStartEndMessage(state));
|
=> tree.SendMessage(new ConversationStartEndMessage(QSBPlayerManager.LocalPlayerId, state));
|
||||||
|
|
||||||
public void DisplayPlayerConversationBox(uint playerId, string text)
|
public void DisplayPlayerConversationBox(uint playerId, string text)
|
||||||
{
|
{
|
||||||
@ -109,4 +109,4 @@ public class ConversationManager : WorldObjectManager
|
|||||||
newBox.SetActive(true);
|
newBox.SetActive(true);
|
||||||
return newBox;
|
return newBox;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -5,21 +5,21 @@ using QSB.Utility;
|
|||||||
|
|
||||||
namespace QSB.ConversationSync.Messages;
|
namespace QSB.ConversationSync.Messages;
|
||||||
|
|
||||||
public class ConversationStartEndMessage : QSBWorldObjectMessage<QSBCharacterDialogueTree, bool>
|
public class ConversationStartEndMessage : QSBWorldObjectMessage<QSBCharacterDialogueTree, (uint playerId, bool start)>
|
||||||
{
|
{
|
||||||
public ConversationStartEndMessage(bool start) : base(start) { }
|
public ConversationStartEndMessage(uint playerId, bool start) : base((playerId, start)) { }
|
||||||
|
|
||||||
public override void OnReceiveRemote()
|
public override void OnReceiveRemote()
|
||||||
{
|
{
|
||||||
if (Data)
|
if (Data.start)
|
||||||
{
|
{
|
||||||
QSBPlayerManager.GetPlayer(From).CurrentCharacterDialogueTree = WorldObject;
|
QSBPlayerManager.GetPlayer(Data.playerId).CurrentCharacterDialogueTree = WorldObject;
|
||||||
WorldObject.AttachedObject.GetInteractVolume().DisableInteraction();
|
WorldObject.AttachedObject.GetInteractVolume().DisableInteraction();
|
||||||
WorldObject.AttachedObject.RaiseEvent(nameof(CharacterDialogueTree.OnStartConversation));
|
WorldObject.AttachedObject.RaiseEvent(nameof(CharacterDialogueTree.OnStartConversation));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
QSBPlayerManager.GetPlayer(From).CurrentCharacterDialogueTree = null;
|
QSBPlayerManager.GetPlayer(Data.playerId).CurrentCharacterDialogueTree = null;
|
||||||
WorldObject.AttachedObject.GetInteractVolume().EnableInteraction();
|
WorldObject.AttachedObject.GetInteractVolume().EnableInteraction();
|
||||||
WorldObject.AttachedObject.RaiseEvent(nameof(CharacterDialogueTree.OnEndConversation));
|
WorldObject.AttachedObject.RaiseEvent(nameof(CharacterDialogueTree.OnEndConversation));
|
||||||
}
|
}
|
||||||
|
@ -1,9 +1,6 @@
|
|||||||
using QSB.WorldSync;
|
using QSB.ConversationSync.Messages;
|
||||||
using System;
|
using QSB.Messaging;
|
||||||
using System.Collections.Generic;
|
using QSB.WorldSync;
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
namespace QSB.ConversationSync.WorldObjects;
|
namespace QSB.ConversationSync.WorldObjects;
|
||||||
|
|
||||||
@ -11,6 +8,11 @@ public class QSBCharacterDialogueTree : WorldObject<CharacterDialogueTree>
|
|||||||
{
|
{
|
||||||
public override void SendInitialState(uint to)
|
public override void SendInitialState(uint to)
|
||||||
{
|
{
|
||||||
// todo : implement this??? does it need it?
|
var playerId = ConversationManager.Instance.GetPlayerTalkingToTree(AttachedObject);
|
||||||
|
if (playerId != uint.MaxValue)
|
||||||
|
{
|
||||||
|
this.SendMessage(new ConversationStartEndMessage(playerId, true) { To = to });
|
||||||
|
}
|
||||||
|
// TODO: maybe also sync the dialogue box and player box?
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user