parent
32ed3c3271
commit
ec722475b6
|
@ -4,13 +4,16 @@
|
||||||
|
|
||||||
#include "animation.h"
|
#include "animation.h"
|
||||||
#include "art.h"
|
#include "art.h"
|
||||||
|
#include "color.h"
|
||||||
#include "combat.h"
|
#include "combat.h"
|
||||||
|
#include "dbox.h"
|
||||||
#include "debug.h"
|
#include "debug.h"
|
||||||
#include "game.h"
|
#include "game.h"
|
||||||
#include "input.h"
|
#include "input.h"
|
||||||
#include "interface.h"
|
#include "interface.h"
|
||||||
#include "interpreter.h"
|
#include "interpreter.h"
|
||||||
#include "item.h"
|
#include "item.h"
|
||||||
|
#include "memory.h"
|
||||||
#include "message.h"
|
#include "message.h"
|
||||||
#include "mouse.h"
|
#include "mouse.h"
|
||||||
#include "object.h"
|
#include "object.h"
|
||||||
|
@ -448,6 +451,47 @@ static void opGetScreenHeight(Program* program)
|
||||||
programStackPushInteger(program, screenGetHeight());
|
programStackPushInteger(program, screenGetHeight());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// create_message_window
|
||||||
|
static void op_create_message_window(Program* program)
|
||||||
|
{
|
||||||
|
static bool showing = false;
|
||||||
|
|
||||||
|
if (showing) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const char* string = programStackPopString(program);
|
||||||
|
if (string == nullptr || string[0] == '\0') {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
char* copy = internal_strdup(string);
|
||||||
|
|
||||||
|
const char* body[4];
|
||||||
|
int count = 0;
|
||||||
|
|
||||||
|
char* pch = strchr(copy, '\n');
|
||||||
|
while (pch != nullptr && count < 4) {
|
||||||
|
*pch = '\0';
|
||||||
|
body[count++] = pch + 1;
|
||||||
|
pch = strchr(pch + 1, '\n');
|
||||||
|
}
|
||||||
|
|
||||||
|
showing = true;
|
||||||
|
showDialogBox(copy,
|
||||||
|
body,
|
||||||
|
count,
|
||||||
|
192,
|
||||||
|
116,
|
||||||
|
_colorTable[32328],
|
||||||
|
nullptr,
|
||||||
|
_colorTable[32328],
|
||||||
|
DIALOG_BOX_LARGE);
|
||||||
|
showing = false;
|
||||||
|
|
||||||
|
internal_free(copy);
|
||||||
|
}
|
||||||
|
|
||||||
// get_attack_type
|
// get_attack_type
|
||||||
static void op_get_attack_type(Program* program)
|
static void op_get_attack_type(Program* program)
|
||||||
{
|
{
|
||||||
|
@ -838,6 +882,7 @@ void sfallOpcodesInit()
|
||||||
interpreterRegisterOpcode(0x821E, op_get_mouse_buttons);
|
interpreterRegisterOpcode(0x821E, op_get_mouse_buttons);
|
||||||
interpreterRegisterOpcode(0x8220, opGetScreenWidth);
|
interpreterRegisterOpcode(0x8220, opGetScreenWidth);
|
||||||
interpreterRegisterOpcode(0x8221, opGetScreenHeight);
|
interpreterRegisterOpcode(0x8221, opGetScreenHeight);
|
||||||
|
interpreterRegisterOpcode(0x8224, op_create_message_window);
|
||||||
interpreterRegisterOpcode(0x8228, op_get_attack_type);
|
interpreterRegisterOpcode(0x8228, op_get_attack_type);
|
||||||
interpreterRegisterOpcode(0x822D, opCreateArray);
|
interpreterRegisterOpcode(0x822D, opCreateArray);
|
||||||
interpreterRegisterOpcode(0x822E, opSetArray);
|
interpreterRegisterOpcode(0x822E, opSetArray);
|
||||||
|
|
Loading…
Reference in New Issue