File: p4.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 (160 lines) | stat: -rw-r--r-- 5,195 bytes parent folder | download | duplicates (3)
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
150
151
152
153
154
155
156
157
158
159
160
/* 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.
 *
 * Additional copyright for this file:
 * Copyright (C) 1999-2000 Revolution Software Ltd.
 * This code is based on source code created by Revolution Software,
 * used with permission.
 *
 * 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 ICB_P4_H
#define ICB_P4_H

// Silly codewarrior doesn't understand relative paths
#include "engines/icb/common/px_common.h"
#include "engines/icb/string_vest.h"

namespace ICB {

// Handy #define's
#define MS g_mission->session
#define MSS g_mission->session->set

// functions required externally
void Terminate_ap(); // call this to end the game and return to windows

// variables
extern int32 gameCycle; // for head-up display
extern char gamelanguage[];
extern bool8 camera_hack;
extern uint32 font_cluster_hash; // Res_open will compute the hash value and store it
extern uint32 sys_font_hash;     // Res_open will compute the hash value and store it

#define RESOURCE_IS_COMPRESSED 1

extern bool gRegainedFocus; // Set when we regain the focus.  Cleared by the graphics reloading functions

} // End of namespace ICB (To avoid including inside the namespace

#include "engines/icb/common/px_string.h"

namespace ICB {
extern char g_characters[];

#define REMORA_GRAPHICS_PATH "remora\\pc\\"
#define FONT_PATH "fonts\\pc\\%s"
#define REMORA_CLUSTER_PATH "A\\2DART"

// Using psx style cluster paths
#define ICON_CLUSTER_PATH "A\\2DART"                  // icon cluster path
#define FONT_CLUSTER_PATH "A\\2DART"                  // font cluster path
#define GLOBAL_CLUSTER_PATH "G\\G"                    // global cluster path
#define SESSION_TEST_PATH "m\\%s\\%s.sex"             // File to test for a sessions existence
#define SESSION_CLUSTER_PATH "M\\%s\\%s.SEX"          // Path to the session cluster
#define CHR_PATH "C\\%s\\%s.OFT"
#define SET_PATH "M\\%s\\%s.CAM" // path to the set

#define SYS_FONT "fonts\\font.tdw"       // default font name
#define ICON_PATH "inventory_icon\\pc\\" // path for inventory objects
#define GAMESCRIPT_PATH "gamescript"
#define GLOBAL_VAR_PATH "globals" // globals file name
#define GLOBAL_TEXT_FILE "%s.ttpc", gamelanguage

// These are for the Remora's text system (and any other voice-over text we might need).
// This defines the name of the resource files that are searched for Remora text.
#define FILENAME_VOTEXT "remora.ctf"
#define GLOBAL_VOTEXT_NAME "remora.ctf"
#define ICON_LABELS_FILENAME "iconlabels.ctf"
#define CONFIG_INI_FILENAME "engine\\icb.ini"

// Resource Manager Sizes -- Initalize in Memory_stats
extern uint32 BACKGROUND_BUFFER_SIZE;
extern uint32 ANIMATION_BUFFER_SIZE;
extern uint32 BITMAP_BUFFER_SIZE;
extern uint32 SONICS_BUFFER_SIZE;

#define ANIM_CHECK(a)                                                                                                                                                              \
	if (!I->IsAnimTable(a))                                                                                                                                                    \
		Fatal_error("engine finds anim [%s] '%s' %X missing for object [%s]", (const char *)master_anim_name_table[a].name, I->get_info_name(a), I->info_name_hash[a],     \
		            CGameObject::GetName(object));

enum __stub_modes {
	__mission_and_console,
	__game_script,
	__floors,
	__shift_mode,
	__troute,
	__vox_view,
	__set_test,
	__console_prompt,
	__stage_view,
	__sequence,
	__options_menu,
	__font_test,
	__toe_on_door,
	__pause_menu,
	__load_save_menu,
	__credits,
	__scrolling_text,
	__gameover_menu,
	__no_stub_mode
};
#define TOTAL_STUBS 8
#define TARGET_TIME 70

class _stub {
	public:
	_stub();
	~_stub();

	void Reset(__stub_modes new_mode);
	void Set_current_stub_mode(__stub_modes new_mode);
	void Push_stub_mode(__stub_modes new_mode);
	void Pop_stub_mode();
	void Process_stub();
	__stub_modes Return_current_stub();

	void Reset_timer();
	void Fix_time();
	void Timer_off();
	void Timer_on();
	bool8 Return_timer_status();
	void Update_screen();

	__stub_modes mode[TOTAL_STUBS];
	int32 stub; // stub level number
	int32 cycle_speed;
private:
	uint32 stub_timer_time;
	bool8 timer; // on off
	uint8 padding1;
	uint8 padding2;
	uint8 padding3;
};

// this is one of the stub modes
void Mission_and_console();

// returns the CD number for the specified mission
int32 WhichCD(const char *mission);

} // End of namespace ICB

#endif