mirror of
https://github.com/ZDoom/gzdoom.git
synced 2024-11-22 20:21:26 +00:00
76 lines
1.8 KiB
C++
76 lines
1.8 KiB
C++
#ifndef P_CONVERSATION_H
|
|
#define P_CONVERSATION_H 1
|
|
|
|
#include <tarray.h>
|
|
|
|
#include "s_sound.h"
|
|
#include "textures.h"
|
|
|
|
struct FStrifeDialogueReply;
|
|
class FTexture;
|
|
struct FBrokenLines;
|
|
|
|
struct FStrifeDialogueItemCheck
|
|
{
|
|
PClassActor *Item;
|
|
int Amount;
|
|
};
|
|
|
|
// FStrifeDialogueNode holds text an NPC says to the player
|
|
struct FStrifeDialogueNode
|
|
{
|
|
~FStrifeDialogueNode ();
|
|
PClassActor *DropType = nullptr;
|
|
TArray<FStrifeDialogueItemCheck> ItemCheck;
|
|
int ThisNodeNum = 0; // location of this node in StrifeDialogues
|
|
int ItemCheckNode = 0; // index into StrifeDialogues
|
|
FString ThisNodeName = nullptr;
|
|
FString ItemCheckNodeName = nullptr;
|
|
|
|
PClassActor *SpeakerType = nullptr;
|
|
FString SpeakerName;
|
|
FSoundID SpeakerVoice = NO_SOUND;
|
|
FString Backdrop;
|
|
FString Dialogue;
|
|
FString Goodbye; // must init to null for binary scripts to work as intended
|
|
|
|
FStrifeDialogueReply *Children = nullptr;
|
|
FName MenuClassName = NAME_None;
|
|
FString UserData;
|
|
};
|
|
|
|
// FStrifeDialogueReply holds responses the player can give to the NPC
|
|
struct FStrifeDialogueReply
|
|
{
|
|
FStrifeDialogueReply *Next = nullptr;
|
|
PClassActor *GiveType = nullptr;
|
|
int ActionSpecial = 0;
|
|
int Args[5] = {};
|
|
int PrintAmount = 0;
|
|
TArray<FStrifeDialogueItemCheck> ItemCheck;
|
|
TArray<FStrifeDialogueItemCheck> ItemCheckRequire;
|
|
TArray<FStrifeDialogueItemCheck> ItemCheckExclude;
|
|
FString Reply;
|
|
FString QuickYes;
|
|
FString QuickNo;
|
|
FString LogString;
|
|
int NextNode = 0; // index into StrifeDialogues
|
|
int LogNumber = 0;
|
|
FString NextNodeName = nullptr;
|
|
bool NeedsGold = false;
|
|
bool CloseDialog = true;
|
|
};
|
|
|
|
struct MapData;
|
|
|
|
PClassActor *GetStrifeType (int typenum);
|
|
|
|
void P_FreeStrifeConversations ();
|
|
|
|
void P_StartConversation (AActor *npc, AActor *pc, bool facetalker, bool saveangle);
|
|
void P_ResumeConversation ();
|
|
|
|
void P_ConversationCommand (int netcode, int player, uint8_t **stream);
|
|
|
|
|
|
#endif
|