Add proto_choose_container_flags
This commit is contained in:
parent
6ce6639f10
commit
f1f4cac316
|
@ -5,8 +5,11 @@
|
||||||
#include "color.h"
|
#include "color.h"
|
||||||
#include "combat_ai.h"
|
#include "combat_ai.h"
|
||||||
#include "critter.h"
|
#include "critter.h"
|
||||||
|
#include "input.h"
|
||||||
|
#include "kb.h"
|
||||||
#include "memory.h"
|
#include "memory.h"
|
||||||
#include "proto.h"
|
#include "proto.h"
|
||||||
|
#include "svga.h"
|
||||||
#include "window_manager.h"
|
#include "window_manager.h"
|
||||||
#include "window_manager_private.h"
|
#include "window_manager_private.h"
|
||||||
|
|
||||||
|
@ -14,10 +17,17 @@ namespace fallout {
|
||||||
|
|
||||||
#define CRITTER_FLAG_COUNT 10
|
#define CRITTER_FLAG_COUNT 10
|
||||||
|
|
||||||
|
#define YES 0
|
||||||
|
#define NO 1
|
||||||
|
|
||||||
|
static int proto_choose_container_flags(Proto* proto);
|
||||||
static void proto_critter_flags_redraw(int win, int pid);
|
static void proto_critter_flags_redraw(int win, int pid);
|
||||||
static int proto_critter_flags_modify(int pid);
|
static int proto_critter_flags_modify(int pid);
|
||||||
static int mp_pick_kill_type();
|
static int mp_pick_kill_type();
|
||||||
|
|
||||||
|
static char kYes[] = "YES";
|
||||||
|
static char kNo[] = "NO";
|
||||||
|
|
||||||
// 0x559B94
|
// 0x559B94
|
||||||
static const char* wall_light_strs[] = {
|
static const char* wall_light_strs[] = {
|
||||||
"North/South",
|
"North/South",
|
||||||
|
@ -28,6 +38,15 @@ static const char* wall_light_strs[] = {
|
||||||
"West Corner",
|
"West Corner",
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// 0x559C50
|
||||||
|
static char* yesno[] = {
|
||||||
|
kYes,
|
||||||
|
kNo,
|
||||||
|
};
|
||||||
|
|
||||||
|
// 0x559C58
|
||||||
|
int edit_window_color = 1;
|
||||||
|
|
||||||
// 0x559C60
|
// 0x559C60
|
||||||
bool can_modify_protos = false;
|
bool can_modify_protos = false;
|
||||||
|
|
||||||
|
@ -65,6 +84,135 @@ void init_mapper_protos()
|
||||||
// TODO: Incomplete.
|
// TODO: Incomplete.
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 0x492840
|
||||||
|
int proto_choose_container_flags(Proto* proto)
|
||||||
|
{
|
||||||
|
int win = windowCreate(320,
|
||||||
|
185,
|
||||||
|
220,
|
||||||
|
205,
|
||||||
|
edit_window_color,
|
||||||
|
WINDOW_MOVE_ON_TOP);
|
||||||
|
if (win == -1) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
_win_register_text_button(win,
|
||||||
|
10,
|
||||||
|
11,
|
||||||
|
-1,
|
||||||
|
-1,
|
||||||
|
-1,
|
||||||
|
'1',
|
||||||
|
"Magic Hands Grnd",
|
||||||
|
0);
|
||||||
|
|
||||||
|
if ((proto->item.data.container.openFlags & 0x1) != 0) {
|
||||||
|
windowDrawText(win,
|
||||||
|
yesno[YES],
|
||||||
|
50,
|
||||||
|
125,
|
||||||
|
15,
|
||||||
|
_colorTable[32747] | 0x10000);
|
||||||
|
} else {
|
||||||
|
windowDrawText(win,
|
||||||
|
yesno[NO],
|
||||||
|
50,
|
||||||
|
125,
|
||||||
|
15,
|
||||||
|
_colorTable[32747] | 0x10000);
|
||||||
|
}
|
||||||
|
|
||||||
|
_win_register_text_button(win,
|
||||||
|
10,
|
||||||
|
32,
|
||||||
|
-1,
|
||||||
|
-1,
|
||||||
|
-1,
|
||||||
|
'2',
|
||||||
|
"Cannot Pick Up",
|
||||||
|
0);
|
||||||
|
|
||||||
|
if (_proto_action_can_pickup(proto->pid)) {
|
||||||
|
windowDrawText(win,
|
||||||
|
yesno[YES],
|
||||||
|
50,
|
||||||
|
125,
|
||||||
|
36,
|
||||||
|
_colorTable[32747] | 0x10000);
|
||||||
|
} else {
|
||||||
|
windowDrawText(win,
|
||||||
|
yesno[NO],
|
||||||
|
50,
|
||||||
|
125,
|
||||||
|
36,
|
||||||
|
_colorTable[32747] | 0x10000);
|
||||||
|
}
|
||||||
|
|
||||||
|
windowDrawBorder(win);
|
||||||
|
windowRefresh(win);
|
||||||
|
|
||||||
|
while (1) {
|
||||||
|
sharedFpsLimiter.mark();
|
||||||
|
|
||||||
|
int input = inputGetInput();
|
||||||
|
if (input == KEY_ESCAPE
|
||||||
|
|| input == KEY_BAR
|
||||||
|
|| input == KEY_RETURN) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (input == '1') {
|
||||||
|
proto->item.data.container.openFlags ^= 0x1;
|
||||||
|
|
||||||
|
if ((proto->item.data.container.openFlags & 0x1) != 0) {
|
||||||
|
windowDrawText(win,
|
||||||
|
yesno[YES],
|
||||||
|
50,
|
||||||
|
125,
|
||||||
|
15,
|
||||||
|
_colorTable[32747] | 0x10000);
|
||||||
|
} else {
|
||||||
|
windowDrawText(win,
|
||||||
|
yesno[NO],
|
||||||
|
50,
|
||||||
|
125,
|
||||||
|
15,
|
||||||
|
_colorTable[32747] | 0x10000);
|
||||||
|
}
|
||||||
|
|
||||||
|
windowRefresh(win);
|
||||||
|
} else if (input == '2') {
|
||||||
|
proto->item.extendedFlags ^= 0x8000;
|
||||||
|
|
||||||
|
if (_proto_action_can_pickup(proto->pid)) {
|
||||||
|
windowDrawText(win,
|
||||||
|
yesno[YES],
|
||||||
|
50,
|
||||||
|
125,
|
||||||
|
36,
|
||||||
|
_colorTable[32747] | 0x10000);
|
||||||
|
} else {
|
||||||
|
windowDrawText(win,
|
||||||
|
yesno[NO],
|
||||||
|
50,
|
||||||
|
125,
|
||||||
|
36,
|
||||||
|
_colorTable[32747] | 0x10000);
|
||||||
|
}
|
||||||
|
|
||||||
|
windowRefresh(win);
|
||||||
|
}
|
||||||
|
|
||||||
|
renderPresent();
|
||||||
|
sharedFpsLimiter.throttle();
|
||||||
|
}
|
||||||
|
|
||||||
|
windowDestroy(win);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
// 0x495438
|
// 0x495438
|
||||||
const char* proto_wall_light_str(int flags)
|
const char* proto_wall_light_str(int flags)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue