2020-06-28 06:54:42 +00:00
|
|
|
/* 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"
|
2020-06-28 06:54:42 +00:00
|
|
|
|
|
|
|
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
|