src/industry.h
author rubidium
Fri, 06 Jul 2007 22:33:16 +0000
changeset 7185 1b6b21b69c2d
parent 7177 f9796d5be926
child 7186 818eba1f20d5
permissions -rw-r--r--
(svn r10459) -Codechange: add helper functions to determine whether an industry is a primary industry and how much it costs to build such an industry.
2186
db48cf29b983 (svn r2701) Insert Id tags into all source files
tron
parents: 1330
diff changeset
     1
/* $Id$ */
db48cf29b983 (svn r2701) Insert Id tags into all source files
tron
parents: 1330
diff changeset
     2
6201
bee01dc45e39 (svn r8987) -Cleanup: doxygen changes. Again. Mostly (still) @files missing tags and (more than just) a few comments style.
belugas
parents: 6092
diff changeset
     3
/** @file industry.h */
bee01dc45e39 (svn r8987) -Cleanup: doxygen changes. Again. Mostly (still) @files missing tags and (more than just) a few comments style.
belugas
parents: 6092
diff changeset
     4
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
     5
#ifndef INDUSTRY_H
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
     6
#define INDUSTRY_H
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
     7
5216
8bd14ee39af2 (svn r7331) - Codechange: Rename all memory pool macro's and types to "old pool", so the new pool implementation can be committed alongside it.
matthijs
parents: 4976
diff changeset
     8
#include "oldpool.h"
6390
802629b3c7f1 (svn r9520) -Codechange: Add the notion of Industry behaviour. It means what an industry can do (plant fields, cut trees, do not change production), what can be done to it (disasters like mine subsidence, jet/chopper attack), when it can be built etc...
belugas
parents: 6307
diff changeset
     9
#include "helpers.hpp"
1267
ba42a505ab8a (svn r1771) -Add: Industries are now dynamic (up to 64k industries). Generating
truelight
parents: 1220
diff changeset
    10
3689
50a3fd4ba752 (svn r4614) CodeChange : Cleanup of industry_cmd (Step-4).
belugas
parents: 3499
diff changeset
    11
typedef byte IndustryGfx;
50a3fd4ba752 (svn r4614) CodeChange : Cleanup of industry_cmd (Step-4).
belugas
parents: 3499
diff changeset
    12
typedef uint8 IndustryType;
50a3fd4ba752 (svn r4614) CodeChange : Cleanup of industry_cmd (Step-4).
belugas
parents: 3499
diff changeset
    13
4328
1b3940c35724 (svn r6001) -Feature: when removing a farm, his farmland is removed too (over time) (based on peter1138's patch, FS#82)
truelight
parents: 4326
diff changeset
    14
enum {
6743
e84a3b89d46b (svn r9976) -Codechange: Declare a writable array of specs for industry and industry tiles.
belugas
parents: 6741
diff changeset
    15
	INVALID_INDUSTRY       = 0xFFFF,
e84a3b89d46b (svn r9976) -Codechange: Declare a writable array of specs for industry and industry tiles.
belugas
parents: 6741
diff changeset
    16
	NEW_INDUSTRYOFFSET     = 37,                         ///< original number of industries
e84a3b89d46b (svn r9976) -Codechange: Declare a writable array of specs for industry and industry tiles.
belugas
parents: 6741
diff changeset
    17
	NUM_INDUSTRYTYPES      = 37,                         ///< total number of industries, new and old
e84a3b89d46b (svn r9976) -Codechange: Declare a writable array of specs for industry and industry tiles.
belugas
parents: 6741
diff changeset
    18
	INDUSTRYTILE_NOANIM    = 0xFF,                       ///< flag to mark industry tiles as having no animation
e84a3b89d46b (svn r9976) -Codechange: Declare a writable array of specs for industry and industry tiles.
belugas
parents: 6741
diff changeset
    19
	NEW_INDUSTRYTILEOFFSET = 175,                        ///< original number of tiles
e84a3b89d46b (svn r9976) -Codechange: Declare a writable array of specs for industry and industry tiles.
belugas
parents: 6741
diff changeset
    20
	INVALID_INDUSTRYTYPE   = NUM_INDUSTRYTYPES,          ///< one above amount is considered invalid
e84a3b89d46b (svn r9976) -Codechange: Declare a writable array of specs for industry and industry tiles.
belugas
parents: 6741
diff changeset
    21
	NUM_INDUSTRYTILES      = NEW_INDUSTRYTILEOFFSET,     ///< total number of industry tiles, new and old
e84a3b89d46b (svn r9976) -Codechange: Declare a writable array of specs for industry and industry tiles.
belugas
parents: 6741
diff changeset
    22
	INVALID_INDUSTRYTILE   = NUM_INDUSTRYTILES,          ///< one above amount is considered invalid
4328
1b3940c35724 (svn r6001) -Feature: when removing a farm, his farmland is removed too (over time) (based on peter1138's patch, FS#82)
truelight
parents: 4326
diff changeset
    23
};
1b3940c35724 (svn r6001) -Feature: when removing a farm, his farmland is removed too (over time) (based on peter1138's patch, FS#82)
truelight
parents: 4326
diff changeset
    24
6765
50903afa1a48 (svn r10001) -Codechange: Add support for removing dynamically allocated newgrf data
belugas
parents: 6743
diff changeset
    25
enum {
50903afa1a48 (svn r10001) -Codechange: Add support for removing dynamically allocated newgrf data
belugas
parents: 6743
diff changeset
    26
	CLEAN_RANDOMSOUNDS,    ///< Free the dynamically allocated sounds table
50903afa1a48 (svn r10001) -Codechange: Add support for removing dynamically allocated newgrf data
belugas
parents: 6743
diff changeset
    27
	CLEAN_TILELSAYOUT,     ///< Free the dynamically allocated tile layout structure
50903afa1a48 (svn r10001) -Codechange: Add support for removing dynamically allocated newgrf data
belugas
parents: 6743
diff changeset
    28
};
50903afa1a48 (svn r10001) -Codechange: Add support for removing dynamically allocated newgrf data
belugas
parents: 6743
diff changeset
    29
6248
e4a2ed7e5613 (svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents: 6247
diff changeset
    30
enum IndustryLifeType {
7144
8e73641511f3 (svn r10418) -Codechange: implement/resurrect the industry production flags.
rubidium
parents: 7132
diff changeset
    31
	INDUSTRYLIFE_BLACK_HOLE =      0, ///< Like power plants and banks
8e73641511f3 (svn r10418) -Codechange: implement/resurrect the industry production flags.
rubidium
parents: 7132
diff changeset
    32
	INDUSTRYLIFE_EXTRACTIVE = 1 << 0, ///< Like mines
8e73641511f3 (svn r10418) -Codechange: implement/resurrect the industry production flags.
rubidium
parents: 7132
diff changeset
    33
	INDUSTRYLIFE_ORGANIC    = 1 << 1, ///< Like forests
8e73641511f3 (svn r10418) -Codechange: implement/resurrect the industry production flags.
rubidium
parents: 7132
diff changeset
    34
	INDUSTRYLIFE_PROCESSING = 1 << 2, ///< Like factories
6248
e4a2ed7e5613 (svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents: 6247
diff changeset
    35
};
4924
b6fa01b5a80d (svn r6904) -CodeChange : Cleanup of industry_cmd (Step-5).
belugas
parents: 4403
diff changeset
    36
6440
862590c931fb (svn r9577) -Codechange: Add notion and data for industry map colour, used in the smallmap_gui. Not used yet.
belugas
parents: 6414
diff changeset
    37
/* Procedures that can be run to check whether an industry may
862590c931fb (svn r9577) -Codechange: Add notion and data for industry map colour, used in the smallmap_gui. Not used yet.
belugas
parents: 6414
diff changeset
    38
 * build at location the given to the procedure */
862590c931fb (svn r9577) -Codechange: Add notion and data for industry map colour, used in the smallmap_gui. Not used yet.
belugas
parents: 6414
diff changeset
    39
enum CheckProc {
7173
64d122c20efb (svn r10447) -Codechange: Don't need to specify values on an enum when those values are contiguous
belugas
parents: 7165
diff changeset
    40
	CHECK_NOTHING,
64d122c20efb (svn r10447) -Codechange: Don't need to specify values on an enum when those values are contiguous
belugas
parents: 7165
diff changeset
    41
	CHECK_FOREST,
64d122c20efb (svn r10447) -Codechange: Don't need to specify values on an enum when those values are contiguous
belugas
parents: 7165
diff changeset
    42
	CHECK_REFINERY,
64d122c20efb (svn r10447) -Codechange: Don't need to specify values on an enum when those values are contiguous
belugas
parents: 7165
diff changeset
    43
	CHECK_FARM,
64d122c20efb (svn r10447) -Codechange: Don't need to specify values on an enum when those values are contiguous
belugas
parents: 7165
diff changeset
    44
	CHECK_PLANTATION,
64d122c20efb (svn r10447) -Codechange: Don't need to specify values on an enum when those values are contiguous
belugas
parents: 7165
diff changeset
    45
	CHECK_WATER,
64d122c20efb (svn r10447) -Codechange: Don't need to specify values on an enum when those values are contiguous
belugas
parents: 7165
diff changeset
    46
	CHECK_LUMBERMILL,
64d122c20efb (svn r10447) -Codechange: Don't need to specify values on an enum when those values are contiguous
belugas
parents: 7165
diff changeset
    47
	CHECK_BUBBLEGEN,
64d122c20efb (svn r10447) -Codechange: Don't need to specify values on an enum when those values are contiguous
belugas
parents: 7165
diff changeset
    48
	CHECK_OIL_RIG,
6440
862590c931fb (svn r9577) -Codechange: Add notion and data for industry map colour, used in the smallmap_gui. Not used yet.
belugas
parents: 6414
diff changeset
    49
	CHECK_END,
862590c931fb (svn r9577) -Codechange: Add notion and data for industry map colour, used in the smallmap_gui. Not used yet.
belugas
parents: 6414
diff changeset
    50
};
862590c931fb (svn r9577) -Codechange: Add notion and data for industry map colour, used in the smallmap_gui. Not used yet.
belugas
parents: 6414
diff changeset
    51
6390
802629b3c7f1 (svn r9520) -Codechange: Add the notion of Industry behaviour. It means what an industry can do (plant fields, cut trees, do not change production), what can be done to it (disasters like mine subsidence, jet/chopper attack), when it can be built etc...
belugas
parents: 6307
diff changeset
    52
enum IndustyBehaviour {
802629b3c7f1 (svn r9520) -Codechange: Add the notion of Industry behaviour. It means what an industry can do (plant fields, cut trees, do not change production), what can be done to it (disasters like mine subsidence, jet/chopper attack), when it can be built etc...
belugas
parents: 6307
diff changeset
    53
	INDUSTRYBEH_NONE                  =      0,
802629b3c7f1 (svn r9520) -Codechange: Add the notion of Industry behaviour. It means what an industry can do (plant fields, cut trees, do not change production), what can be done to it (disasters like mine subsidence, jet/chopper attack), when it can be built etc...
belugas
parents: 6307
diff changeset
    54
	INDUSTRYBEH_PLANT_FIELDS          = 1 << 0,  ///< periodically plants fileds around itself (temp and artic farms)
802629b3c7f1 (svn r9520) -Codechange: Add the notion of Industry behaviour. It means what an industry can do (plant fields, cut trees, do not change production), what can be done to it (disasters like mine subsidence, jet/chopper attack), when it can be built etc...
belugas
parents: 6307
diff changeset
    55
	INDUSTRYBEH_CUT_TREES             = 1 << 1,  ///< cuts trees and produce first output cargo from them (lumber mill)
802629b3c7f1 (svn r9520) -Codechange: Add the notion of Industry behaviour. It means what an industry can do (plant fields, cut trees, do not change production), what can be done to it (disasters like mine subsidence, jet/chopper attack), when it can be built etc...
belugas
parents: 6307
diff changeset
    56
	INDUSTRYBEH_BUILT_ONWATER         = 1 << 2,  ///< is built on water (oil rig)
802629b3c7f1 (svn r9520) -Codechange: Add the notion of Industry behaviour. It means what an industry can do (plant fields, cut trees, do not change production), what can be done to it (disasters like mine subsidence, jet/chopper attack), when it can be built etc...
belugas
parents: 6307
diff changeset
    57
	INDUSTRYBEH_TOWN1200_MORE         = 1 << 3,  ///< can only be built in towns larger then 1200 inhabitants (temperate bank)
802629b3c7f1 (svn r9520) -Codechange: Add the notion of Industry behaviour. It means what an industry can do (plant fields, cut trees, do not change production), what can be done to it (disasters like mine subsidence, jet/chopper attack), when it can be built etc...
belugas
parents: 6307
diff changeset
    58
	INDUSTRYBEH_ONLY_INTOWN           = 1 << 4,  ///< can only be built in towns (arctic/tropic banks, water tower)
802629b3c7f1 (svn r9520) -Codechange: Add the notion of Industry behaviour. It means what an industry can do (plant fields, cut trees, do not change production), what can be done to it (disasters like mine subsidence, jet/chopper attack), when it can be built etc...
belugas
parents: 6307
diff changeset
    59
	INDUSTRYBEH_ONLY_NEARTOWN         = 1 << 5,  ///< is always built near towns (toy shop)
802629b3c7f1 (svn r9520) -Codechange: Add the notion of Industry behaviour. It means what an industry can do (plant fields, cut trees, do not change production), what can be done to it (disasters like mine subsidence, jet/chopper attack), when it can be built etc...
belugas
parents: 6307
diff changeset
    60
	INDUSTRYBEH_PLANT_ON_BUILT        = 1 << 6,  ///< Fields are planted around when built (all farms)
7132
0af71cb216ff (svn r10406) -Fix [FS#968]: only industries in the temperate climate should be affected by the "do not increase production" flag.
rubidium
parents: 7107
diff changeset
    61
	INDUSTRYBEH_DONT_INCR_PROD        = 1 << 7,  ///< do not increase production (oil wells) in the temperate climate
6390
802629b3c7f1 (svn r9520) -Codechange: Add the notion of Industry behaviour. It means what an industry can do (plant fields, cut trees, do not change production), what can be done to it (disasters like mine subsidence, jet/chopper attack), when it can be built etc...
belugas
parents: 6307
diff changeset
    62
	INDUSTRYBEH_BEFORE_1950           = 1 << 8,  ///< can only be built before 1950 (oil wells)
802629b3c7f1 (svn r9520) -Codechange: Add the notion of Industry behaviour. It means what an industry can do (plant fields, cut trees, do not change production), what can be done to it (disasters like mine subsidence, jet/chopper attack), when it can be built etc...
belugas
parents: 6307
diff changeset
    63
	INDUSTRYBEH_AFTER_1960            = 1 << 9,  ///< can only be built after 1960 (oil rigs)
802629b3c7f1 (svn r9520) -Codechange: Add the notion of Industry behaviour. It means what an industry can do (plant fields, cut trees, do not change production), what can be done to it (disasters like mine subsidence, jet/chopper attack), when it can be built etc...
belugas
parents: 6307
diff changeset
    64
	INDUSTRYBEH_AI_AIRSHIP_ROUTES     = 1 << 10, ///< ai will attempt to establish air/ship routes to this industry (oil rig)
802629b3c7f1 (svn r9520) -Codechange: Add the notion of Industry behaviour. It means what an industry can do (plant fields, cut trees, do not change production), what can be done to it (disasters like mine subsidence, jet/chopper attack), when it can be built etc...
belugas
parents: 6307
diff changeset
    65
	INDUSTRYBEH_AIRPLANE_ATTACKS      = 1 << 11, ///< can be exploded by a military airplane (oil refinery)
802629b3c7f1 (svn r9520) -Codechange: Add the notion of Industry behaviour. It means what an industry can do (plant fields, cut trees, do not change production), what can be done to it (disasters like mine subsidence, jet/chopper attack), when it can be built etc...
belugas
parents: 6307
diff changeset
    66
	INDUSTRYBEH_CHOPPER_ATTACKS       = 1 << 12, ///< can be exploded by a military helicopter (factory)
802629b3c7f1 (svn r9520) -Codechange: Add the notion of Industry behaviour. It means what an industry can do (plant fields, cut trees, do not change production), what can be done to it (disasters like mine subsidence, jet/chopper attack), when it can be built etc...
belugas
parents: 6307
diff changeset
    67
	INDUSTRYBEH_CAN_SUBSIDENCE        = 1 << 13, ///< can cause a subsidence (coal mine, shaft that collapses)
802629b3c7f1 (svn r9520) -Codechange: Add the notion of Industry behaviour. It means what an industry can do (plant fields, cut trees, do not change production), what can be done to it (disasters like mine subsidence, jet/chopper attack), when it can be built etc...
belugas
parents: 6307
diff changeset
    68
};
802629b3c7f1 (svn r9520) -Codechange: Add the notion of Industry behaviour. It means what an industry can do (plant fields, cut trees, do not change production), what can be done to it (disasters like mine subsidence, jet/chopper attack), when it can be built etc...
belugas
parents: 6307
diff changeset
    69
802629b3c7f1 (svn r9520) -Codechange: Add the notion of Industry behaviour. It means what an industry can do (plant fields, cut trees, do not change production), what can be done to it (disasters like mine subsidence, jet/chopper attack), when it can be built etc...
belugas
parents: 6307
diff changeset
    70
802629b3c7f1 (svn r9520) -Codechange: Add the notion of Industry behaviour. It means what an industry can do (plant fields, cut trees, do not change production), what can be done to it (disasters like mine subsidence, jet/chopper attack), when it can be built etc...
belugas
parents: 6307
diff changeset
    71
DECLARE_ENUM_AS_BIT_SET(IndustyBehaviour);
802629b3c7f1 (svn r9520) -Codechange: Add the notion of Industry behaviour. It means what an industry can do (plant fields, cut trees, do not change production), what can be done to it (disasters like mine subsidence, jet/chopper attack), when it can be built etc...
belugas
parents: 6307
diff changeset
    72
6201
bee01dc45e39 (svn r8987) -Cleanup: doxygen changes. Again. Mostly (still) @files missing tags and (more than just) a few comments style.
belugas
parents: 6092
diff changeset
    73
/**
bee01dc45e39 (svn r8987) -Cleanup: doxygen changes. Again. Mostly (still) @files missing tags and (more than just) a few comments style.
belugas
parents: 6092
diff changeset
    74
 * Defines the internal data of a functionnal industry
bee01dc45e39 (svn r8987) -Cleanup: doxygen changes. Again. Mostly (still) @files missing tags and (more than just) a few comments style.
belugas
parents: 6092
diff changeset
    75
 */
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    76
struct Industry {
6819
f986f54e2660 (svn r10058) -Codechange: give some industry variable sensible names (like not telling "last_mo_production" when it is the production of the current month).
rubidium
parents: 6815
diff changeset
    77
	TileIndex xy;                       ///< coordinates of the primary tile the industry is built one
6201
bee01dc45e39 (svn r8987) -Cleanup: doxygen changes. Again. Mostly (still) @files missing tags and (more than just) a few comments style.
belugas
parents: 6092
diff changeset
    78
	byte width;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    79
	byte height;
6819
f986f54e2660 (svn r10058) -Codechange: give some industry variable sensible names (like not telling "last_mo_production" when it is the production of the current month).
rubidium
parents: 6815
diff changeset
    80
	const Town *town;                   ///< Nearest town
7165
fb78336b205f (svn r10439) -Codechange: initial steps for customized industry productions.
rubidium
parents: 7144
diff changeset
    81
	uint16 produced_cargo_waiting[2];   ///< amount of cargo produced per cargo
fb78336b205f (svn r10439) -Codechange: initial steps for customized industry productions.
rubidium
parents: 7144
diff changeset
    82
	uint16 incoming_cargo_waiting[3];   ///< incoming cargo waiting to be processed
6819
f986f54e2660 (svn r10058) -Codechange: give some industry variable sensible names (like not telling "last_mo_production" when it is the production of the current month).
rubidium
parents: 6815
diff changeset
    83
	byte production_rate[2];            ///< production rate for each cargo
f986f54e2660 (svn r10058) -Codechange: give some industry variable sensible names (like not telling "last_mo_production" when it is the production of the current month).
rubidium
parents: 6815
diff changeset
    84
	byte prod_level;                    ///< general production level
f986f54e2660 (svn r10058) -Codechange: give some industry variable sensible names (like not telling "last_mo_production" when it is the production of the current month).
rubidium
parents: 6815
diff changeset
    85
	uint16 this_month_production[2];    ///< stats of this month's production per cargo
f986f54e2660 (svn r10058) -Codechange: give some industry variable sensible names (like not telling "last_mo_production" when it is the production of the current month).
rubidium
parents: 6815
diff changeset
    86
	uint16 this_month_transported[2];   ///< stats of this month's transport per cargo
f986f54e2660 (svn r10058) -Codechange: give some industry variable sensible names (like not telling "last_mo_production" when it is the production of the current month).
rubidium
parents: 6815
diff changeset
    87
	byte last_month_pct_transported[2]; ///< percentage transported per cargo in the last full month
f986f54e2660 (svn r10058) -Codechange: give some industry variable sensible names (like not telling "last_mo_production" when it is the production of the current month).
rubidium
parents: 6815
diff changeset
    88
	uint16 last_month_production[2];    ///< total units produced per cargo in the last full month
f986f54e2660 (svn r10058) -Codechange: give some industry variable sensible names (like not telling "last_mo_production" when it is the production of the current month).
rubidium
parents: 6815
diff changeset
    89
	uint16 last_month_transported[2];   ///< total units transported per cargo in the last full month
f986f54e2660 (svn r10058) -Codechange: give some industry variable sensible names (like not telling "last_mo_production" when it is the production of the current month).
rubidium
parents: 6815
diff changeset
    90
	uint16 counter;                     ///< used for animation and/or production (if available cargo)
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    91
6819
f986f54e2660 (svn r10058) -Codechange: give some industry variable sensible names (like not telling "last_mo_production" when it is the production of the current month).
rubidium
parents: 6815
diff changeset
    92
	IndustryType type;                  ///< type of industry. see IT_COAL_MINE and others
f986f54e2660 (svn r10058) -Codechange: give some industry variable sensible names (like not telling "last_mo_production" when it is the production of the current month).
rubidium
parents: 6815
diff changeset
    93
	OwnerByte owner;                    ///< owner of the industry.  Which SHOULD always be (imho) OWNER_NONE
f986f54e2660 (svn r10058) -Codechange: give some industry variable sensible names (like not telling "last_mo_production" when it is the production of the current month).
rubidium
parents: 6815
diff changeset
    94
	byte random_color;                  ///< randomized colour of the industry, for display purpose
f986f54e2660 (svn r10058) -Codechange: give some industry variable sensible names (like not telling "last_mo_production" when it is the production of the current month).
rubidium
parents: 6815
diff changeset
    95
	Year last_prod_year;                ///< last year of production
f986f54e2660 (svn r10058) -Codechange: give some industry variable sensible names (like not telling "last_mo_production" when it is the production of the current month).
rubidium
parents: 6815
diff changeset
    96
	byte was_cargo_delivered;           ///< flag that indicate this has been the closest industry chosen for cargo delivery by a station. see DeliverGoodsToIndustry
919
544f374ee392 (svn r1407) -Codechange: changed a lot around _stations, _vehicles, _towns and _industries
truelight
parents: 830
diff changeset
    97
6819
f986f54e2660 (svn r10058) -Codechange: give some industry variable sensible names (like not telling "last_mo_production" when it is the production of the current month).
rubidium
parents: 6815
diff changeset
    98
	IndustryID index;                   ///< index of the industry in the pool of industries
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    99
};
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   100
6248
e4a2ed7e5613 (svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents: 6247
diff changeset
   101
struct IndustryTileTable {
3689
50a3fd4ba752 (svn r4614) CodeChange : Cleanup of industry_cmd (Step-4).
belugas
parents: 3499
diff changeset
   102
	TileIndexDiffC ti;
50a3fd4ba752 (svn r4614) CodeChange : Cleanup of industry_cmd (Step-4).
belugas
parents: 3499
diff changeset
   103
	IndustryGfx gfx;
6248
e4a2ed7e5613 (svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents: 6247
diff changeset
   104
};
3689
50a3fd4ba752 (svn r4614) CodeChange : Cleanup of industry_cmd (Step-4).
belugas
parents: 3499
diff changeset
   105
6675
1c318230fd5b (svn r9906) -Codechange: Add common properties for both industry and industry tiles specs
belugas
parents: 6655
diff changeset
   106
/** Data related to the handling of grf files.  Common to both industry and industry tile */
1c318230fd5b (svn r9906) -Codechange: Add common properties for both industry and industry tiles specs
belugas
parents: 6655
diff changeset
   107
struct GRFFileProps {
1c318230fd5b (svn r9906) -Codechange: Add common properties for both industry and industry tiles specs
belugas
parents: 6655
diff changeset
   108
	uint8 subst_id;
1c318230fd5b (svn r9906) -Codechange: Add common properties for both industry and industry tiles specs
belugas
parents: 6655
diff changeset
   109
	uint16 local_id;                      ///< id defined by the grf file for this industry
1c318230fd5b (svn r9906) -Codechange: Add common properties for both industry and industry tiles specs
belugas
parents: 6655
diff changeset
   110
	struct SpriteGroup *spritegroup;      ///< pointer to the different sprites of the industry
6848
b13a56180454 (svn r10088) -Codechange: A typo and a code-style
belugas
parents: 6839
diff changeset
   111
	const struct GRFFile *grffile;        ///< grf file that introduced this industry
7107
3d6853f36dea (svn r10379) -Codechange: silence a compiler warning (which was right) about a variable too little for what's been asked to do
belugas
parents: 6848
diff changeset
   112
	uint16 override;                      ///< id of the entity been replaced by
6675
1c318230fd5b (svn r9906) -Codechange: Add common properties for both industry and industry tiles specs
belugas
parents: 6655
diff changeset
   113
};
1c318230fd5b (svn r9906) -Codechange: Add common properties for both industry and industry tiles specs
belugas
parents: 6655
diff changeset
   114
6201
bee01dc45e39 (svn r8987) -Cleanup: doxygen changes. Again. Mostly (still) @files missing tags and (more than just) a few comments style.
belugas
parents: 6092
diff changeset
   115
/**
bee01dc45e39 (svn r8987) -Cleanup: doxygen changes. Again. Mostly (still) @files missing tags and (more than just) a few comments style.
belugas
parents: 6092
diff changeset
   116
 * Defines the data structure for constructing industry.
bee01dc45e39 (svn r8987) -Cleanup: doxygen changes. Again. Mostly (still) @files missing tags and (more than just) a few comments style.
belugas
parents: 6092
diff changeset
   117
 */
6248
e4a2ed7e5613 (svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents: 6247
diff changeset
   118
struct IndustrySpec {
6201
bee01dc45e39 (svn r8987) -Cleanup: doxygen changes. Again. Mostly (still) @files missing tags and (more than just) a few comments style.
belugas
parents: 6092
diff changeset
   119
	const IndustryTileTable *const *table;///< List of the tiles composing the industry
bee01dc45e39 (svn r8987) -Cleanup: doxygen changes. Again. Mostly (still) @files missing tags and (more than just) a few comments style.
belugas
parents: 6092
diff changeset
   120
	byte num_table;                       ///< Number of elements in the table
7177
f9796d5be926 (svn r10451) -Add: support for "prospecting" raw industries, i.e. you pay an amount of money and then it might (with a given chance) build a raw industry somewhere on the map.
rubidium
parents: 7173
diff changeset
   121
	uint8 cost_multiplier;                ///< Base cost multiplier.
f9796d5be926 (svn r10451) -Add: support for "prospecting" raw industries, i.e. you pay an amount of money and then it might (with a given chance) build a raw industry somewhere on the map.
rubidium
parents: 7173
diff changeset
   122
	uint16 raw_industry_cost_multiplier;  ///< Multiplier for the raw industries cost
f9796d5be926 (svn r10451) -Add: support for "prospecting" raw industries, i.e. you pay an amount of money and then it might (with a given chance) build a raw industry somewhere on the map.
rubidium
parents: 7173
diff changeset
   123
	uint32 prospecting_chance;            ///< Chance prospecting succeeds
6201
bee01dc45e39 (svn r8987) -Cleanup: doxygen changes. Again. Mostly (still) @files missing tags and (more than just) a few comments style.
belugas
parents: 6092
diff changeset
   124
	IndustryType conflicting[3];          ///< Industries this industry cannot be close to
bee01dc45e39 (svn r8987) -Cleanup: doxygen changes. Again. Mostly (still) @files missing tags and (more than just) a few comments style.
belugas
parents: 6092
diff changeset
   125
	byte check_proc;                      ///< Index to a procedure to check for conflicting circumstances
3689
50a3fd4ba752 (svn r4614) CodeChange : Cleanup of industry_cmd (Step-4).
belugas
parents: 3499
diff changeset
   126
	CargoID produced_cargo[2];
50a3fd4ba752 (svn r4614) CodeChange : Cleanup of industry_cmd (Step-4).
belugas
parents: 3499
diff changeset
   127
	byte production_rate[2];
6201
bee01dc45e39 (svn r8987) -Cleanup: doxygen changes. Again. Mostly (still) @files missing tags and (more than just) a few comments style.
belugas
parents: 6092
diff changeset
   128
	byte minimal_cargo;                   ///< minimum amount of cargo transported to the stations
bee01dc45e39 (svn r8987) -Cleanup: doxygen changes. Again. Mostly (still) @files missing tags and (more than just) a few comments style.
belugas
parents: 6092
diff changeset
   129
	                                      ///< If the waiting cargo is less than this number, no cargo is moved to it
bee01dc45e39 (svn r8987) -Cleanup: doxygen changes. Again. Mostly (still) @files missing tags and (more than just) a few comments style.
belugas
parents: 6092
diff changeset
   130
	CargoID accepts_cargo[3];             ///< 3 accepted cargos
6635
73064d1771ed (svn r9866) -Codechange: remove the technical one-input-cargo-creates-one-output-cargo limit in the factories, sawmills, steelmills and the ones I'm forgetting to mention right now. Use of this functionality will come later.
rubidium
parents: 6533
diff changeset
   131
	uint16 input_cargo_multiplier[3][2];  ///< Input cargo multipliers (multiply amount of incoming cargo for the produced cargos)
6201
bee01dc45e39 (svn r8987) -Cleanup: doxygen changes. Again. Mostly (still) @files missing tags and (more than just) a few comments style.
belugas
parents: 6092
diff changeset
   132
	IndustryLifeType life_type;           ///< This is also known as Industry production flag, in newgrf specs
bee01dc45e39 (svn r8987) -Cleanup: doxygen changes. Again. Mostly (still) @files missing tags and (more than just) a few comments style.
belugas
parents: 6092
diff changeset
   133
	byte climate_availability;            ///< Bitmask, giving landscape enums as bit position
6390
802629b3c7f1 (svn r9520) -Codechange: Add the notion of Industry behaviour. It means what an industry can do (plant fields, cut trees, do not change production), what can be done to it (disasters like mine subsidence, jet/chopper attack), when it can be built etc...
belugas
parents: 6307
diff changeset
   134
	IndustyBehaviour behaviour;           ///< How this industry will behave, and how others entities can use it
6440
862590c931fb (svn r9577) -Codechange: Add notion and data for industry map colour, used in the smallmap_gui. Not used yet.
belugas
parents: 6414
diff changeset
   135
	byte map_colour;                      ///< colour used for the small map
6201
bee01dc45e39 (svn r8987) -Cleanup: doxygen changes. Again. Mostly (still) @files missing tags and (more than just) a few comments style.
belugas
parents: 6092
diff changeset
   136
	StringID name;                        ///< Displayed name of the industry
6266
fd42b0893130 (svn r9075) -Codechange: Cleanup of industry_cmd (Step-7). Small step that is. The new industry messages do not need a series of tests. Only one property to use.
belugas
parents: 6248
diff changeset
   137
	StringID new_industry_text;           ///< Message appearing when the industry is built
6201
bee01dc45e39 (svn r8987) -Cleanup: doxygen changes. Again. Mostly (still) @files missing tags and (more than just) a few comments style.
belugas
parents: 6092
diff changeset
   138
	StringID closure_text;                ///< Message appearing when the industry closes
bee01dc45e39 (svn r8987) -Cleanup: doxygen changes. Again. Mostly (still) @files missing tags and (more than just) a few comments style.
belugas
parents: 6092
diff changeset
   139
	StringID production_up_text;          ///< Message appearing when the industry's production is increasing
bee01dc45e39 (svn r8987) -Cleanup: doxygen changes. Again. Mostly (still) @files missing tags and (more than just) a few comments style.
belugas
parents: 6092
diff changeset
   140
	StringID production_down_text;        ///< Message appearing when the industry's production is decreasing
6414
3eaf5e612aa4 (svn r9550) -Codechange: Add notion and data of industry appearing chances, both in game and in creation mode.
belugas
parents: 6390
diff changeset
   141
	byte appear_ingame[NUM_LANDSCAPE];    ///< Probability of appearance in game
3eaf5e612aa4 (svn r9550) -Codechange: Add notion and data of industry appearing chances, both in game and in creation mode.
belugas
parents: 6390
diff changeset
   142
	byte appear_creation[NUM_LANDSCAPE];  ///< Probability of appearance during map creation
6655
3d46f5ba9b6e (svn r9886) -Codechange: Cleanup of industries (Step-13). Include the sounds table into the industry's spec.
belugas
parents: 6639
diff changeset
   143
	uint8 number_of_sounds;               ///< Number of sounds available in the sounds array
3d46f5ba9b6e (svn r9886) -Codechange: Cleanup of industries (Step-13). Include the sounds table into the industry's spec.
belugas
parents: 6639
diff changeset
   144
	const uint8 *random_sounds;           ///< array of random sounds.
6675
1c318230fd5b (svn r9906) -Codechange: Add common properties for both industry and industry tiles specs
belugas
parents: 6655
diff changeset
   145
	/* Newgrf data */
6440
862590c931fb (svn r9577) -Codechange: Add notion and data for industry map colour, used in the smallmap_gui. Not used yet.
belugas
parents: 6414
diff changeset
   146
	uint16 callback_flags;                ///< Flags telling which grf callback is set
6765
50903afa1a48 (svn r10001) -Codechange: Add support for removing dynamically allocated newgrf data
belugas
parents: 6743
diff changeset
   147
	uint8 cleanup_flag;                   ///< flags indicating which data should be freed upon cleaning up
6741
bdd53720536f (svn r9974) -Codechange: Remove the enabled member of GRFFileProps, since it'snot really grf related
belugas
parents: 6736
diff changeset
   148
	bool enabled;                         ///< entity still avaible (by default true).newgrf can disable it, though
6675
1c318230fd5b (svn r9906) -Codechange: Add common properties for both industry and industry tiles specs
belugas
parents: 6655
diff changeset
   149
	struct GRFFileProps grf_prop;         ///< properties related the the grf file
7185
1b6b21b69c2d (svn r10459) -Codechange: add helper functions to determine whether an industry is a primary industry and how much it costs to build such an industry.
rubidium
parents: 7177
diff changeset
   150
1b6b21b69c2d (svn r10459) -Codechange: add helper functions to determine whether an industry is a primary industry and how much it costs to build such an industry.
rubidium
parents: 7177
diff changeset
   151
	/**
1b6b21b69c2d (svn r10459) -Codechange: add helper functions to determine whether an industry is a primary industry and how much it costs to build such an industry.
rubidium
parents: 7177
diff changeset
   152
	 * Is an industry with the spec a raw industry?
1b6b21b69c2d (svn r10459) -Codechange: add helper functions to determine whether an industry is a primary industry and how much it costs to build such an industry.
rubidium
parents: 7177
diff changeset
   153
	 * @return true if it should be handled as a raw industry
1b6b21b69c2d (svn r10459) -Codechange: add helper functions to determine whether an industry is a primary industry and how much it costs to build such an industry.
rubidium
parents: 7177
diff changeset
   154
	 */
1b6b21b69c2d (svn r10459) -Codechange: add helper functions to determine whether an industry is a primary industry and how much it costs to build such an industry.
rubidium
parents: 7177
diff changeset
   155
	bool IsRawIndustry() const;
1b6b21b69c2d (svn r10459) -Codechange: add helper functions to determine whether an industry is a primary industry and how much it costs to build such an industry.
rubidium
parents: 7177
diff changeset
   156
1b6b21b69c2d (svn r10459) -Codechange: add helper functions to determine whether an industry is a primary industry and how much it costs to build such an industry.
rubidium
parents: 7177
diff changeset
   157
	/**
1b6b21b69c2d (svn r10459) -Codechange: add helper functions to determine whether an industry is a primary industry and how much it costs to build such an industry.
rubidium
parents: 7177
diff changeset
   158
	 * Get the cost for constructing this industry
1b6b21b69c2d (svn r10459) -Codechange: add helper functions to determine whether an industry is a primary industry and how much it costs to build such an industry.
rubidium
parents: 7177
diff changeset
   159
	 * @return the cost (inflation corrected etc)
1b6b21b69c2d (svn r10459) -Codechange: add helper functions to determine whether an industry is a primary industry and how much it costs to build such an industry.
rubidium
parents: 7177
diff changeset
   160
	 */
1b6b21b69c2d (svn r10459) -Codechange: add helper functions to determine whether an industry is a primary industry and how much it costs to build such an industry.
rubidium
parents: 7177
diff changeset
   161
	Money GetConstructionCost() const;
6248
e4a2ed7e5613 (svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents: 6247
diff changeset
   162
};
3689
50a3fd4ba752 (svn r4614) CodeChange : Cleanup of industry_cmd (Step-4).
belugas
parents: 3499
diff changeset
   163
6201
bee01dc45e39 (svn r8987) -Cleanup: doxygen changes. Again. Mostly (still) @files missing tags and (more than just) a few comments style.
belugas
parents: 6092
diff changeset
   164
/**
bee01dc45e39 (svn r8987) -Cleanup: doxygen changes. Again. Mostly (still) @files missing tags and (more than just) a few comments style.
belugas
parents: 6092
diff changeset
   165
 * Defines the data structure of each indivudual tile of an industry.
bee01dc45e39 (svn r8987) -Cleanup: doxygen changes. Again. Mostly (still) @files missing tags and (more than just) a few comments style.
belugas
parents: 6092
diff changeset
   166
 */
6248
e4a2ed7e5613 (svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents: 6247
diff changeset
   167
struct IndustryTileSpec {
6201
bee01dc45e39 (svn r8987) -Cleanup: doxygen changes. Again. Mostly (still) @files missing tags and (more than just) a few comments style.
belugas
parents: 6092
diff changeset
   168
	CargoID accepts_cargo[3];             ///< Cargo accepted by this tile
6736
9f55d5e22875 (svn r9969) -Codechange: Cleanup of industries (Step-14). Remove hardcoded-run-time tile acceptance and put in corresponding tile
belugas
parents: 6675
diff changeset
   169
	uint8 acceptance[3];                  ///< Level of aceptance per cargo type
6201
bee01dc45e39 (svn r8987) -Cleanup: doxygen changes. Again. Mostly (still) @files missing tags and (more than just) a few comments style.
belugas
parents: 6092
diff changeset
   170
	Slope slopes_refused;                 ///< slope pattern on which this tile cannot be built
6305
185ebf766d4e (svn r9162) -Codechange: Cleanup of industry_cmd (Step-8). Gather tile animation data into IndustryTileSpec array
belugas
parents: 6266
diff changeset
   171
	byte anim_production;                 ///< Animation frame to start when goods are produced
185ebf766d4e (svn r9162) -Codechange: Cleanup of industry_cmd (Step-8). Gather tile animation data into IndustryTileSpec array
belugas
parents: 6266
diff changeset
   172
	byte anim_next;                       ///< Next frame in an animation
185ebf766d4e (svn r9162) -Codechange: Cleanup of industry_cmd (Step-8). Gather tile animation data into IndustryTileSpec array
belugas
parents: 6266
diff changeset
   173
	bool anim_state;                      ///< When true, the tile has to be drawn using the animation
6637
5a8e524c14f4 (svn r9868) -Codechange: bring external declaration of functions togueter and adjust a comment
belugas
parents: 6636
diff changeset
   174
	                                      ///< state instead of the construction state
6675
1c318230fd5b (svn r9906) -Codechange: Add common properties for both industry and industry tiles specs
belugas
parents: 6655
diff changeset
   175
	/* Newgrf data */
6743
e84a3b89d46b (svn r9976) -Codechange: Declare a writable array of specs for industry and industry tiles.
belugas
parents: 6741
diff changeset
   176
	uint8 callback_flags;                 ///< Flags telling which grf callback is set
6741
bdd53720536f (svn r9974) -Codechange: Remove the enabled member of GRFFileProps, since it'snot really grf related
belugas
parents: 6736
diff changeset
   177
	bool enabled;                         ///< entity still avaible (by default true).newgrf can disable it, though
6675
1c318230fd5b (svn r9906) -Codechange: Add common properties for both industry and industry tiles specs
belugas
parents: 6655
diff changeset
   178
	struct GRFFileProps grf_prop;
6248
e4a2ed7e5613 (svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents: 6247
diff changeset
   179
};
6092
53c6b9b18d0b (svn r8827) -Codechange: Cleanup of industry_cmd (Step-6). Implementation of IndustryTileSPec, the alter ego of IndustrySpec.
belugas
parents: 5587
diff changeset
   180
6637
5a8e524c14f4 (svn r9868) -Codechange: bring external declaration of functions togueter and adjust a comment
belugas
parents: 6636
diff changeset
   181
/* industry_cmd.cpp*/
6743
e84a3b89d46b (svn r9976) -Codechange: Declare a writable array of specs for industry and industry tiles.
belugas
parents: 6741
diff changeset
   182
const IndustrySpec *GetIndustrySpec(IndustryType thistype);    ///< Array of industries data
e84a3b89d46b (svn r9976) -Codechange: Declare a writable array of specs for industry and industry tiles.
belugas
parents: 6741
diff changeset
   183
const IndustryTileSpec *GetIndustryTileSpec(IndustryGfx gfx);  ///< Array of industry tiles data
6637
5a8e524c14f4 (svn r9868) -Codechange: bring external declaration of functions togueter and adjust a comment
belugas
parents: 6636
diff changeset
   184
void ResetIndustries();
5a8e524c14f4 (svn r9868) -Codechange: bring external declaration of functions togueter and adjust a comment
belugas
parents: 6636
diff changeset
   185
void PlantRandomFarmField(const Industry *i);
3689
50a3fd4ba752 (svn r4614) CodeChange : Cleanup of industry_cmd (Step-4).
belugas
parents: 3499
diff changeset
   186
6743
e84a3b89d46b (svn r9976) -Codechange: Declare a writable array of specs for industry and industry tiles.
belugas
parents: 6741
diff changeset
   187
/* writable arrays of specs */
e84a3b89d46b (svn r9976) -Codechange: Declare a writable array of specs for industry and industry tiles.
belugas
parents: 6741
diff changeset
   188
extern IndustrySpec _industry_specs[NUM_INDUSTRYTYPES];
e84a3b89d46b (svn r9976) -Codechange: Declare a writable array of specs for industry and industry tiles.
belugas
parents: 6741
diff changeset
   189
extern IndustryTileSpec _industry_tile_specs[NUM_INDUSTRYTILES];
e84a3b89d46b (svn r9976) -Codechange: Declare a writable array of specs for industry and industry tiles.
belugas
parents: 6741
diff changeset
   190
6533
8be3ef428116 (svn r9721) -Codechange: -Codechange: Cleanup of industry_cmd (Step-12). Dynamically build the legends (name and color) for industries in the smallmap_gui.
belugas
parents: 6493
diff changeset
   191
/* smallmap_gui.cpp */
8be3ef428116 (svn r9721) -Codechange: -Codechange: Cleanup of industry_cmd (Step-12). Dynamically build the legends (name and color) for industries in the smallmap_gui.
belugas
parents: 6493
diff changeset
   192
void BuildIndustriesLegend();
8be3ef428116 (svn r9721) -Codechange: -Codechange: Cleanup of industry_cmd (Step-12). Dynamically build the legends (name and color) for industries in the smallmap_gui.
belugas
parents: 6493
diff changeset
   193
5216
8bd14ee39af2 (svn r7331) - Codechange: Rename all memory pool macro's and types to "old pool", so the new pool implementation can be committed alongside it.
matthijs
parents: 4976
diff changeset
   194
DECLARE_OLD_POOL(Industry, Industry, 3, 8000)
919
544f374ee392 (svn r1407) -Codechange: changed a lot around _stations, _vehicles, _towns and _industries
truelight
parents: 830
diff changeset
   195
1267
ba42a505ab8a (svn r1771) -Add: Industries are now dynamic (up to 64k industries). Generating
truelight
parents: 1220
diff changeset
   196
/**
1330
5d76a0522a11 (svn r1834) - Fix: NPF does not check the owner of its target, busses try to enter other players' depots. TODO
matthijs
parents: 1267
diff changeset
   197
 * Check if an Industry really exists.
6201
bee01dc45e39 (svn r8987) -Cleanup: doxygen changes. Again. Mostly (still) @files missing tags and (more than just) a few comments style.
belugas
parents: 6092
diff changeset
   198
 * @param industry to check
bee01dc45e39 (svn r8987) -Cleanup: doxygen changes. Again. Mostly (still) @files missing tags and (more than just) a few comments style.
belugas
parents: 6092
diff changeset
   199
 * @return true if position is a valid one
1330
5d76a0522a11 (svn r1834) - Fix: NPF does not check the owner of its target, busses try to enter other players' depots. TODO
matthijs
parents: 1267
diff changeset
   200
 */
4346
66105d4f6e83 (svn r6047) -Codechange: FOR_ALL now _only_ loops valid items, and skips invalid ones
truelight
parents: 4344
diff changeset
   201
static inline bool IsValidIndustry(const Industry *industry)
1330
5d76a0522a11 (svn r1834) - Fix: NPF does not check the owner of its target, busses try to enter other players' depots. TODO
matthijs
parents: 1267
diff changeset
   202
{
4346
66105d4f6e83 (svn r6047) -Codechange: FOR_ALL now _only_ loops valid items, and skips invalid ones
truelight
parents: 4344
diff changeset
   203
	return industry->xy != 0;
1330
5d76a0522a11 (svn r1834) - Fix: NPF does not check the owner of its target, busses try to enter other players' depots. TODO
matthijs
parents: 1267
diff changeset
   204
}
5d76a0522a11 (svn r1834) - Fix: NPF does not check the owner of its target, busses try to enter other players' depots. TODO
matthijs
parents: 1267
diff changeset
   205
6201
bee01dc45e39 (svn r8987) -Cleanup: doxygen changes. Again. Mostly (still) @files missing tags and (more than just) a few comments style.
belugas
parents: 6092
diff changeset
   206
/**
bee01dc45e39 (svn r8987) -Cleanup: doxygen changes. Again. Mostly (still) @files missing tags and (more than just) a few comments style.
belugas
parents: 6092
diff changeset
   207
 * Check if an Industry exists whithin the pool of industries
bee01dc45e39 (svn r8987) -Cleanup: doxygen changes. Again. Mostly (still) @files missing tags and (more than just) a few comments style.
belugas
parents: 6092
diff changeset
   208
 * @param index of the desired industry
bee01dc45e39 (svn r8987) -Cleanup: doxygen changes. Again. Mostly (still) @files missing tags and (more than just) a few comments style.
belugas
parents: 6092
diff changeset
   209
 * @return true if it is inside the pool
bee01dc45e39 (svn r8987) -Cleanup: doxygen changes. Again. Mostly (still) @files missing tags and (more than just) a few comments style.
belugas
parents: 6092
diff changeset
   210
 */
5299
cf162c141e2f (svn r7452) -Fix: GetRandom(Industry|Town) must return a valid industry/town and should not need to loop over the pool for a second time.
rubidium
parents: 5298
diff changeset
   211
static inline bool IsValidIndustryID(IndustryID index)
cf162c141e2f (svn r7452) -Fix: GetRandom(Industry|Town) must return a valid industry/town and should not need to loop over the pool for a second time.
rubidium
parents: 5298
diff changeset
   212
{
cf162c141e2f (svn r7452) -Fix: GetRandom(Industry|Town) must return a valid industry/town and should not need to loop over the pool for a second time.
rubidium
parents: 5298
diff changeset
   213
	return index < GetIndustryPoolSize() && IsValidIndustry(GetIndustry(index));
cf162c141e2f (svn r7452) -Fix: GetRandom(Industry|Town) must return a valid industry/town and should not need to loop over the pool for a second time.
rubidium
parents: 5298
diff changeset
   214
}
cf162c141e2f (svn r7452) -Fix: GetRandom(Industry|Town) must return a valid industry/town and should not need to loop over the pool for a second time.
rubidium
parents: 5298
diff changeset
   215
4354
10f4ce894eb1 (svn r6055) -Codechange: added GetXXXArraySize, which returns HighestID + 1 (or, will do that).
truelight
parents: 4346
diff changeset
   216
6247
7d81e3a5d803 (svn r9050) -Codechange: Foo(void) -> Foo()
rubidium
parents: 6201
diff changeset
   217
static inline IndustryID GetMaxIndustryIndex()
4354
10f4ce894eb1 (svn r6055) -Codechange: added GetXXXArraySize, which returns HighestID + 1 (or, will do that).
truelight
parents: 4346
diff changeset
   218
{
10f4ce894eb1 (svn r6055) -Codechange: added GetXXXArraySize, which returns HighestID + 1 (or, will do that).
truelight
parents: 4346
diff changeset
   219
	/* TODO - This isn't the real content of the function, but
10f4ce894eb1 (svn r6055) -Codechange: added GetXXXArraySize, which returns HighestID + 1 (or, will do that).
truelight
parents: 4346
diff changeset
   220
	 *  with the new pool-system this will be replaced with one that
5247
1f982de55b88 (svn r7372) - CodeChange: Rename all GetXXXArraySize() functions to GetNumXXX() and add GetMaxXXXIndex() functions. This prepares for the new pool interface.
matthijs
parents: 5216
diff changeset
   221
	 *  _really_ returns the highest index. Now it just returns
4354
10f4ce894eb1 (svn r6055) -Codechange: added GetXXXArraySize, which returns HighestID + 1 (or, will do that).
truelight
parents: 4346
diff changeset
   222
	 *  the next safe value we are sure about everything is below.
10f4ce894eb1 (svn r6055) -Codechange: added GetXXXArraySize, which returns HighestID + 1 (or, will do that).
truelight
parents: 4346
diff changeset
   223
	 */
5298
46eabcb5c2b2 (svn r7451) -Fix (7372): GetNum(Towns|Industries) should return the actual number of towns and industries.
rubidium
parents: 5247
diff changeset
   224
	return GetIndustryPoolSize() - 1;
5247
1f982de55b88 (svn r7372) - CodeChange: Rename all GetXXXArraySize() functions to GetNumXXX() and add GetMaxXXXIndex() functions. This prepares for the new pool interface.
matthijs
parents: 5216
diff changeset
   225
}
1f982de55b88 (svn r7372) - CodeChange: Rename all GetXXXArraySize() functions to GetNumXXX() and add GetMaxXXXIndex() functions. This prepares for the new pool interface.
matthijs
parents: 5216
diff changeset
   226
6839
2cc0a04fa761 (svn r10078) -Codechange: Centralize all industry counts data and access
belugas
parents: 6825
diff changeset
   227
extern int _total_industries;  // general counter
2cc0a04fa761 (svn r10078) -Codechange: Centralize all industry counts data and access
belugas
parents: 6825
diff changeset
   228
extern uint16 _industry_counts[NUM_INDUSTRYTYPES]; // Number of industries per type ingame
2cc0a04fa761 (svn r10078) -Codechange: Centralize all industry counts data and access
belugas
parents: 6825
diff changeset
   229
6247
7d81e3a5d803 (svn r9050) -Codechange: Foo(void) -> Foo()
rubidium
parents: 6201
diff changeset
   230
static inline uint GetNumIndustries()
5247
1f982de55b88 (svn r7372) - CodeChange: Rename all GetXXXArraySize() functions to GetNumXXX() and add GetMaxXXXIndex() functions. This prepares for the new pool interface.
matthijs
parents: 5216
diff changeset
   231
{
4357
aaba385fa723 (svn r6058) -Fix: Get(Industry|Town)ArraySize could never return 0
truelight
parents: 4356
diff changeset
   232
	return _total_industries;
4354
10f4ce894eb1 (svn r6055) -Codechange: added GetXXXArraySize, which returns HighestID + 1 (or, will do that).
truelight
parents: 4346
diff changeset
   233
}
10f4ce894eb1 (svn r6055) -Codechange: added GetXXXArraySize, which returns HighestID + 1 (or, will do that).
truelight
parents: 4346
diff changeset
   234
6824
b37cba5bf2ca (svn r10063) -Codechange: Change VARDEF for extern
belugas
parents: 6819
diff changeset
   235
/** Increment the count of industries for this type
b37cba5bf2ca (svn r10063) -Codechange: Change VARDEF for extern
belugas
parents: 6819
diff changeset
   236
 * @param type IndustryType to increment
b37cba5bf2ca (svn r10063) -Codechange: Change VARDEF for extern
belugas
parents: 6819
diff changeset
   237
 * @pre type < INVALID_INDUSTRYTYPE */
b37cba5bf2ca (svn r10063) -Codechange: Change VARDEF for extern
belugas
parents: 6819
diff changeset
   238
static inline void IncIndustryTypeCount(IndustryType type)
b37cba5bf2ca (svn r10063) -Codechange: Change VARDEF for extern
belugas
parents: 6819
diff changeset
   239
{
b37cba5bf2ca (svn r10063) -Codechange: Change VARDEF for extern
belugas
parents: 6819
diff changeset
   240
	assert(type < INVALID_INDUSTRYTYPE);
b37cba5bf2ca (svn r10063) -Codechange: Change VARDEF for extern
belugas
parents: 6819
diff changeset
   241
	_industry_counts[type]++;
6839
2cc0a04fa761 (svn r10078) -Codechange: Centralize all industry counts data and access
belugas
parents: 6825
diff changeset
   242
	_total_industries++;
6824
b37cba5bf2ca (svn r10063) -Codechange: Change VARDEF for extern
belugas
parents: 6819
diff changeset
   243
}
b37cba5bf2ca (svn r10063) -Codechange: Change VARDEF for extern
belugas
parents: 6819
diff changeset
   244
b37cba5bf2ca (svn r10063) -Codechange: Change VARDEF for extern
belugas
parents: 6819
diff changeset
   245
/** Decrement the count of industries for this type
b37cba5bf2ca (svn r10063) -Codechange: Change VARDEF for extern
belugas
parents: 6819
diff changeset
   246
 * @param type IndustryType to decrement
b37cba5bf2ca (svn r10063) -Codechange: Change VARDEF for extern
belugas
parents: 6819
diff changeset
   247
 * @pre type < INVALID_INDUSTRYTYPE */
b37cba5bf2ca (svn r10063) -Codechange: Change VARDEF for extern
belugas
parents: 6819
diff changeset
   248
static inline void DecIndustryTypeCount(IndustryType type)
b37cba5bf2ca (svn r10063) -Codechange: Change VARDEF for extern
belugas
parents: 6819
diff changeset
   249
{
b37cba5bf2ca (svn r10063) -Codechange: Change VARDEF for extern
belugas
parents: 6819
diff changeset
   250
	assert(type < INVALID_INDUSTRYTYPE);
b37cba5bf2ca (svn r10063) -Codechange: Change VARDEF for extern
belugas
parents: 6819
diff changeset
   251
	_industry_counts[type]--;
6839
2cc0a04fa761 (svn r10078) -Codechange: Centralize all industry counts data and access
belugas
parents: 6825
diff changeset
   252
	_total_industries--;
6824
b37cba5bf2ca (svn r10063) -Codechange: Change VARDEF for extern
belugas
parents: 6819
diff changeset
   253
}
b37cba5bf2ca (svn r10063) -Codechange: Change VARDEF for extern
belugas
parents: 6819
diff changeset
   254
b37cba5bf2ca (svn r10063) -Codechange: Change VARDEF for extern
belugas
parents: 6819
diff changeset
   255
/** get the count of industries for this type
b37cba5bf2ca (svn r10063) -Codechange: Change VARDEF for extern
belugas
parents: 6819
diff changeset
   256
 * @param type IndustryType to query
b37cba5bf2ca (svn r10063) -Codechange: Change VARDEF for extern
belugas
parents: 6819
diff changeset
   257
 * @pre type < INVALID_INDUSTRYTYPE */
b37cba5bf2ca (svn r10063) -Codechange: Change VARDEF for extern
belugas
parents: 6819
diff changeset
   258
static inline uint8 GetIndustryTypeCount(IndustryType type)
b37cba5bf2ca (svn r10063) -Codechange: Change VARDEF for extern
belugas
parents: 6819
diff changeset
   259
{
b37cba5bf2ca (svn r10063) -Codechange: Change VARDEF for extern
belugas
parents: 6819
diff changeset
   260
	assert(type < INVALID_INDUSTRYTYPE);
b37cba5bf2ca (svn r10063) -Codechange: Change VARDEF for extern
belugas
parents: 6819
diff changeset
   261
	return min(_industry_counts[type], 0xFF); // callback expects only a byte, so cut it
b37cba5bf2ca (svn r10063) -Codechange: Change VARDEF for extern
belugas
parents: 6819
diff changeset
   262
}
b37cba5bf2ca (svn r10063) -Codechange: Change VARDEF for extern
belugas
parents: 6819
diff changeset
   263
6839
2cc0a04fa761 (svn r10078) -Codechange: Centralize all industry counts data and access
belugas
parents: 6825
diff changeset
   264
/** Resets both the total_industries and the _industry_counts
2cc0a04fa761 (svn r10078) -Codechange: Centralize all industry counts data and access
belugas
parents: 6825
diff changeset
   265
 * This way, we centralize all counts activities */
2cc0a04fa761 (svn r10078) -Codechange: Centralize all industry counts data and access
belugas
parents: 6825
diff changeset
   266
static inline void ResetIndustryCounts()
2cc0a04fa761 (svn r10078) -Codechange: Centralize all industry counts data and access
belugas
parents: 6825
diff changeset
   267
{
2cc0a04fa761 (svn r10078) -Codechange: Centralize all industry counts data and access
belugas
parents: 6825
diff changeset
   268
	_total_industries = 0;
2cc0a04fa761 (svn r10078) -Codechange: Centralize all industry counts data and access
belugas
parents: 6825
diff changeset
   269
	memset(&_industry_counts, 0, sizeof(_industry_counts));
2cc0a04fa761 (svn r10078) -Codechange: Centralize all industry counts data and access
belugas
parents: 6825
diff changeset
   270
}
2cc0a04fa761 (svn r10078) -Codechange: Centralize all industry counts data and access
belugas
parents: 6825
diff changeset
   271
4356
ec4e13f21cd0 (svn r6057) -Codechange: made a function GetRandomXXX, that _always_ returns a valid XXX, unless there are none to pick from. Then NULL is returned.
truelight
parents: 4354
diff changeset
   272
/**
5299
cf162c141e2f (svn r7452) -Fix: GetRandom(Industry|Town) must return a valid industry/town and should not need to loop over the pool for a second time.
rubidium
parents: 5298
diff changeset
   273
 * Return a random valid industry.
4356
ec4e13f21cd0 (svn r6057) -Codechange: made a function GetRandomXXX, that _always_ returns a valid XXX, unless there are none to pick from. Then NULL is returned.
truelight
parents: 4354
diff changeset
   274
 */
6247
7d81e3a5d803 (svn r9050) -Codechange: Foo(void) -> Foo()
rubidium
parents: 6201
diff changeset
   275
static inline Industry *GetRandomIndustry()
4356
ec4e13f21cd0 (svn r6057) -Codechange: made a function GetRandomXXX, that _always_ returns a valid XXX, unless there are none to pick from. Then NULL is returned.
truelight
parents: 4354
diff changeset
   276
{
5299
cf162c141e2f (svn r7452) -Fix: GetRandom(Industry|Town) must return a valid industry/town and should not need to loop over the pool for a second time.
rubidium
parents: 5298
diff changeset
   277
	int num = RandomRange(GetNumIndustries());
cf162c141e2f (svn r7452) -Fix: GetRandom(Industry|Town) must return a valid industry/town and should not need to loop over the pool for a second time.
rubidium
parents: 5298
diff changeset
   278
	IndustryID index = INVALID_INDUSTRY;
4356
ec4e13f21cd0 (svn r6057) -Codechange: made a function GetRandomXXX, that _always_ returns a valid XXX, unless there are none to pick from. Then NULL is returned.
truelight
parents: 4354
diff changeset
   279
5247
1f982de55b88 (svn r7372) - CodeChange: Rename all GetXXXArraySize() functions to GetNumXXX() and add GetMaxXXXIndex() functions. This prepares for the new pool interface.
matthijs
parents: 5216
diff changeset
   280
	if (GetNumIndustries() == 0) return NULL;
4356
ec4e13f21cd0 (svn r6057) -Codechange: made a function GetRandomXXX, that _always_ returns a valid XXX, unless there are none to pick from. Then NULL is returned.
truelight
parents: 4354
diff changeset
   281
5299
cf162c141e2f (svn r7452) -Fix: GetRandom(Industry|Town) must return a valid industry/town and should not need to loop over the pool for a second time.
rubidium
parents: 5298
diff changeset
   282
	while (num >= 0) {
4356
ec4e13f21cd0 (svn r6057) -Codechange: made a function GetRandomXXX, that _always_ returns a valid XXX, unless there are none to pick from. Then NULL is returned.
truelight
parents: 4354
diff changeset
   283
		num--;
ec4e13f21cd0 (svn r6057) -Codechange: made a function GetRandomXXX, that _always_ returns a valid XXX, unless there are none to pick from. Then NULL is returned.
truelight
parents: 4354
diff changeset
   284
		index++;
5299
cf162c141e2f (svn r7452) -Fix: GetRandom(Industry|Town) must return a valid industry/town and should not need to loop over the pool for a second time.
rubidium
parents: 5298
diff changeset
   285
4356
ec4e13f21cd0 (svn r6057) -Codechange: made a function GetRandomXXX, that _always_ returns a valid XXX, unless there are none to pick from. Then NULL is returned.
truelight
parents: 4354
diff changeset
   286
		/* Make sure we have a valid industry */
5299
cf162c141e2f (svn r7452) -Fix: GetRandom(Industry|Town) must return a valid industry/town and should not need to loop over the pool for a second time.
rubidium
parents: 5298
diff changeset
   287
		while (!IsValidIndustryID(index)) {
4356
ec4e13f21cd0 (svn r6057) -Codechange: made a function GetRandomXXX, that _always_ returns a valid XXX, unless there are none to pick from. Then NULL is returned.
truelight
parents: 4354
diff changeset
   288
			index++;
5299
cf162c141e2f (svn r7452) -Fix: GetRandom(Industry|Town) must return a valid industry/town and should not need to loop over the pool for a second time.
rubidium
parents: 5298
diff changeset
   289
			assert(index <= GetMaxIndustryIndex());
4356
ec4e13f21cd0 (svn r6057) -Codechange: made a function GetRandomXXX, that _always_ returns a valid XXX, unless there are none to pick from. Then NULL is returned.
truelight
parents: 4354
diff changeset
   290
		}
ec4e13f21cd0 (svn r6057) -Codechange: made a function GetRandomXXX, that _always_ returns a valid XXX, unless there are none to pick from. Then NULL is returned.
truelight
parents: 4354
diff changeset
   291
	}
ec4e13f21cd0 (svn r6057) -Codechange: made a function GetRandomXXX, that _always_ returns a valid XXX, unless there are none to pick from. Then NULL is returned.
truelight
parents: 4354
diff changeset
   292
ec4e13f21cd0 (svn r6057) -Codechange: made a function GetRandomXXX, that _always_ returns a valid XXX, unless there are none to pick from. Then NULL is returned.
truelight
parents: 4354
diff changeset
   293
	return GetIndustry(index);
ec4e13f21cd0 (svn r6057) -Codechange: made a function GetRandomXXX, that _always_ returns a valid XXX, unless there are none to pick from. Then NULL is returned.
truelight
parents: 4354
diff changeset
   294
}
ec4e13f21cd0 (svn r6057) -Codechange: made a function GetRandomXXX, that _always_ returns a valid XXX, unless there are none to pick from. Then NULL is returned.
truelight
parents: 4354
diff changeset
   295
4403
3f503ac2d0f9 (svn r6156) -Codechange: DeleteIndustry removes an industry from the pool
truelight
parents: 4357
diff changeset
   296
void DestroyIndustry(Industry *i);
3f503ac2d0f9 (svn r6156) -Codechange: DeleteIndustry removes an industry from the pool
truelight
parents: 4357
diff changeset
   297
3f503ac2d0f9 (svn r6156) -Codechange: DeleteIndustry removes an industry from the pool
truelight
parents: 4357
diff changeset
   298
static inline void DeleteIndustry(Industry *i)
3f503ac2d0f9 (svn r6156) -Codechange: DeleteIndustry removes an industry from the pool
truelight
parents: 4357
diff changeset
   299
{
3f503ac2d0f9 (svn r6156) -Codechange: DeleteIndustry removes an industry from the pool
truelight
parents: 4357
diff changeset
   300
	DestroyIndustry(i);
3f503ac2d0f9 (svn r6156) -Codechange: DeleteIndustry removes an industry from the pool
truelight
parents: 4357
diff changeset
   301
	i->xy = 0;
3f503ac2d0f9 (svn r6156) -Codechange: DeleteIndustry removes an industry from the pool
truelight
parents: 4357
diff changeset
   302
}
3f503ac2d0f9 (svn r6156) -Codechange: DeleteIndustry removes an industry from the pool
truelight
parents: 4357
diff changeset
   303
4976
2e3d5e8ec510 (svn r6979) Use the pool macros for the Industry pool
tron
parents: 4966
diff changeset
   304
#define FOR_ALL_INDUSTRIES_FROM(i, start) for (i = GetIndustry(start); i != NULL; i = (i->index + 1U < GetIndustryPoolSize()) ? GetIndustry(i->index + 1U) : NULL) if (IsValidIndustry(i))
1267
ba42a505ab8a (svn r1771) -Add: Industries are now dynamic (up to 64k industries). Generating
truelight
parents: 1220
diff changeset
   305
#define FOR_ALL_INDUSTRIES(i) FOR_ALL_INDUSTRIES_FROM(i, 0)
ba42a505ab8a (svn r1771) -Add: Industries are now dynamic (up to 64k industries). Generating
truelight
parents: 1220
diff changeset
   306
6824
b37cba5bf2ca (svn r10063) -Codechange: Change VARDEF for extern
belugas
parents: 6819
diff changeset
   307
extern const Industry **_industry_sort;
b37cba5bf2ca (svn r10063) -Codechange: Change VARDEF for extern
belugas
parents: 6819
diff changeset
   308
extern bool _industry_sort_dirty;
919
544f374ee392 (svn r1407) -Codechange: changed a lot around _stations, _vehicles, _towns and _industries
truelight
parents: 830
diff changeset
   309
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   310
enum {
4344
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4330
diff changeset
   311
	IT_COAL_MINE           =   0,
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4330
diff changeset
   312
	IT_POWER_STATION       =   1,
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4330
diff changeset
   313
	IT_SAWMILL             =   2,
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4330
diff changeset
   314
	IT_FOREST              =   3,
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4330
diff changeset
   315
	IT_OIL_REFINERY        =   4,
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4330
diff changeset
   316
	IT_OIL_RIG             =   5,
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4330
diff changeset
   317
	IT_FACTORY             =   6,
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4330
diff changeset
   318
	IT_PRINTING_WORKS      =   7,
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4330
diff changeset
   319
	IT_STEEL_MILL          =   8,
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4330
diff changeset
   320
	IT_FARM                =   9,
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4330
diff changeset
   321
	IT_COPPER_MINE         =  10,
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4330
diff changeset
   322
	IT_OIL_WELL            =  11,
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4330
diff changeset
   323
	IT_BANK_TEMP           =  12,
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4330
diff changeset
   324
	IT_FOOD_PROCESS        =  13,
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4330
diff changeset
   325
	IT_PAPER_MILL          =  14,
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4330
diff changeset
   326
	IT_GOLD_MINE           =  15,
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4330
diff changeset
   327
	IT_BANK_TROPIC_ARCTIC  =  16,
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4330
diff changeset
   328
	IT_DIAMOND_MINE        =  17,
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4330
diff changeset
   329
	IT_IRON_MINE           =  18,
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4330
diff changeset
   330
	IT_FRUIT_PLANTATION    =  19,
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4330
diff changeset
   331
	IT_RUBBER_PLANTATION   =  20,
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4330
diff changeset
   332
	IT_WATER_SUPPLY        =  21,
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4330
diff changeset
   333
	IT_WATER_TOWER         =  22,
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4330
diff changeset
   334
	IT_FACTORY_2           =  23,
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4330
diff changeset
   335
	IT_FARM_2              =  24,
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4330
diff changeset
   336
	IT_LUMBER_MILL         =  25,
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4330
diff changeset
   337
	IT_COTTON_CANDY        =  26,
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4330
diff changeset
   338
	IT_CANDY_FACTORY       =  27,
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4330
diff changeset
   339
	IT_BATTERY_FARM        =  28,
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4330
diff changeset
   340
	IT_COLA_WELLS          =  29,
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4330
diff changeset
   341
	IT_TOY_SHOP            =  30,
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4330
diff changeset
   342
	IT_TOY_FACTORY         =  31,
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4330
diff changeset
   343
	IT_PLASTIC_FOUNTAINS   =  32,
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4330
diff changeset
   344
	IT_FIZZY_DRINK_FACTORY =  33,
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4330
diff changeset
   345
	IT_BUBBLE_GENERATOR    =  34,
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4330
diff changeset
   346
	IT_TOFFEE_QUARRY       =  35,
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4330
diff changeset
   347
	IT_SUGAR_MINE          =  36,
3499
92f95849788c (svn r4350) CodeChange : Add and use accessors [G|S]etIndustrype. Define and use IndustryGfx type instead of uint
belugas
parents: 3496
diff changeset
   348
	IT_END,
4344
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4330
diff changeset
   349
	IT_INVALID             = 255,
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   350
};
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   351
2436
7d5df545bd5d (svn r2962) - const correctness for all Get* functions and most Draw* functions that don't change their pointer parameters
Darkvater
parents: 2186
diff changeset
   352
#endif /* INDUSTRY_H */