scummvm/engines/icb/global_objects.cpp

215 lines
7.9 KiB
C++
Raw Normal View History

/* 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
2020-10-06 07:51:20 +00:00
#include "engines/icb/global_objects.h"
#include "engines/icb/sound_logic.h"
namespace ICB {
int globalCharSpacing = 0;
// Prop sprite brightness to use when highlighting a prop that the player could interact with
int g_prop_select_r = 200;
int g_prop_select_g = 200;
int g_prop_select_b = 200;
// extra ambient brightness to use when highlighting a mega that the player could interact with
int g_mega_select_r = 200;
int g_mega_select_g = 200;
int 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 logics[MAX_session_objects];
_mega megas[MAX_voxel_list];
_vox_image vox_images[MAX_voxel_list];
// master modes
_stub 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)
// For test_mission
const char *test_mission = "test_mission";
const char *test_session = "test_session";
const char *test_session_2 = "test_session_2";
// For m01_investigate_mine
const char *g_m01 = "m01_investigate_mine";
const char *office_building = "office_building";
const char *mine = "mine";
const char *mineworkings = "mineworkings";
// For m02_security_hq
const char *g_m02 = "m02_security_hq";
const char *basement = "basement";
const char *ground_floor = "ground_floor";
const char *first_floor = "first_floor";
// For m03_land_train
const char *g_m03 = "m03_land_train";
const char *car_5 = "car_5";
const char *car_1 = "car_1";
const char *car_2 = "car_2";
const char *car_3 = "car_3";
const char *car_4 = "car_4";
// For m04_raid_on_containment
const char *g_m04 = "m04_raid_on_containment";
const char *level_alphabeta = "level_alphabeta";
const char *level_kappa = "level_kappa";
const char *level_omega = "level_omega";
// For m05_sabotage_refinery
const char *g_m05 = "m05_sabotage_refinery";
const char *m5_mine = "m5_mine";
const char *m5_office_building = "m5_office_building";
const char *m5_refinery = "refinery";
// For m07_mainland_base
const char *g_m07 = "m07_mainland_base";
const char *compound = "compound";
const char *monorail_station = "monorail__station";
const char *cable_car_building = "cable_car_building";
// For m08_entering_island_base
const char *g_m08 = "m08_entering_island_base";
const char *cable_car_dock = "cable_car_dock";
// Mission 9 which is mission 8 but with a global set
const char *g_m09 = "m09_escape_island_base";
const char *security = "security";
const char *manufacturing = "manufacturing";
const char *quayside = "quayside";
const char *reactor = "reactor";
const char *m_ed = "m_ed";
const char *a2_ship = "2_ship";
// For m10_submarine
const char *g_m10 = "m10_submarine";
const char *submarine = "submarine";
// The collection of possible missions including the session to start for each mission
const char *g_mission_startup_names[MAX_MISSIONS] = {g_m01, office_building, g_m02, basement, g_m03, car_5, g_m04, level_alphabeta, g_m05, m5_mine, g_m07, compound,
g_m08, cable_car_dock, g_m08, security, g_m10, submarine, m_ed, a2_ship, test_mission, test_session};
const char *g_mission_names[NUMBER_OF_MISSIONS] = {g_m01, g_m02, g_m03, g_m04, g_m05, g_m07, g_m08, g_m08, g_m10, m_ed, test_mission};
const char *g_sessions[MAX_SESSIONS] = {g_m01, mine,
g_m01, mineworkings,
g_m01, office_building,
g_m02, basement,
g_m02, ground_floor,
g_m02, first_floor,
g_m03, car_1,
g_m03, car_2,
g_m03, car_3,
g_m03, car_4,
g_m03, car_5,
g_m04, level_alphabeta,
g_m04, level_kappa,
g_m04, level_omega,
g_m05, m5_mine,
g_m05, m5_office_building,
g_m05, m5_refinery,
g_m07, compound,
g_m07, monorail_station,
g_m07, cable_car_building,
g_m08, cable_car_dock,
g_m08, manufacturing,
g_m08, quayside,
g_m08, reactor,
g_m08, security,
g_m10, submarine,
test_mission, test_session,
test_mission, test_session_2,
m_ed, a2_ship};
} // End of namespace ICB