00001 /* $Id$ */ 00002 00003 /* 00004 * This file is part of OpenTTD. 00005 * 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. 00006 * 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. 00007 * 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/>. 00008 */ 00009 00012 #ifndef SCRIPT_OBJECT_HPP 00013 #define SCRIPT_OBJECT_HPP 00014 00015 #include "../../misc/countedptr.hpp" 00016 #include "../../road_type.h" 00017 #include "../../rail_type.h" 00018 00019 #include "script_types.hpp" 00020 #include "../script_suspend.hpp" 00021 00025 typedef bool (ScriptModeProc)(); 00026 00034 class ScriptObject : public SimpleCountedObject { 00035 friend class ScriptInstance; 00036 protected: 00043 class ActiveInstance { 00044 friend class ScriptObject; 00045 public: 00046 ActiveInstance(ScriptInstance *instance); 00047 ~ActiveInstance(); 00048 private: 00049 ScriptInstance *last_active; 00050 00051 static ScriptInstance *active; 00052 }; 00053 00054 public: 00059 static void SetLastCommandRes(bool res); 00060 00065 static class ScriptInstance *GetActiveInstance(); 00066 00067 protected: 00071 static bool DoCommand(TileIndex tile, uint32 p1, uint32 p2, uint cmd, const char *text = NULL, Script_SuspendCallbackProc *callback = NULL); 00072 00076 static void SetDoCommandCosts(Money value); 00077 00081 static void IncreaseDoCommandCosts(Money value); 00082 00086 static Money GetDoCommandCosts(); 00087 00091 static void SetLastError(ScriptErrorType last_error); 00092 00096 static ScriptErrorType GetLastError(); 00097 00101 static void SetRoadType(RoadType road_type); 00102 00106 static RoadType GetRoadType(); 00107 00111 static void SetRailType(RailType rail_type); 00112 00116 static RailType GetRailType(); 00117 00121 static void SetDoCommandMode(ScriptModeProc *proc, ScriptObject *instance); 00122 00126 static ScriptModeProc *GetDoCommandMode(); 00127 00131 static ScriptObject *GetDoCommandModeInstance(); 00132 00136 static void SetDoCommandDelay(uint ticks); 00137 00141 static uint GetDoCommandDelay(); 00142 00146 static bool GetLastCommandRes(); 00147 00151 static VehicleID GetNewVehicleID(); 00152 00156 static SignID GetNewSignID(); 00157 00161 static TileIndex GetNewTunnelEndtile(); 00162 00166 static GroupID GetNewGroupID(); 00167 00172 static void SetAllowDoCommand(bool allow); 00173 00181 static bool GetAllowDoCommand(); 00182 00186 static void SetLastCost(Money last_cost); 00187 00191 static Money GetLastCost(); 00192 00196 static void SetCallbackVariable(int index, int value); 00197 00201 static int GetCallbackVariable(int index); 00202 00206 static bool CanSuspend(); 00207 00211 static void *&GetEventPointer(); 00212 00216 static void *&GetLogPointer(); 00217 00218 private: 00223 static void SetNewVehicleID(VehicleID vehicle_id); 00224 00229 static void SetNewSignID(SignID sign_id); 00230 00235 static void SetNewTunnelEndtile(TileIndex tile); 00236 00241 static void SetNewGroupID(GroupID group_id); 00242 }; 00243 00244 #endif /* SCRIPT_OBJECT_HPP */