Conversation code cleaned up a lot.
This commit is contained in:
@ -7,62 +7,30 @@
|
||||
|
||||
#pragma once
|
||||
#include "../libs.h"
|
||||
#include "../display/animation/queue.h"
|
||||
#include "vntextbox.h"
|
||||
|
||||
#define VN_CONVERSATION_TEXT_COUNT_MAX 32
|
||||
|
||||
// Type Forwarders
|
||||
|
||||
typedef struct _vnconversationtext_t vnconversationtext_t;
|
||||
typedef struct _vnconversation_t vnconversation_t;
|
||||
|
||||
/**
|
||||
* Callback for conversation text events.
|
||||
* @param conversation Conversation this text is attached to.
|
||||
* @param text Text item that is being used in the callback
|
||||
*/
|
||||
typedef void vnconversationcallback_t(vnconversation_t *conversation,
|
||||
vnconversationtext_t *text
|
||||
);
|
||||
typedef struct {
|
||||
/** Pointer to the original conversation */
|
||||
vnconversation_t *conversation;
|
||||
|
||||
typedef struct _vnconversationtext_t {
|
||||
/** Pointer to any custom user data for this text action. */
|
||||
void *data;
|
||||
|
||||
/** Conversation Type to decide what this data is used for */
|
||||
uint8_t type;
|
||||
|
||||
/** Pointer to the string for text to display */
|
||||
/** Storage for pointer to text for text conversation elements */
|
||||
char *text;
|
||||
|
||||
/** Time in seconds to delay if type is delay */
|
||||
float delay;
|
||||
|
||||
/** Callback to fire the moment the text is active in the conversation */
|
||||
vnconversationcallback_t *onStart;
|
||||
|
||||
/** Callback to fire every update tick of this conversation element */
|
||||
vnconversationcallback_t *onUpdate;
|
||||
|
||||
/** Callback to fire when this conversation element is ended */
|
||||
vnconversationcallback_t *onEnd;
|
||||
} vnconversationtext_t;
|
||||
/** Character this conversation piece belongs to */
|
||||
vncharacter_t *character;
|
||||
} vnconversationitemdata_t;
|
||||
|
||||
/** Representation of a conversation, laid out similarly to a timeline. */
|
||||
typedef struct _vnconversation_t {
|
||||
/** Internal Textbox for text elements */
|
||||
vntextbox_t textbox;
|
||||
|
||||
/** Array of text elements */
|
||||
vnconversationtext_t texts[VN_CONVERSATION_TEXT_COUNT_MAX];
|
||||
uint8_t textCount;
|
||||
/** Data Storage for items' data */
|
||||
vnconversationitemdata_t itemData[ANIMATION_QUEUE_ITEM_MAX];
|
||||
|
||||
/** Internal timeline tracking */
|
||||
float timeline;
|
||||
|
||||
/** When the current text was first attached */
|
||||
float delayStart;
|
||||
|
||||
/** Current index within the array of texts that is currently processing */
|
||||
uint8_t textCurrent;
|
||||
/** Internal Queue for queueing the conversation */
|
||||
queue_t actionQueue;
|
||||
} vnconversation_t;
|
Reference in New Issue
Block a user