mirror of
https://github.com/JGRennison/OpenTTD-patches.git
synced 2024-11-04 06:00:15 +00:00
a7cfb80c40
This means that in the intro menu the 'Quit' button immediatelly quits and the 'Quit' in the menu of the normal game and scenario editor immediatelly quits when the 'autosave_on_exit' patch is turned on. This is the same way as the OS/window manager initiated quits, like alt-F4 and the 'x' in the (OS/window manager drawn) title bar of OTTD.
242 lines
7.2 KiB
C
242 lines
7.2 KiB
C
/* $Id$ */
|
|
|
|
#ifndef FUNCTIONS_H
|
|
#define FUNCTIONS_H
|
|
|
|
void DoClearSquare(TileIndex tile);
|
|
void RunTileLoop(void);
|
|
|
|
uint GetPartialZ(int x, int y, Slope corners);
|
|
uint GetSlopeZ(int x, int y);
|
|
uint32 GetTileTrackStatus(TileIndex tile, TransportType mode);
|
|
void GetAcceptedCargo(TileIndex tile, AcceptedCargo ac);
|
|
void ChangeTileOwner(TileIndex tile, byte old_player, byte new_player);
|
|
void AnimateTile(TileIndex tile);
|
|
void ClickTile(TileIndex tile);
|
|
void GetTileDesc(TileIndex tile, TileDesc *td);
|
|
void UpdateTownMaxPass(Town *t);
|
|
|
|
bool IsValidTile(TileIndex tile);
|
|
|
|
static inline Point RemapCoords(int x, int y, int z)
|
|
{
|
|
#if !defined(NEW_ROTATION)
|
|
Point pt;
|
|
pt.x = (y - x) * 2;
|
|
pt.y = y + x - z;
|
|
#else
|
|
Point pt;
|
|
pt.x = (x + y) * 2;
|
|
pt.y = x - y - z;
|
|
#endif
|
|
return pt;
|
|
}
|
|
|
|
static inline Point RemapCoords2(int x, int y)
|
|
{
|
|
return RemapCoords(x, y, GetSlopeZ(x, y));
|
|
}
|
|
|
|
|
|
/* clear_land.c */
|
|
void DrawHillyLandTile(const TileInfo *ti);
|
|
void DrawClearLandTile(const TileInfo *ti, byte set);
|
|
void DrawClearLandFence(const TileInfo *ti);
|
|
void TileLoopClearHelper(TileIndex tile);
|
|
|
|
/* water_land.c */
|
|
void DrawShipDepotSprite(int x, int y, int image);
|
|
void TileLoop_Water(TileIndex tile);
|
|
|
|
/* players.c */
|
|
bool CheckPlayerHasMoney(int32 cost);
|
|
void SubtractMoneyFromPlayer(int32 cost);
|
|
void SubtractMoneyFromPlayerFract(PlayerID player, int32 cost);
|
|
bool CheckOwnership(PlayerID owner);
|
|
bool CheckTileOwnership(TileIndex tile);
|
|
StringID GetPlayerNameString(PlayerID player, uint index);
|
|
|
|
/* standard */
|
|
void ShowInfo(const char *str);
|
|
void CDECL ShowInfoF(const char *str, ...);
|
|
void NORETURN CDECL error(const char *str, ...);
|
|
|
|
/* openttd.c */
|
|
|
|
/**************
|
|
* Warning: DO NOT enable this unless you understand what it does
|
|
*
|
|
* If enabled, in a network game all randoms will be dumped to the
|
|
* stdout if the first client joins (or if you are a client). This
|
|
* is to help finding desync problems.
|
|
*
|
|
* Warning: DO NOT enable this unless you understand what it does
|
|
**************/
|
|
|
|
//#define RANDOM_DEBUG
|
|
|
|
|
|
// Enable this to produce higher quality random numbers.
|
|
// Doesn't work with network yet.
|
|
//#define MERSENNE_TWISTER
|
|
|
|
// Mersenne twister functions
|
|
void SeedMT(uint32 seed);
|
|
uint32 RandomMT(void);
|
|
|
|
|
|
#ifdef MERSENNE_TWISTER
|
|
static inline uint32 Random(void) { return RandomMT(); }
|
|
uint RandomRange(uint max);
|
|
#else
|
|
|
|
#ifdef RANDOM_DEBUG
|
|
#define Random() DoRandom(__LINE__, __FILE__)
|
|
uint32 DoRandom(int line, const char *file);
|
|
#define RandomRange(max) DoRandomRange(max, __LINE__, __FILE__)
|
|
uint DoRandomRange(uint max, int line, const char *file);
|
|
#else
|
|
uint32 Random(void);
|
|
uint RandomRange(uint max);
|
|
#endif
|
|
#endif // MERSENNE_TWISTER
|
|
|
|
static inline TileIndex RandomTileSeed(uint32 r) { return TILE_MASK(r); }
|
|
static inline TileIndex RandomTile(void) { return TILE_MASK(Random()); }
|
|
|
|
|
|
uint32 InteractiveRandom(void); /* Used for random sequences that are not the same on the other end of the multiplayer link */
|
|
uint InteractiveRandomRange(uint max);
|
|
|
|
/* facedraw.c */
|
|
void DrawPlayerFace(uint32 face, int color, int x, int y);
|
|
|
|
/* texteff.c */
|
|
void MoveAllTextEffects(void);
|
|
void AddTextEffect(StringID msg, int x, int y, uint16 duration);
|
|
void InitTextEffects(void);
|
|
void DrawTextEffects(DrawPixelInfo *dpi);
|
|
|
|
void InitTextMessage(void);
|
|
void DrawTextMessage(void);
|
|
void CDECL AddTextMessage(uint16 color, uint8 duration, const char *message, ...);
|
|
void UndrawTextMessage(void);
|
|
|
|
bool AddAnimatedTile(TileIndex tile);
|
|
void DeleteAnimatedTile(TileIndex tile);
|
|
void AnimateAnimatedTiles(void);
|
|
void InitializeAnimatedTiles(void);
|
|
|
|
/* tunnelbridge_cmd.c */
|
|
bool CheckBridge_Stuff(byte bridge_type, uint bridge_len);
|
|
uint32 GetBridgeLength(TileIndex begin, TileIndex end);
|
|
int CalcBridgeLenCostFactor(int x);
|
|
|
|
typedef void CommandCallback(bool success, TileIndex tile, uint32 p1, uint32 p2);
|
|
bool DoCommandP(TileIndex tile, uint32 p1, uint32 p2, CommandCallback *callback, uint32 cmd);
|
|
|
|
/* network.c */
|
|
void NetworkUDPClose(void);
|
|
void NetworkStartUp(void);
|
|
void NetworkShutDown(void);
|
|
void NetworkGameLoop(void);
|
|
void NetworkUDPGameLoop(void);
|
|
bool NetworkServerStart(void);
|
|
bool NetworkClientConnectGame(const char* host, unsigned short port);
|
|
void NetworkReboot(void);
|
|
void NetworkDisconnect(void);
|
|
void NetworkSend_Command(TileIndex tile, uint32 p1, uint32 p2, uint32 cmd, CommandCallback *callback);
|
|
|
|
/* misc_cmd.c */
|
|
void PlaceTreesRandomly(void);
|
|
|
|
void InitializeLandscapeVariables(bool only_constants);
|
|
|
|
/* misc.c */
|
|
void DeleteName(StringID id);
|
|
char *GetName(int id, char *buff);
|
|
|
|
// AllocateNameUnique also tests if the name used is not used anywere else
|
|
// and if it is used, it returns an error.
|
|
#define AllocateNameUnique(name, skip) RealAllocateName(name, skip, true)
|
|
#define AllocateName(name, skip) RealAllocateName(name, skip, false)
|
|
StringID RealAllocateName(const char *name, byte skip, bool check_double);
|
|
|
|
/* misc functions */
|
|
void MarkTileDirty(int x, int y);
|
|
void MarkTileDirtyByTile(TileIndex tile);
|
|
void InvalidateWindow(WindowClass cls, WindowNumber number);
|
|
void InvalidateWindowWidget(WindowClass cls, WindowNumber number, byte widget_index);
|
|
void InvalidateWindowClasses(WindowClass cls);
|
|
void DeleteWindowById(WindowClass cls, WindowNumber number);
|
|
void DeleteWindowByClass(WindowClass cls);
|
|
|
|
void SetObjectToPlaceWnd(CursorID icon, byte mode, Window *w);
|
|
void SetObjectToPlace(CursorID icon, byte mode, WindowClass window_class, WindowNumber window_num);
|
|
|
|
void ResetObjectToPlace(void);
|
|
|
|
bool ScrollWindowTo(int x, int y, Window * w);
|
|
|
|
bool ScrollMainWindowToTile(TileIndex tile);
|
|
bool ScrollMainWindowTo(int x, int y);
|
|
void DrawSprite(uint32 img, int x, int y);
|
|
bool EnsureNoVehicle(TileIndex tile);
|
|
bool EnsureNoVehicleOnGround(TileIndex tile);
|
|
void MarkAllViewportsDirty(int left, int top, int right, int bottom);
|
|
void ShowCostOrIncomeAnimation(int x, int y, int z, int32 cost);
|
|
void ShowFeederIncomeAnimation(int x, int y, int z, int32 cost);
|
|
|
|
void DrawFoundation(TileInfo *ti, uint f);
|
|
|
|
bool CheckIfAuthorityAllows(TileIndex tile);
|
|
Town *ClosestTownFromTile(TileIndex tile, uint threshold);
|
|
void ChangeTownRating(Town *t, int add, int max);
|
|
|
|
uint GetTownRadiusGroup(const Town* t, TileIndex tile);
|
|
void ShowNetworkChatQueryWindow(byte desttype, byte dest);
|
|
void ShowNetworkGiveMoneyWindow(byte player);
|
|
int FindFirstBit(uint32 x);
|
|
void ShowHighscoreTable(int difficulty, int8 rank);
|
|
TileIndex AdjustTileCoordRandomly(TileIndex a, byte rng);
|
|
|
|
void AfterLoadTown(void);
|
|
void UpdatePatches(void);
|
|
void AskExitGame(void);
|
|
void AskExitToGameMenu(void);
|
|
|
|
void RedrawAutosave(void);
|
|
|
|
StringID RemapOldStringID(StringID s);
|
|
|
|
void UpdateViewportSignPos(ViewportSign *sign, int left, int top, StringID str);
|
|
|
|
enum {
|
|
SLD_LOAD_GAME,
|
|
SLD_LOAD_SCENARIO,
|
|
SLD_SAVE_GAME,
|
|
SLD_SAVE_SCENARIO,
|
|
SLD_LOAD_HEIGHTMAP,
|
|
SLD_NEW_GAME,
|
|
};
|
|
void ShowSaveLoadDialog(int mode);
|
|
|
|
// callback from drivers that is called if the game size changes dynamically
|
|
void GameSizeChanged(void);
|
|
bool FileExists(const char *filename);
|
|
bool ReadLanguagePack(int index);
|
|
void InitializeLanguagePacks(void);
|
|
const char *GetCurrentLocale(const char *param);
|
|
void *ReadFileToMem(const char *filename, size_t *lenp, size_t maxsize);
|
|
|
|
void LoadFromConfig(void);
|
|
void SaveToConfig(void);
|
|
void CheckConfig(void);
|
|
int ttd_main(int argc, char* argv[]);
|
|
void HandleExitGameRequest(void);
|
|
|
|
void DeterminePaths(void);
|
|
|
|
void CSleep(int milliseconds);
|
|
#endif /* FUNCTIONS_H */
|