summaryrefslogtreecommitdiff
path: root/src/ai/ai.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/ai/ai.h')
-rw-r--r--src/ai/ai.h115
1 files changed, 0 insertions, 115 deletions
diff --git a/src/ai/ai.h b/src/ai/ai.h
deleted file mode 100644
index 0f18490d5..000000000
--- a/src/ai/ai.h
+++ /dev/null
@@ -1,115 +0,0 @@
-/* $Id$ */
-
-/** @file ai.h Base functions for all AIs. */
-
-#ifndef AI_H
-#define AI_H
-
-#include "../network/network.h"
-#include "../command_type.h"
-#include "../core/random_func.hpp"
-#include "../settings_type.h"
-
-/* How DoCommands look like for an AI */
-struct AICommand {
- uint32 tile;
- uint32 p1;
- uint32 p2;
- uint32 cmd;
- CommandCallback *callback;
-
- char *text;
- uint uid;
-
- AICommand *next;
-};
-
-/* The struct for an AIScript Company */
-struct AICompany {
- bool active; ///< Is this AI active?
- AICommand *queue; ///< The commands that he has in his queue
- AICommand *queue_tail; ///< The tail of this queue
-};
-
-/* The struct to keep some data about the AI in general */
-struct AIStruct {
- /* General */
- bool enabled; ///< Is AI enabled?
- uint tick; ///< The current tick (something like _frame_counter, only for AIs)
-};
-
-extern AIStruct _ai;
-extern AICompany _ai_company[MAX_COMPANIES];
-
-// ai.c
-void AI_StartNewAI(CompanyID company);
-void AI_CompanyDied(CompanyID company);
-void AI_RunGameLoop();
-void AI_Initialize();
-void AI_Uninitialize();
-CommandCost AI_DoCommand(TileIndex tile, uint32 p1, uint32 p2, uint32 flags, uint procc, const char *text = NULL);
-CommandCost AI_DoCommandCc(TileIndex tile, uint32 p1, uint32 p2, uint32 flags, uint procc, CommandCallback *callback, const char *text = NULL);
-
-/** Is it allowed to start a new AI.
- * This function checks some boundries to see if we should launch a new AI.
- * @return True if we can start a new AI.
- */
-static inline bool AI_AllowNewAI()
-{
- /* If disabled, no AI */
- if (!_ai.enabled)
- return false;
-
- /* If in network, but no server, no AI */
- if (_networking && !_network_server)
- return false;
-
- /* If in network, and server, possible AI */
- if (_networking && _network_server) {
- /* Do we want AIs in multiplayer? */
- if (!_settings_game.ai.ai_in_multiplayer)
- return false;
-
- /* Only the NewAI is allowed... sadly enough the old AI just doesn't support this
- * system, because all commands are delayed by at least 1 tick, which causes
- * a big problem, because it uses variables that are only set AFTER the command
- * is really executed... */
- if (!_settings_game.ai.ainew_active)
- return false;
- }
-
- return true;
-}
-
-#define AI_CHANCE16(a, b) ((uint16) AI_Random() <= (uint16)((65536 * a) / b))
-#define AI_CHANCE16R(a, b, r) ((uint16)(r = AI_Random()) <= (uint16)((65536 * a) / b))
-
-/**
- * The random-function that should be used by ALL AIs.
- */
-static inline uint AI_RandomRange(uint max)
-{
- /* We pick RandomRange if we are in SP (so when saved, we do the same over and over)
- * but we pick InteractiveRandomRange if we are a network_server or network-client.
- */
- if (_networking)
- return InteractiveRandomRange(max);
- else
- return RandomRange(max);
-}
-
-/**
- * The random-function that should be used by ALL AIs.
- */
-static inline uint32 AI_Random()
-{
-/* We pick RandomRange if we are in SP (so when saved, we do the same over and over)
- * but we pick InteractiveRandomRange if we are a network_server or network-client.
- */
- if (_networking)
- return InteractiveRandom();
- else
- return Random();
-}
-
-#endif /* AI_H */