CnC_Remastered_Collection/TIBERIANDAWN/TDATA.CPP
PG-SteveT 03416d24e1 Initial Source Code commit
Initial commit of original Tiberian Dawn and Red Alert source code converted to build as DLLs, and compatible with the release version of Command & Conquer Remastered.
2020-05-27 12:16:20 -07:00

1027 lines
42 KiB
C++
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//
// Copyright 2020 Electronic Arts Inc.
//
// TiberianDawn.DLL and RedAlert.dll and corresponding source code 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.
// TiberianDawn.DLL and RedAlert.dll and corresponding source code is distributed
// in the hope that it will be useful, but with permitted additional restrictions
// under Section 7 of the GPL. See the GNU General Public License in LICENSE.TXT
// distributed with this program. You should have received a copy of the
// GNU General Public License along with permitted additional restrictions
// with this program. If not, see https://github.com/electronicarts/CnC_Remastered_Collection
/* $Header: F:\projects\c&c\vcs\code\tdata.cpv 2.16 16 Oct 1995 16:52:04 JOE_BOSTIC $ */
/***********************************************************************************************
*** C O N F I D E N T I A L --- W E S T W O O D S T U D I O S ***
***********************************************************************************************
* *
* Project Name : Command & Conquer *
* *
* File Name : TDATA.CPP *
* *
* Programmer : Joe L. Bostic *
* *
* Start Date : May 2, 1994 *
* *
* Last Update : May 8, 1995 [JLB] *
* *
*---------------------------------------------------------------------------------------------*
* Functions: *
* TerrainTypeClass::Prep_For_Add -- Prepares to add terrain object. *
* TerrainTypeClass::Display -- Display a generic terrain object. *
* TerrainTypeClass::From_Name -- Convert name to terrain type. *
* TerrainTypeClass::Init -- Loads terrain object shape files. *
* TerrainTypeClass::Create_And_Place -- Creates and places terrain object on map. *
* TerrainTypeClass::Create_On_Of -- Creates a terrain object from type. *
* TerrainTypeClass::TerrainTypeClass -- The general constructor for the terrain type objects*
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
#include "function.h"
#include "terrain.h"
#include "type.h"
#define TREE_NORMAL 600
#define TREE_WEAK 400
#define TREE_STRONG 800
static short const _List1[] = {0, REFRESH_EOL};
static short const _List000010[] = {MAP_CELL_W+1, REFRESH_EOL};
static short const _List000011101000[] = {MAP_CELL_W, MAP_CELL_W+1, MAP_CELL_W+2, MAP_CELL_W*2, REFRESH_EOL};
static short const _List00001[] = {4, REFRESH_EOL};
static short const _List000110[] = {MAP_CELL_W, MAP_CELL_W+1, REFRESH_EOL};
static short const _List000111[] = {MAP_CELL_W, MAP_CELL_W+1, MAP_CELL_W+2, REFRESH_EOL};
static short const _List001011100110[] = {2, MAP_CELL_W, MAP_CELL_W+1, MAP_CELL_W+2, MAP_CELL_W*2+1, MAP_CELL_W*2+2, REFRESH_EOL};
static short const _List0010[] = {MAP_CELL_W, REFRESH_EOL};
static short const _List0011[] = {MAP_CELL_W, MAP_CELL_W+1, REFRESH_EOL};
static short const _List001[] = {2, REFRESH_EOL};
static short const _List010110[] = {1, MAP_CELL_W, MAP_CELL_W+1, REFRESH_EOL};
static short const _List01[] = {1, REFRESH_EOL};
static short const _List1001[] = {0, MAP_CELL_W+1, REFRESH_EOL};
static short const _List101001[] = {0, 2, MAP_CELL_W+2, REFRESH_EOL};
static short const _List10[] = {0, REFRESH_EOL};
static short const _List110000011001[] = {0, 1, MAP_CELL_W+3, MAP_CELL_W*2, MAP_CELL_W*2+3, REFRESH_EOL};
static short const _List110000[] = {0, 1, REFRESH_EOL};
static short const _List110001[] = {0, 1, MAP_CELL_W+2, REFRESH_EOL};
static short const _List1100[] = {0, 1, REFRESH_EOL};
static short const _List110110[] = {0, 1, MAP_CELL_W, MAP_CELL_W+1, REFRESH_EOL};
static short const _List1101[] = {0, 1, MAP_CELL_W+1, REFRESH_EOL};
static short const _List111000010110[] = {0, 1, 2, MAP_CELL_W+3, MAP_CELL_W*2+1, MAP_CELL_W*2+2, REFRESH_EOL};
static short const _List111001[] = {0, 1, 2, MAP_CELL_W+2, REFRESH_EOL};
static short const _List111101[] = {0, 1, 2, MAP_CELL_W, MAP_CELL_W+2, REFRESH_EOL};
static short const _List11110[] = {0, 1, 2, 3, REFRESH_EOL};
static TerrainTypeClass const Tree1Class(
TERRAIN_TREE1,
THEATERF_WINTER|THEATERF_TEMPERATE,
XYP_COORD(11,41), // Center base coordinate offset.
false, // Spawns Tiberium spontaneously?
true, // Does it have destruction animation?
false, // Does it have transformation (blossom tree) anim?
true, // Does it catch fire?
false, // Is this object crushable by heavy vehicles?
false, // Can this object be selected by the player?
false, // Can it be the target of a move or attack order?
true, // Don't make a big deal about it if it gets destroyed?
false, // Is it immune to normal combat damage?
"T01",
TXT_TREE,
TREE_NORMAL,
ARMOR_WOOD,
(short const *)_List0010,
(short const *)_List1001
);
static TerrainTypeClass const Tree2Class(
TERRAIN_TREE2,
THEATERF_WINTER|THEATERF_TEMPERATE,
XYP_COORD(11,44), // Center base coordinate offset.
false, // Spawns Tiberium spontaneously?
true, // Does it have destruction animation?
false, // Does it have transformation (blossom tree) anim?
true, // Does it catch fire?
false, // Is this object crushable by heavy vehicles?
false, // Can this object be selected by the player?
false, // Can it be the target of a move or attack order?
true, // Don't make a big deal about it if it gets destroyed?
false, // Is it immune to normal combat damage?
"T02",
TXT_TREE,
TREE_NORMAL,
ARMOR_WOOD,
(short const *)_List0010,
(short const *)_List1001
);
static TerrainTypeClass const Tree3Class(
TERRAIN_TREE3,
THEATERF_WINTER|THEATERF_TEMPERATE,
XYP_COORD(12,45), // Center base coordinate offset.
false, // Spawns Tiberium spontaneously?
true, // Does it have destruction animation?
false, // Does it have transformation (blossom tree) anim?
true, // Does it catch fire?
false, // Is this object crushable by heavy vehicles?
false, // Can this object be selected by the player?
false, // Can it be the target of a move or attack order?
true, // Don't make a big deal about it if it gets destroyed?
false, // Is it immune to normal combat damage?
"T03",
TXT_TREE,
TREE_NORMAL,
ARMOR_WOOD,
(short const *)_List0010,
(short const *)_List1001
);
static TerrainTypeClass const Tree4Class(
TERRAIN_TREE4,
THEATERF_DESERT,
XYP_COORD(8,9), // Center base coordinate offset.
false, // Spawns Tiberium spontaneously?
true, // Does it have destruction animation?
false, // Does it have transformation (blossom tree) anim?
true, // Does it catch fire?
false, // Is this object crushable by heavy vehicles?
false, // Can this object be selected by the player?
false, // Can it be the target of a move or attack order?
true, // Don't make a big deal about it if it gets destroyed?
false, // Is it immune to normal combat damage?
"T04",
TXT_TREE,
TREE_NORMAL,
ARMOR_WOOD,
(short const *)_List1,
NULL
);
static TerrainTypeClass const Tree5Class(
TERRAIN_TREE5,
THEATERF_WINTER|THEATERF_TEMPERATE,
XYP_COORD(15,41), // Center base coordinate offset.
false, // Spawns Tiberium spontaneously?
true, // Does it have destruction animation?
false, // Does it have transformation (blossom tree) anim?
true, // Does it catch fire?
false, // Is this object crushable by heavy vehicles?
false, // Can this object be selected by the player?
false, // Can it be the target of a move or attack order?
true, // Don't make a big deal about it if it gets destroyed?
false, // Is it immune to normal combat damage?
"T05",
TXT_TREE,
TREE_NORMAL,
ARMOR_WOOD,
(short const *)_List0010,
(short const *)_List1001
);
static TerrainTypeClass const Tree6Class(
TERRAIN_TREE6,
THEATERF_WINTER|THEATERF_TEMPERATE,
XYP_COORD(16,37), // Center base coordinate offset.
false, // Spawns Tiberium spontaneously?
true, // Does it have destruction animation?
false, // Does it have transformation (blossom tree) anim?
true, // Does it catch fire?
false, // Is this object crushable by heavy vehicles?
false, // Can this object be selected by the player?
false, // Can it be the target of a move or attack order?
true, // Don't make a big deal about it if it gets destroyed?
false, // Is it immune to normal combat damage?
"T06",
TXT_TREE,
TREE_NORMAL,
ARMOR_WOOD,
(short const *)_List0010,
(short const *)_List1001
);
static TerrainTypeClass const Tree7Class(
TERRAIN_TREE7,
THEATERF_WINTER|THEATERF_TEMPERATE,
XYP_COORD(15,41), // Center base coordinate offset.
false, // Spawns Tiberium spontaneously?
true, // Does it have destruction animation?
false, // Does it have transformation (blossom tree) anim?
true, // Does it catch fire?
false, // Is this object crushable by heavy vehicles?
false, // Can this object be selected by the player?
false, // Can it be the target of a move or attack order?
true, // Don't make a big deal about it if it gets destroyed?
false, // Is it immune to normal combat damage?
"T07",
TXT_TREE,
TREE_NORMAL,
ARMOR_WOOD,
(short const *)_List0010,
(short const *)_List1001
);
static TerrainTypeClass const Tree8Class(
TERRAIN_TREE8,
THEATERF_WINTER|THEATERF_TEMPERATE|THEATERF_DESERT,
XYP_COORD(14,22), // Center base coordinate offset.
false, // Spawns Tiberium spontaneously?
true, // Does it have destruction animation?
false, // Does it have transformation (blossom tree) anim?
true, // Does it catch fire?
false, // Is this object crushable by heavy vehicles?
false, // Can this object be selected by the player?
false, // Can it be the target of a move or attack order?
true, // Don't make a big deal about it if it gets destroyed?
false, // Is it immune to normal combat damage?
"T08",
TXT_TREE,
TREE_NORMAL,
ARMOR_WOOD,
(short const *)_List10,
(short const *)_List01
);
static TerrainTypeClass const Tree9Class(
TERRAIN_TREE9,
THEATERF_DESERT,
XYP_COORD(11,22), // Center base coordinate offset.
false, // Spawns Tiberium spontaneously?
true, // Does it have destruction animation?
false, // Does it have transformation (blossom tree) anim?
true, // Does it catch fire?
false, // Is this object crushable by heavy vehicles?
false, // Can this object be selected by the player?
false, // Can it be the target of a move or attack order?
true, // Don't make a big deal about it if it gets destroyed?
false, // Is it immune to normal combat damage?
"T09",
TXT_TREE,
TREE_NORMAL,
ARMOR_WOOD,
(short const *)_List10,
(short const *)_List01
);
static TerrainTypeClass const Tree10Class(
TERRAIN_TREE10,
THEATERF_WINTER|THEATERF_TEMPERATE,
XYP_COORD(25,43), // Center base coordinate offset.
false, // Spawns Tiberium spontaneously?
true, // Does it have destruction animation?
false, // Does it have transformation (blossom tree) anim?
true, // Does it catch fire?
false, // Is this object crushable by heavy vehicles?
false, // Can this object be selected by the player?
false, // Can it be the target of a move or attack order?
true, // Don't make a big deal about it if it gets destroyed?
false, // Is it immune to normal combat damage?
"T10",
TXT_TREE,
TREE_NORMAL,
ARMOR_WOOD,
(short const *)_List0011,
(short const *)_List1100
);
static TerrainTypeClass const Tree11Class(
TERRAIN_TREE11,
THEATERF_WINTER|THEATERF_TEMPERATE,
XYP_COORD(23,44), // Center base coordinate offset.
false, // Spawns Tiberium spontaneously?
true, // Does it have destruction animation?
false, // Does it have transformation (blossom tree) anim?
true, // Does it catch fire?
false, // Is this object crushable by heavy vehicles?
false, // Can this object be selected by the player?
false, // Can it be the target of a move or attack order?
true, // Don't make a big deal about it if it gets destroyed?
false, // Is it immune to normal combat damage?
"T11",
TXT_TREE,
TREE_NORMAL,
ARMOR_WOOD,
(short const *)_List0011,
(short const *)_List1100
);
static TerrainTypeClass const Tree12Class(
TERRAIN_TREE12,
THEATERF_WINTER|THEATERF_TEMPERATE,
XYP_COORD(14,36), // Center base coordinate offset.
false, // Spawns Tiberium spontaneously?
true, // Does it have destruction animation?
false, // Does it have transformation (blossom tree) anim?
true, // Does it catch fire?
false, // Is this object crushable by heavy vehicles?
false, // Can this object be selected by the player?
false, // Can it be the target of a move or attack order?
true, // Don't make a big deal about it if it gets destroyed?
false, // Is it immune to normal combat damage?
"T12",
TXT_TREE,
TREE_NORMAL,
ARMOR_WOOD,
(short const *)_List0010,
(short const *)_List1001
);
static TerrainTypeClass const Tree13Class(
TERRAIN_TREE13,
THEATERF_WINTER|THEATERF_TEMPERATE,
XYP_COORD(19,40), // Center base coordinate offset.
false, // Spawns Tiberium spontaneously?
true, // Does it have destruction animation?
false, // Does it have transformation (blossom tree) anim?
true, // Does it catch fire?
false, // Is this object crushable by heavy vehicles?
false, // Can this object be selected by the player?
false, // Can it be the target of a move or attack order?
true, // Don't make a big deal about it if it gets destroyed?
false, // Is it immune to normal combat damage?
"T13",
TXT_TREE,
TREE_NORMAL,
ARMOR_WOOD,
(short const *)_List0010,
(short const *)_List1101
);
static TerrainTypeClass const Tree14Class(
TERRAIN_TREE14,
THEATERF_WINTER|THEATERF_TEMPERATE,
XYP_COORD(19,40), // Center base coordinate offset.
false, // Spawns Tiberium spontaneously?
true, // Does it have destruction animation?
false, // Does it have transformation (blossom tree) anim?
true, // Does it catch fire?
false, // Is this object crushable by heavy vehicles?
false, // Can this object be selected by the player?
false, // Can it be the target of a move or attack order?
true, // Don't make a big deal about it if it gets destroyed?
false, // Is it immune to normal combat damage?
"T14",
TXT_TREE,
TREE_NORMAL,
ARMOR_WOOD,
(short const *)_List0011,
(short const *)_List1100
);
static TerrainTypeClass const Tree15Class(
TERRAIN_TREE15,
THEATERF_WINTER|THEATERF_TEMPERATE,
XYP_COORD(19,40), // Center base coordinate offset.
false, // Spawns Tiberium spontaneously?
true, // Does it have destruction animation?
false, // Does it have transformation (blossom tree) anim?
true, // Does it catch fire?
false, // Is this object crushable by heavy vehicles?
false, // Can this object be selected by the player?
false, // Can it be the target of a move or attack order?
true, // Don't make a big deal about it if it gets destroyed?
false, // Is it immune to normal combat damage?
"T15",
TXT_TREE,
TREE_NORMAL,
ARMOR_WOOD,
(short const *)_List0011,
(short const *)_List1100
);
static TerrainTypeClass const Tree16Class(
TERRAIN_TREE16,
THEATERF_WINTER|THEATERF_TEMPERATE,
XYP_COORD(13,36), // Center base coordinate offset.
false, // Spawns Tiberium spontaneously?
true, // Does it have destruction animation?
false, // Does it have transformation (blossom tree) anim?
true, // Does it catch fire?
false, // Is this object crushable by heavy vehicles?
false, // Can this object be selected by the player?
false, // Can it be the target of a move or attack order?
true, // Don't make a big deal about it if it gets destroyed?
false, // Is it immune to normal combat damage?
"T16",
TXT_TREE,
TREE_NORMAL,
ARMOR_WOOD,
(short const *)_List0010,
(short const *)_List1001
);
static TerrainTypeClass const Tree17Class(
TERRAIN_TREE17,
THEATERF_WINTER|THEATERF_TEMPERATE,
XYP_COORD(18,44), // Center base coordinate offset.
false, // Spawns Tiberium spontaneously?
true, // Does it have destruction animation?
false, // Does it have transformation (blossom tree) anim?
true, // Does it catch fire?
false, // Is this object crushable by heavy vehicles?
false, // Can this object be selected by the player?
false, // Can it be the target of a move or attack order?
true, // Don't make a big deal about it if it gets destroyed?
false, // Is it immune to normal combat damage?
"T17",
TXT_TREE,
TREE_NORMAL,
ARMOR_WOOD,
(short const *)_List0010,
(short const *)_List1001
);
static TerrainTypeClass const Tree18Class(
TERRAIN_TREE18,
THEATERF_DESERT,
XYP_COORD(33,40), // Center base coordinate offset.
false, // Spawns Tiberium spontaneously?
true, // Does it have destruction animation?
false, // Does it have transformation (blossom tree) anim?
true, // Does it catch fire?
false, // Is this object crushable by heavy vehicles?
false, // Can this object be selected by the player?
false, // Can it be the target of a move or attack order?
true, // Don't make a big deal about it if it gets destroyed?
false, // Is it immune to normal combat damage?
"T18",
TXT_TREE,
TREE_NORMAL,
ARMOR_WOOD,
(short const *)_List000010,
(short const *)_List111101
);
static TerrainTypeClass const Split1Class(
TERRAIN_BLOSSOMTREE1,
THEATERF_TEMPERATE|THEATERF_WINTER,
XYP_COORD(18,44), // Center base coordinate offset.
true, // Spawns Tiberium spontaneously?
false, // Does it have destruction animation?
true, // Does it have transformation (blossom tree) anim?
false, // Does it catch fire?
false, // Is this object crushable by heavy vehicles?
false, // Can this object be selected by the player?
false, // Can it be the target of a move or attack order?
true, // Don't make a big deal about it if it gets destroyed?
true, // Is it immune to normal combat damage?
"SPLIT2",
TXT_BLOSSOM_TREE,
TREE_NORMAL,
ARMOR_WOOD,
(short const *)_List0010,
(short const *)_List1101
);
static TerrainTypeClass const Split2Class(
TERRAIN_BLOSSOMTREE2,
THEATERF_TEMPERATE|THEATERF_WINTER|THEATERF_DESERT,
XYP_COORD(18,44), // Center base coordinate offset.
true, // Spawns Tiberium spontaneously?
false, // Does it have destruction animation?
true, // Does it have transformation (blossom tree) anim?
false, // Does it catch fire?
false, // Is this object crushable by heavy vehicles?
false, // Can this object be selected by the player?
false, // Can it be the target of a move or attack order?
true, // Don't make a big deal about it if it gets destroyed?
true, // Is it immune to normal combat damage?
"SPLIT3",
TXT_BLOSSOM_TREE,
TREE_NORMAL,
ARMOR_WOOD,
(short const *)_List0010,
(short const *)_List1101
);
static TerrainTypeClass const Clump1Class(
TERRAIN_CLUMP1,
THEATERF_WINTER|THEATERF_TEMPERATE,
XYP_COORD(28,41), // Center base coordinate offset.
false, // Spawns Tiberium spontaneously?
false, // Does it have destruction animation?
false, // Does it have transformation (blossom tree) anim?
false, // Does it catch fire?
false, // Is this object crushable by heavy vehicles?
false, // Can this object be selected by the player?
false, // Can it be the target of a move or attack order?
true, // Don't make a big deal about it if it gets destroyed?
true, // Is it immune to normal combat damage?
"TC01",
TXT_TREE,
TREE_NORMAL,
ARMOR_WOOD,
(short const *)_List000110,
(short const *)_List110001
);
static TerrainTypeClass const Clump2Class(
TERRAIN_CLUMP2,
THEATERF_WINTER|THEATERF_TEMPERATE,
XYP_COORD(38,41), // Center base coordinate offset.
false, // Spawns Tiberium spontaneously?
false, // Does it have destruction animation?
false, // Does it have transformation (blossom tree) anim?
false, // Does it catch fire?
false, // Is this object crushable by heavy vehicles?
false, // Can this object be selected by the player?
false, // Can it be the target of a move or attack order?
true, // Don't make a big deal about it if it gets destroyed?
true, // Is it immune to normal combat damage?
"TC02",
TXT_TREE,
TREE_NORMAL,
ARMOR_WOOD,
(short const *)_List010110,
(short const *)_List101001
);
static TerrainTypeClass const Clump3Class(
TERRAIN_CLUMP3,
THEATERF_WINTER|THEATERF_TEMPERATE,
XYP_COORD(33,35), // Center base coordinate offset.
false, // Spawns Tiberium spontaneously?
false, // Does it have destruction animation?
false, // Does it have transformation (blossom tree) anim?
false, // Does it catch fire?
false, // Is this object crushable by heavy vehicles?
false, // Can this object be selected by the player?
false, // Can it be the target of a move or attack order?
true, // Don't make a big deal about it if it gets destroyed?
true, // Is it immune to normal combat damage?
"TC03",
TXT_TREE,
TREE_NORMAL,
ARMOR_WOOD,
(short const *)_List110110,
(short const *)_List001
);
static TerrainTypeClass const Clump4Class(
TERRAIN_CLUMP4,
THEATERF_WINTER|THEATERF_TEMPERATE,
XYP_COORD(44,49), // Center base coordinate offset.
false, // Spawns Tiberium spontaneously?
false, // Does it have destruction animation?
false, // Does it have transformation (blossom tree) anim?
false, // Does it catch fire?
false, // Is this object crushable by heavy vehicles?
false, // Can this object be selected by the player?
false, // Can it be the target of a move or attack order?
true, // Don't make a big deal about it if it gets destroyed?
true, // Is it immune to normal combat damage?
"TC04",
TXT_TREE,
TREE_NORMAL,
ARMOR_WOOD,
(short const *)_List000011101000,
(short const *)_List111000010110
);
static TerrainTypeClass const Clump5Class(
TERRAIN_CLUMP5,
THEATERF_WINTER|THEATERF_TEMPERATE,
XYP_COORD(49,58), // Center base coordinate offset.
false, // Spawns Tiberium spontaneously?
false, // Does it have destruction animation?
false, // Does it have transformation (blossom tree) anim?
false, // Does it catch fire?
false, // Is this object crushable by heavy vehicles?
false, // Can this object be selected by the player?
false, // Can it be the target of a move or attack order?
true, // Don't make a big deal about it if it gets destroyed?
true, // Is it immune to normal combat damage?
"TC05",
TXT_TREE,
TREE_NORMAL,
ARMOR_WOOD,
(short const *)_List001011100110,
(short const *)_List110000011001
);
static TerrainTypeClass const Rock1Class(
TERRAIN_ROCK1,
THEATERF_DESERT,
XYP_COORD(33,41), // Center base coordinate offset.
false, // Spawns Tiberium spontaneously?
false, // Does it have destruction animation?
false, // Does it have transformation (blossom tree) anim?
false, // Does it catch fire?
false, // Is this object crushable by heavy vehicles?
false, // Can this object be selected by the player?
false, // Can it be the target of a move or attack order?
true, // Don't make a big deal about it if it gets destroyed?
true, // Is it immune to normal combat damage?
"ROCK1",
TXT_ROCK,
1000,
ARMOR_STEEL,
(short const *)_List0011,
(short const *)_List111001
);
static TerrainTypeClass const Rock2Class(
TERRAIN_ROCK2,
THEATERF_DESERT,
XYP_COORD(24,23), // Center base coordinate offset.
false, // Spawns Tiberium spontaneously?
false, // Does it have destruction animation?
false, // Does it have transformation (blossom tree) anim?
false, // Does it catch fire?
false, // Is this object crushable by heavy vehicles?
false, // Can this object be selected by the player?
false, // Can it be the target of a move or attack order?
true, // Don't make a big deal about it if it gets destroyed?
true, // Is it immune to normal combat damage?
"ROCK2",
TXT_ROCK,
1000,
ARMOR_STEEL,
(short const *)_List1100,
(short const *)_List001
);
static TerrainTypeClass const Rock3Class(
TERRAIN_ROCK3,
THEATERF_DESERT,
XYP_COORD(20,39), // Center base coordinate offset.
false, // Spawns Tiberium spontaneously?
false, // Does it have destruction animation?
false, // Does it have transformation (blossom tree) anim?
false, // Does it catch fire?
false, // Is this object crushable by heavy vehicles?
false, // Can this object be selected by the player?
false, // Can it be the target of a move or attack order?
true, // Don't make a big deal about it if it gets destroyed?
true, // Is it immune to normal combat damage?
"ROCK3",
TXT_ROCK,
1000,
ARMOR_STEEL,
(short const *)_List000110,
(short const *)_List110001
);
static TerrainTypeClass const Rock4Class(
TERRAIN_ROCK4,
THEATERF_DESERT,
XYP_COORD(12,20), // Center base coordinate offset.
false, // Spawns Tiberium spontaneously?
false, // Does it have destruction animation?
false, // Does it have transformation (blossom tree) anim?
false, // Does it catch fire?
false, // Is this object crushable by heavy vehicles?
false, // Can this object be selected by the player?
false, // Can it be the target of a move or attack order?
true, // Don't make a big deal about it if it gets destroyed?
true, // Is it immune to normal combat damage?
"ROCK4",
TXT_ROCK,
1000,
ARMOR_STEEL,
(short const *)_List10,
(short const *)_List01
);
static TerrainTypeClass const Rock5Class(
TERRAIN_ROCK5,
THEATERF_DESERT,
XYP_COORD(17,19), // Center base coordinate offset.
false, // Spawns Tiberium spontaneously?
false, // Does it have destruction animation?
false, // Does it have transformation (blossom tree) anim?
false, // Does it catch fire?
false, // Is this object crushable by heavy vehicles?
false, // Can this object be selected by the player?
false, // Can it be the target of a move or attack order?
true, // Don't make a big deal about it if it gets destroyed?
true, // Is it immune to normal combat damage?
"ROCK5",
TXT_ROCK,
1000,
ARMOR_STEEL,
(short const *)_List10,
(short const *)_List01
);
static TerrainTypeClass const Rock6Class(
TERRAIN_ROCK6,
THEATERF_DESERT,
XYP_COORD(28,40), // Center base coordinate offset.
false, // Spawns Tiberium spontaneously?
false, // Does it have destruction animation?
false, // Does it have transformation (blossom tree) anim?
false, // Does it catch fire?
false, // Is this object crushable by heavy vehicles?
false, // Can this object be selected by the player?
false, // Can it be the target of a move or attack order?
true, // Don't make a big deal about it if it gets destroyed?
true, // Is it immune to normal combat damage?
"ROCK6",
TXT_ROCK,
1000,
ARMOR_STEEL,
(short const *)_List000111,
(short const *)_List110000
);
static TerrainTypeClass const Rock7Class(
TERRAIN_ROCK7,
THEATERF_DESERT,
XYP_COORD(57,22), // Center base coordinate offset.
false, // Spawns Tiberium spontaneously?
false, // Does it have destruction animation?
false, // Does it have transformation (blossom tree) anim?
false, // Does it catch fire?
false, // Is this object crushable by heavy vehicles?
false, // Can this object be selected by the player?
false, // Can it be the target of a move or attack order?
true, // Don't make a big deal about it if it gets destroyed?
true, // Is it immune to normal combat damage?
"ROCK7",
TXT_ROCK,
1000,
ARMOR_STEEL,
(short const *)_List11110,
(short const *)_List00001
);
TerrainTypeClass const * const TerrainTypeClass::Pointers[TERRAIN_COUNT] = {
&Tree1Class, // TERRAIN_TREE1
&Tree2Class, // TERRAIN_TREE2
&Tree3Class, // TERRAIN_TREE3
&Tree4Class, // TERRAIN_TREE4
&Tree5Class, // TERRAIN_TREE5
&Tree6Class, // TERRAIN_TREE6
&Tree7Class, // TERRAIN_TREE7
&Tree8Class, // TERRAIN_TREE8
&Tree9Class, // TERRAIN_TREE9
&Tree10Class, // TERRAIN_TREE10
&Tree11Class, // TERRAIN_TREE11
&Tree12Class, // TERRAIN_TREE12
&Tree13Class, // TERRAIN_TREE13
&Tree14Class, // TERRAIN_TREE14
&Tree15Class, // TERRAIN_TREE15
&Tree16Class, // TERRAIN_TREE16
&Tree17Class, // TERRAIN_TREE17
&Tree18Class, // TERRAIN_TREE18
&Split1Class, // TERRAIN_BLOSSOMTREE1
&Split2Class, // TERRAIN_BLOSSOMTREE2
&Clump1Class, // TERRAIN_CLUMP1
&Clump2Class, // TERRAIN_CLUMP2
&Clump3Class, // TERRAIN_CLUMP3
&Clump4Class, // TERRAIN_CLUMP4
&Clump5Class, // TERRAIN_CLUMP5
&Rock1Class, // TERRAIN_ROCK1
&Rock2Class, // TERRAIN_ROCK2
&Rock3Class, // TERRAIN_ROCK3
&Rock4Class, // TERRAIN_ROCK4
&Rock5Class, // TERRAIN_ROCK5
&Rock6Class, // TERRAIN_ROCK6
&Rock7Class // TERRAIN_ROCK7
};
/***********************************************************************************************
* TerrainTypeClass::TerrainTypeClass -- The general constructor for the terrain type objects. *
* *
* This is the constructor for terrain type objects. It is only used to construct the *
* static (constant) terrain type objects. *
* *
* INPUT: see below.. *
* *
* OUTPUT: none *
* *
* WARNINGS: none *
* *
* HISTORY: *
* 07/19/1994 JLB : Created. *
*=============================================================================================*/
TerrainTypeClass::TerrainTypeClass(
TerrainType terrain,
int theater,
COORDINATE centerbase,
bool is_spawn,
bool is_destroyable,
bool is_transformable,
bool is_flammable,
bool is_crushable,
bool is_selectable,
bool is_legal_target,
bool is_insignificant,
bool is_immune,
char const *ininame,
int fullname, unsigned short strength, ArmorType armor, short const *occupy, short const *overlap) :
ObjectTypeClass(true, is_flammable, is_crushable, true, is_selectable,
is_legal_target, is_insignificant, is_immune,
fullname, ininame, armor, strength)
{
CenterBase = centerbase;
IsTiberiumSpawn = is_spawn;
IsDestroyable = is_destroyable;
IsTransformable = is_transformable;
Theater = theater;
Type = terrain;
Occupy = occupy;
Overlap = overlap;
}
/***********************************************************************************************
* TerrainTypeClass::Init -- Loads terrain object shape files. *
* *
* This routine is used to load up the terrain object shape files. *
* The shape files loaded depends on theater. *
* *
* INPUT: theater -- The theater to load the terrain shape data for. *
* *
* OUTPUT: none *
* *
* WARNINGS: none *
* *
* HISTORY: *
* 05/16/1994 JLB : Created. *
*=============================================================================================*/
void TerrainTypeClass::Init(TheaterType theater)
{
if (theater != LastTheater){
for (TerrainType index = TERRAIN_FIRST; index < TERRAIN_COUNT; index++) {
TerrainTypeClass const & terrain = As_Reference(index);
char fullname[_MAX_FNAME+_MAX_EXT];
/*
** Clear any existing shape pointer. All terrain is theater specific, thus if
** it isn't loaded in this routine, it shouldn't exist at all.
*/
((void const *&)terrain.ImageData) = NULL;
if (terrain.Theater & (1 << theater)) {
/*
** Load in the appropriate object shape data.
*/
_makepath(fullname, NULL, NULL, terrain.IniName, Theaters[theater].Suffix);
((void const *&)terrain.ImageData) = MixFileClass::Retrieve(fullname);
IsTheaterShape = true;
if (terrain.RadarIcon) delete[] (char *)terrain.RadarIcon;
((void const *&)terrain.RadarIcon) = Get_Radar_Icon(terrain.Get_Image_Data(), 0, 1, 3);
IsTheaterShape = false;
}
}
}
}
/***********************************************************************************************
* TerrainTypeClass::From_Name -- Convert name to terrain type. *
*  *
* This routine is used to convert a text name into the matching *
* terrain type number. This is used during scenario initialization. *
* *
* INPUT: name -- The name to convert. *
* *
* OUTPUT: Returns the TerrainType that matches the name specified. If *
* no match was found, then TERRAIN_NONE is returned. *
* *
* WARNINGS: none *
* *
* HISTORY: *
* 05/16/1994 JLB : Created. *
*=============================================================================================*/
TerrainType TerrainTypeClass::From_Name(char const * name)
{
TerrainType index;
if (name) {
for (index = TERRAIN_FIRST; index < TERRAIN_COUNT; index++) {
if (stricmp(name, Pointers[index]->IniName) == 0) {
return(index);
}
}
}
return(TERRAIN_NONE);
}
#ifdef SCENARIO_EDITOR
/***********************************************************************************************
* TerrainTypeClass::Display -- Display a generic terrain object. *
* *
* This routine is used to display a generic terrain object. Typical *
* use is during scenario editing. *
* *
* INPUT: x,y -- Pixel coordinates to display object at (centered). *
* *
* window-- The window to display the object within. *
* *
* OUTPUT: none *
* *
* WARNINGS: none *
* *
* HISTORY: *
* 05/16/1994 JLB : Created. *
*=============================================================================================*/
void TerrainTypeClass::Display(int x, int y, WindowNumberType window, HousesType) const
{
CC_Draw_Shape(Get_Image_Data(), 0, x, y, window, SHAPE_NORMAL|SHAPE_CENTER|SHAPE_WIN_REL);
}
/***********************************************************************************************
* TerrainTypeClass::Prep_For_Add -- Prepares to add terrain object. *
* *
* Submits all of the valid terrain objects to the scenario editor for possible selection *
* and subsequent placement on the map. All terrain objects, that have a valid shape *
* file available, are added. *
* *
* INPUT: none *
* *
* OUTPUT: none *
* *
* WARNINGS: none *
* *
* HISTORY: *
* 05/23/1994 JLB : Created. *
*=============================================================================================*/
void TerrainTypeClass::Prep_For_Add(void)
{
for (TerrainType index = TERRAIN_FIRST; index < TERRAIN_COUNT; index++) {
if (As_Reference(index).Get_Image_Data()) {
Map.Add_To_List(&As_Reference(index));
}
}
}
#endif
/***********************************************************************************************
* TerrainTypeClass::Create_And_Place -- Creates and places terrain object on map. *
* *
* This support routine is used by the scenario editor to add a terrain object to the map. *
* *
* INPUT: cell -- The cell to place the terrain object in. *
* *
* OUTPUT: bool; Was the placement successful? *
* *
* WARNINGS: none *
* *
* HISTORY: *
* 05/28/1994 JLB : Created. *
*=============================================================================================*/
bool TerrainTypeClass::Create_And_Place(CELL cell, HousesType ) const
{
if (new TerrainClass(Type, cell)) {
return(true);
}
return(false);
}
/***********************************************************************************************
* TerrainTypeClass::Create_On_Of -- Creates a terrain object from type. *
* *
* This is used to create a terrain object by using the terrain type as a guide. This *
* routine is typically used by the scenario editor in order to place a terrain object *
* onto the map. *
* *
* INPUT: none *
* *
* OUTPUT: Returns with a pointer to the created terrain object or NULL if one couldn't be *
* created. *
* *
* WARNINGS: none *
* *
* HISTORY: *
* 07/19/1994 JLB : Created. *
*=============================================================================================*/
ObjectClass * TerrainTypeClass::Create_One_Of(HouseClass *) const
{
return(new TerrainClass(Type, -1));
}
short const * TerrainTypeClass::Occupy_List(bool ) const
{
if (Occupy) return(Occupy);
static short const _simple[1] = {
REFRESH_EOL
};
return(&_simple[0]);
}
short const * TerrainTypeClass::Overlap_List(void) const
{
if (Overlap) return(Overlap);
static short const _simple[1] = {
REFRESH_EOL
};
return(&_simple[0]);
}