File: conv_io.h

package info (click to toggle)
scummvm 2.9.1%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 450,580 kB
  • sloc: cpp: 4,299,825; asm: 28,322; python: 12,901; sh: 11,302; java: 9,289; xml: 7,895; perl: 2,639; ansic: 2,465; yacc: 1,670; javascript: 1,020; makefile: 933; lex: 578; awk: 275; objc: 82; sed: 11; php: 1
file content (149 lines) | stat: -rw-r--r-- 4,456 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149

/* ScummVM - Graphic Adventure Engine
 *
 * ScummVM is the legal property of its developers, whose names
 * are too numerous to list here. Please refer to the COPYRIGHT
 * file distributed with this source distribution.
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 *
 */

#ifndef M4_ADV_R_CONV_IO_H
#define M4_ADV_R_CONV_IO_H

#include "common/array.h"
#include "common/serializer.h"
#include "m4/m4_types.h"
#include "m4/adv_r/conv.h"
#include "m4/graphics/gr_pal.h"
#include "m4/gui/gui_dialog.h"

namespace M4 {

#define HIDDEN			0x00000004
#define DESTROYED       0x00000008

#define INITIAL         1
#define PERSISTENT      2

#define CONV_OK          0
#define CONV_QUIT       -1
#define CONV_NEW        -2
#define CONV_BAIL       -3

#define CONV_UNKNOWN_MODE   0
#define CONV_GET_TEXT_MODE  1
#define CONV_SET_TEXT_MODE  2
#define CONV_GET_MESG_MODE  3
#define CONV_UPDATE_MODE    4

#define DECL_POINTER	1

struct Converstation_Globals {
	Common::Array<byte> convSave;	// Original used an actual file. We use a memory buffer
	int	event = 0;
	int	event_ready = 0;
	char conv_name[16];
	Conv *globConv = nullptr;
	bool playerCommAllowed = false;
	int32 myFinalTrigger = 0;
	bool interface_was_visible = false;  // to remember to turn it back on
	int restore_conv = 1;
	int ent = 0;
	bool swap = false;

	int32 conv_font_spacing_h = 0;
	int32 conv_font_spacing_v = 5;
	int32 conv_default_h = conv_font_spacing_h;
	int32 conv_default_v = conv_font_spacing_v;
	int32 conv_shading = 65;

	int32 conv_normal_colour = __BLACK;
	int32 conv_normal_colour_alt1 = __GREEN;
	int32 conv_normal_colour_alt2 = __GREEN;
	int32 conv_hilite_colour = __YELLOW;
	int32 conv_default_hilite_colour = __YELLOW;
	int32 conv_hilite_colour_alt1 = __YELLOW;
	int32 conv_hilite_colour_alt2 = __YELLOW;
	int32 conv_default_normal_colour = __BLACK;

	TextScrn *myTextScrn = nullptr;
	int32 width = 0, height = 0;
	int32 glob_x = 0, glob_y = 0;
	int32 r_x1 = 0, r_y1 = 0, r_x2 = 0, r_y2 = 0;
	int n_t_e = 0;

	void syncGame(Common::Serializer &s);

	void conv_reset_all();
};

Conv *conv_load(const char *filename, int x1, int y1, int32 myTrigger, bool want_box = true);
void conv_load_and_prepare(const char *filename, int trigger, bool ignoreIt = false);

void conv_unload(Conv *c);
void conv_unload();
void conv_shutdown();

Conv *conv_get_handle();
void conv_set_handle(Conv *c);

void conv_resume(Conv *c);
void conv_resume();
void conv_reset(char *filename);

void conv_reset_all();
void conv_play(Conv *c);
void conv_play();

const char *conv_sound_to_play();
int32 conv_whos_talking();

int32 conv_get_decl_val(Conv *c, decl_chunk *decl);
void conv_set_decl_val(Conv *c, decl_chunk *decl, int32 val);
void conv_export_value(Conv *c, int32 val, int index);
void conv_export_value_curr(int32 val, int index);
void conv_export_pointer(Conv *c, int32 *val, int index);
void conv_export_pointer_curr(int32 *val, int index);

void conv_set_font_spacing(int32 h, int32 v);
void conv_set_text_colour(int32 norm_colour, int32 hi_colour);

void conv_set_text_colours(int32 norm_colour, int32 norm_colour_alt1, int32 norm_colour_alt2,
	int32 hi_colour, int32 hi_colour_alt1, int32 hi_colour_alt2);

void conv_set_shading(int32 shade);
void conv_set_box_xy(int32 x, int32 y);
void conv_get_dlg_coords(int32 *x1, int32 *y1, int32 *x2, int32 *y2);
void conv_set_dlg_coords(int32 x1, int32 y1, int32 x2, int32 y2);
void conv_set_default_text_colour(int32 norm_colour, int32 hi_colour);
void conv_set_default_hv(int32 h, int32 v);

int conv_get_event();
void conv_set_event(int e);
int conv_is_event_ready();

void conv_swap_words(Conv *c);
int32 conv_current_node();
int32 conv_current_entry();

int conv_toggle_flags(entry_chunk *entry);
int ok_status(entry_chunk *entry);
int conv_get_text(int32 offset, int32 size, Conv *c);
void cdd_init();

} // End of namespace M4

#endif