Files @ r21584:561d516cfa45
Branch filter:

Location: cpp/openttd-patchpack/source/src/newgrf_animation_type.h

rubidium
(svn r26708) -Codechange: replace C preprocessor with all kinds of options to prevent adding certain things to the result and the sed script to remove everything that shouldn't be in the resulting nfo file but came out of the C preprocessor by a small-ish awk program. This means no more breaking if a C preprocessor decides to add more data to the processed file (like GCC's inclusion of stdc-predef.h when not passing -nostdinc). It furthermore more than halfs the time needed for the assemble step of the extra GRF compilation
/* $Id$ */

/*
 * This file is part of OpenTTD.
 * OpenTTD 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, version 2.
 * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
 */

/** @file newgrf_animation_type.h Definitions related to NewGRF animation. */

#ifndef NEWGRF_ANIMATION_TYPE_H
#define NEWGRF_ANIMATION_TYPE_H

static const uint8 ANIM_STATUS_NON_LOOPING  = 0x00; ///< Animation is not looping.
static const uint8 ANIM_STATUS_LOOPING      = 0x01; ///< Animation is looping.
static const uint8 ANIM_STATUS_NO_ANIMATION = 0xFF; ///< There is no animation.

/** Information about animation. */
struct AnimationInfo {
	uint8  frames;   ///< The number of frames.
	uint8  status;   ///< Status; 0: no looping, 1: looping, 0xFF: no animation.
	uint8  speed;    ///< The speed, i.e. the amount of time between frames.
	uint16 triggers; ///< The triggers that trigger animation.
};

/** Animation triggers for station. */
enum StationAnimationTrigger {
	SAT_BUILT,         ///< Trigger tile when built.
	SAT_NEW_CARGO,     ///< Trigger station on new cargo arrival.
	SAT_CARGO_TAKEN,   ///< Trigger station when cargo is completely taken.
	SAT_TRAIN_ARRIVES, ///< Trigger platform when train arrives.
	SAT_TRAIN_DEPARTS, ///< Trigger platform when train leaves.
	SAT_TRAIN_LOADS,   ///< Trigger platform when train loads/unloads.
	SAT_250_TICKS,     ///< Trigger station every 250 ticks.
};

/** Animation triggers of the industries. */
enum IndustryAnimationTrigger {
	IAT_CONSTRUCTION_STATE_CHANGE,  ///< Trigger whenever the construction state changes.
	IAT_TILELOOP,                   ///< Trigger in the periodic tile loop.
	IAT_INDUSTRY_TICK,              ///< Trigger every tick.
	IAT_INDUSTRY_RECEIVED_CARGO,    ///< Trigger when cargo is received .
	IAT_INDUSTRY_DISTRIBUTES_CARGO, ///< Trigger when cargo is distributed.
};

/** Animation triggers for airport tiles */
enum AirpAnimationTrigger {
	AAT_BUILT,               ///< Triggered when the airport is built (for all tiles at the same time).
	AAT_TILELOOP,            ///< Triggered in the periodic tile loop.
	AAT_STATION_NEW_CARGO,   ///< Triggered when new cargo arrives at the station (for all tiles at the same time).
	AAT_STATION_CARGO_TAKEN, ///< Triggered when a cargo type is completely removed from the station (for all tiles at the same time).
	AAT_STATION_250_TICKS,   ///< Triggered every 250 ticks (for all tiles at the same time).
};

/** Animation triggers for objects. */
enum ObjectAnimationTrigger {
	OAT_BUILT,     ///< Triggered when the object is built (for all tiles at the same time).
	OAT_TILELOOP,  ///< Triggered in the periodic tile loop.
	OAT_256_TICKS, ///< Triggered every 256 ticks (for all tiles at the same time).
};

#endif /* NEWGRF_ANIMATION_TYPE_H */