scummvm/engines/icb/global_objects.cpp
2021-04-15 21:20:36 +02:00

179 lines
6.3 KiB
C++

/* ResidualVM - A 3D game interpreter
*
* ResidualVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the AUTHORS
* 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 2
* 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, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*
*/
// global objects are in here - this makes it easier to see what there is
#include "engines/icb/global_objects.h"
#include "engines/icb/sound_logic.h"
namespace ICB {
int32 globalCharSpacing = 0;
// Prop sprite brightness to use when highlighting a prop that the player could interact with
int32 g_prop_select_r = 200;
int32 g_prop_select_g = 200;
int32 g_prop_select_b = 200;
// extra ambient brightness to use when highlighting a mega that the player could interact with
int32 g_mega_select_r = 200;
int32 g_mega_select_g = 200;
int32 g_mega_select_b = 200;
// holds info about current mission
_mission *g_mission = NULL;
// main buffer object
// if this remains NULL then the system knows that there are no resources present
// this should be used as a high level indication of the situation
res_man *rs1 = NULL;
res_man *rs2 = NULL;
res_man *rs3 = NULL;
res_man *private_session_resman = NULL;
res_man *rs_bg = NULL; // pointer to which res_man to use for background buffer
res_man *rs_icons = NULL; // pointer to which res_man to use for icons
res_man *rs_anims = NULL; // pointer to which res_man to use for animation data
res_man *rs_remora = NULL; // pointer to which res_man to use for remora graphics
res_man *rs_font = NULL; // pointer to which res_man to use for font data
// global test only
res_man *global_text_resman = NULL;
_linked_data_file *global_text;
// route-manager service object
// doesnt depend on session specific extrernal data so we make it global service
// gets reset by the session constructor
// the service exists to facilitate and coordinate the movement of non player characters - the player object has its own stuff
//_route_manager router;
// speech
text_sprite *g_text_bloc1;
// pc has extra bloc for remora, etc.
text_sprite *g_text_bloc2;
_mission *g_icb_mission;
_game_session *g_icb_session;
// session objects
_barrier_handler g_icb_session_barriers;
_floor_world *g_icb_session_floors;
_logic *g_logics[MAX_session_objects];
_mega *g_megas[MAX_voxel_list];
_vox_image *g_vox_images[MAX_voxel_list];
// master modes
_stub *g_stub;
// game script manager
_game_script gs;
class _remora;
class _icon_menu;
class _icon_list_manager;
// These objects are now all declared in one place because the order of creation matters.
_event_manager *g_oEventManager;
_line_of_sight *g_oLineOfSight;
_icon_menu *g_oIconMenu;
_icon_list_manager *g_oIconListManager;
_remora *g_oRemora;
_sound_logic *g_oSoundLogicEngine;
// Mission strings for the options menus (harmonised for PC and PSX)
const char *g_m01 = "m01_investigate_mine";
const char *g_m02 = "m02_security_hq";
const char *g_m03 = "m03_land_train";
const char *g_m04 = "m04_raid_on_containment";
const char *g_m05 = "m05_sabotage_refinery";
const char *g_m07 = "m07_mainland_base";
const char *g_m08 = "m08_entering_island_base";
const char *g_m09 = "m09_escape_island_base";
const char *g_m10 = "m10_submarine";
// The collection of possible missions including the session to start for each mission
const char *g_mission_startup_names[MAX_MISSIONS] = {
"m01_investigate_mine", "office_building",
"m02_security_hq", "basement",
"m03_land_train", "car_5",
"m04_raid_on_containment", "level_alphabeta",
"m05_sabotage_refinery", "m5_mine",
"m07_mainland_base", "compound",
"m08_entering_island_base", "cable_car_dock",
"m08_entering_island_base", "security",
"m10_submarine", "submarine",
"m_ed", "2_ship",
"test_mission", "test_session"
};
const char *g_mission_names[NUMBER_OF_MISSIONS] = {
"m01_investigate_mine",
"m02_security_hq",
"m03_land_train",
"m04_raid_on_containment",
"m05_sabotage_refinery",
"m07_mainland_base",
"m08_entering_island_base",
"m08_entering_island_base",
"m10_submarine",
"m_ed",
"test_mission"
};
const char *g_sessions[MAX_SESSIONS] = {"m01_investigate_mine", "mine",
"m01_investigate_mine", "mineworkings",
"m01_investigate_mine", "office_building",
"m02_security_hq", "basement",
"m02_security_hq", "ground_floor",
"m02_security_hq", "first_floor",
"m03_land_train", "car_1",
"m03_land_train", "car_2",
"m03_land_train", "car_3",
"m03_land_train", "car_4",
"m03_land_train", "car_5",
"m04_raid_on_containment", "level_alphabeta",
"m04_raid_on_containment", "level_kappa",
"m04_raid_on_containment", "level_omega",
"m05_sabotage_refinery", "m5_mine",
"m05_sabotage_refinery", "m5_office_building",
"m05_sabotage_refinery", "refinery",
"m07_mainland_base", "compound",
"m07_mainland_base", "monorail__station",
"m07_mainland_base", "cable_car_building",
"m08_entering_island_base", "cable_car_dock",
"m08_entering_island_base", "manufacturing",
"m08_entering_island_base", "quayside",
"m08_entering_island_base", "reactor",
"m08_entering_island_base", "security",
"m10_submarine", "submarine",
"test_mission", "test_mission",
"test_mission", "test_session_2",
"m_ed", "2_ship"};
} // End of namespace ICB