1 /* 2 * OpenBOR - http://www.LavaLit.com 3 * ----------------------------------------------------------------------- 4 * All rights reserved. See LICENSE in OpenBOR root for license details. 5 * 6 * Copyright (c) 2004 - 2011 OpenBOR Team 7 */ 8 9 #ifndef OPENBORSCRIPT_H 10 #define OPENBORSCRIPT_H 11 12 #include "Interpreter.h" 13 #include "pp_parser.h" 14 15 #define MAX_GLOBAL_VAR 2048 16 #define MAX_KEY_LEN 24 17 18 typedef struct 19 { 20 ScriptVariant value; 21 char key[MAX_KEY_LEN]; 22 struct Script* owner; 23 }s_variantnode; 24 25 //osc 26 #define script_magic ((int)0x73636f) 27 28 typedef struct Script 29 { 30 int magic; 31 Interpreter* pinterpreter; 32 char* comment; // debug purpose 33 ScriptVariant* vars; 34 int initialized; //flag 35 int interpreterowner; //flag 36 }Script; 37 38 extern s_variantnode** global_var_list; 39 extern List theFunctionList; 40 extern ScriptVariant* indexed_var_list; 41 extern int max_indexed_vars; 42 extern int max_entity_vars; 43 extern int max_script_vars; 44 extern int max_global_vars; 45 extern int max_global_var_index ; 46 extern int global_var_count; 47 48 //these functions can be used by openbor.c 49 void Script_Global_Init(); 50 void Script_Global_Clear(); 51 ScriptVariant* Script_Get_Global_Variant(char* theName); 52 int Script_Set_Global_Variant(char* theName, ScriptVariant* var); 53 ScriptVariant* Script_Get_Local_Variant(Script* cs, char* theName); 54 int Script_Set_Local_Variant(Script* cs, char* theName, ScriptVariant* var); 55 void Script_Init(Script* pscript, char* theName, char* comment, int first); 56 Script* alloc_script(); 57 void Script_Copy(Script* pdest, Script* psrc, int localclear); 58 int Script_IsInitialized(Script* pscript); 59 void Script_Clear(Script* pscript, int localclear); 60 int Script_AppendText(Script* pscript, char* text, char* path); 61 int Script_Compile(Script* pscript); 62 int Script_Execute(Script* pscript); 63 64 void Script_LoadSystemFunctions(); 65 66 #ifndef COMPILED_SCRIPT 67 int Script_Call(Script* pscript, char* method, ScriptVariant* pretvar); 68 #endif 69 70 HRESULT system_isempty(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 71 HRESULT system_NULL(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 72 HRESULT system_rand(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 73 HRESULT system_maxglobalvarindex(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 74 HRESULT system_getglobalvar(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 75 HRESULT system_setglobalvar(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 76 HRESULT system_getlocalvar(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 77 HRESULT system_setlocalvar(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 78 HRESULT system_clearlocalvar(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 79 HRESULT system_clearglobalvar(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 80 HRESULT system_clearindexedvar(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 81 HRESULT system_free(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 82 HRESULT openbor_systemvariant(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 83 HRESULT openbor_changesystemvariant(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 84 HRESULT openbor_drawstring(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 85 HRESULT openbor_drawstringtoscreen(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 86 HRESULT openbor_drawsprite(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 87 HRESULT openbor_drawspritetoscreen(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 88 HRESULT openbor_log(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 89 HRESULT openbor_drawbox(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 90 HRESULT openbor_drawline(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 91 HRESULT openbor_drawdot(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 92 HRESULT openbor_drawboxtoscreen(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 93 HRESULT openbor_drawlinetoscreen(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 94 HRESULT openbor_drawdottoscreen(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 95 HRESULT openbor_drawscreen(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 96 HRESULT openbor_changeplayerproperty(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 97 HRESULT openbor_changeentityproperty(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 98 HRESULT openbor_getplayerproperty(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 99 HRESULT openbor_getentityproperty(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 100 HRESULT openbor_clearspawnentry(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 101 HRESULT openbor_setspawnentry(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 102 HRESULT openbor_spawn(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 103 HRESULT openbor_projectile(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 104 HRESULT openbor_transconst(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 105 HRESULT openbor_tossentity(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 106 HRESULT openbor_playmusic(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 107 HRESULT openbor_fademusic(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 108 HRESULT openbor_setmusicvolume(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 109 HRESULT openbor_setmusictempo(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 110 HRESULT openbor_pausemusic(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 111 HRESULT openbor_playsample(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 112 HRESULT openbor_loadsample(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 113 HRESULT openbor_unloadsample(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 114 HRESULT openbor_fadeout(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 115 HRESULT openbor_playerkeys(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 116 HRESULT openbor_changepalette(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 117 HRESULT openbor_damageentity(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 118 HRESULT openbor_killentity(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 119 HRESULT openbor_findtarget(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 120 HRESULT openbor_checkrange(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 121 HRESULT openbor_gettextobjproperty(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 122 HRESULT openbor_changetextobjproperty(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 123 HRESULT openbor_settextobj(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 124 HRESULT openbor_cleartextobj(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 125 HRESULT openbor_getlayerproperty(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 126 HRESULT openbor_changelayerproperty(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 127 HRESULT openbor_getlevelproperty(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 128 HRESULT openbor_changelevelproperty(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 129 HRESULT openbor_checkhole(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 130 HRESULT openbor_checkwall(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 131 HRESULT openbor_checkplatformbelow(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 132 133 HRESULT openbor_openfilestream(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 134 HRESULT openbor_getfilestreamline(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 135 HRESULT openbor_getfilestreamargument(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 136 HRESULT openbor_filestreamnextline(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 137 HRESULT openbor_getfilestreamposition(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 138 HRESULT openbor_setfilestreamposition(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 139 140 HRESULT openbor_filestreamappend(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 141 HRESULT openbor_createfilestream(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 142 HRESULT openbor_closefilestream(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 143 HRESULT openbor_savefilestream(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 144 145 HRESULT openbor_getindexedvar(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 146 HRESULT openbor_setindexedvar(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 147 HRESULT openbor_getscriptvar(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 148 HRESULT openbor_setscriptvar(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 149 HRESULT openbor_getentityvar(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 150 HRESULT openbor_setentityvar(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 151 152 HRESULT openbor_shutdown(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 153 154 HRESULT openbor_jumptobranch(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 155 156 HRESULT openbor_changelight(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 157 HRESULT openbor_changeshadowcolor(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 158 HRESULT openbor_bindentity(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 159 160 HRESULT openbor_array(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 161 HRESULT openbor_size(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 162 HRESULT openbor_get(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 163 HRESULT openbor_set(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 164 165 HRESULT openbor_allocscreen(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 166 HRESULT openbor_clearscreen(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 167 HRESULT openbor_setdrawmethod(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 168 HRESULT openbor_updateframe(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 169 HRESULT openbor_performattack(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 170 HRESULT openbor_setidle(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 171 HRESULT openbor_getentity(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 172 173 HRESULT openbor_loadmodel(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 174 HRESULT openbor_loadsprite(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 175 HRESULT openbor_options(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 176 HRESULT openbor_playgif(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 177 178 HRESULT openbor_strinfirst(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 179 HRESULT openbor_strinlast(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 180 HRESULT openbor_strleft(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 181 HRESULT openbor_strlength(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 182 HRESULT openbor_strwidth(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 183 HRESULT openbor_strright(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 184 HRESULT openbor_getmodelproperty(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 185 HRESULT openbor_changemodelproperty(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 186 HRESULT openbor_rgbcolor(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 187 HRESULT openbor_settexture(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 188 HRESULT openbor_setvertex(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 189 HRESULT openbor_trianglelist(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 190 191 HRESULT openbor_aicheckwarp(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 192 HRESULT openbor_aichecklie(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 193 HRESULT openbor_aicheckgrabbed(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 194 HRESULT openbor_aicheckgrab(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 195 HRESULT openbor_aicheckescape(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 196 HRESULT openbor_aicheckbusy(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 197 HRESULT openbor_aicheckattack(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 198 HRESULT openbor_aicheckmove(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 199 HRESULT openbor_aicheckjump(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 200 HRESULT openbor_aicheckpathblocked(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 201 202 HRESULT openbor_adjustwalkanimation(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 203 HRESULT openbor_finditem(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 204 HRESULT openbor_pickup(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 205 HRESULT openbor_waypoints(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 206 HRESULT openbor_changedrawmethod(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 207 208 HRESULT openbor_drawspriteq(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 209 HRESULT openbor_clearspriteq(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 210 HRESULT openbor_getgfxproperty(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 211 212 HRESULT openbor_allocscript(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 213 HRESULT openbor_loadscript(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 214 HRESULT openbor_compilescript(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 215 HRESULT openbor_executescript(ScriptVariant** varlist , ScriptVariant** pretvar, int paramCount); 216 217 void mapstrings_systemvariant(ScriptVariant** varlist, int paramCount); 218 void mapstrings_getentityproperty(ScriptVariant** varlist, int paramCount); 219 void mapstrings_changeentityproperty(ScriptVariant** varlist, int paramCount); 220 void mapstrings_playerproperty(ScriptVariant** varlist, int paramCount); 221 void mapstrings_setspawnentry(ScriptVariant** varlist, int paramCount); 222 void mapstrings_transconst(ScriptVariant** varlist, int paramCount); 223 void mapstrings_playerkeys(ScriptVariant** varlist, int paramCount); 224 void mapstrings_gettextobjproperty(ScriptVariant** varlist, int paramCount); 225 void mapstrings_changetextobjproperty(ScriptVariant** varlist, int paramCount); 226 void mapstrings_layerproperty(ScriptVariant** varlist, int paramCount); 227 void mapstrings_drawmethodproperty(ScriptVariant** varlist, int paramCount); 228 void mapstrings_gfxproperty(ScriptVariant** varlist, int paramCount); 229 void mapstrings_levelproperty(ScriptVariant** varlist, int paramCount); 230 231 232 enum systemvariant_enum 233 { 234 _sv_background, 235 _sv_blockade, 236 _sv_branchname, 237 _sv_count_enemies, 238 _sv_count_entities, 239 _sv_count_npcs, 240 _sv_count_players, 241 _sv_current_branch, 242 _sv_current_level, 243 _sv_current_palette, 244 _sv_current_scene, 245 _sv_current_set, 246 _sv_current_stage, 247 _sv_effectvol, 248 _sv_elapsed_time, 249 _sv_ent_max, 250 _sv_freeram, 251 _sv_game_paused, 252 _sv_game_speed, 253 _sv_gfx_x_offset, 254 _sv_gfx_y_offset, 255 _sv_gfx_y_offset_adj, 256 _sv_hResolution, 257 _sv_in_gameoverscreen, 258 _sv_in_halloffamescreen, 259 _sv_in_level, 260 _sv_in_menuscreen, 261 _sv_in_selectscreen, 262 _sv_in_showcomplete, 263 _sv_in_titlescreen, 264 _sv_lasthita, 265 _sv_lasthitc, 266 _sv_lasthitt, 267 _sv_lasthitx, 268 _sv_lasthitz, 269 _sv_levelheight, 270 _sv_levelpos, 271 _sv_levelwidth, 272 _sv_lightx, 273 _sv_lightz, 274 _sv_maxanimations, 275 _sv_maxattacktypes, 276 _sv_maxentityvars, 277 _sv_maxglobalvars, 278 _sv_maxindexedvars, 279 _sv_maxplayers, 280 _sv_maxscriptvars, 281 _sv_models_cached, 282 _sv_models_loaded, 283 _sv_musicvol, 284 _sv_nofadeout, 285 _sv_nopause, 286 _sv_nosave, 287 _sv_noscreenshot, 288 _sv_numpalettes, 289 _sv_pakname, 290 _sv_pause, 291 _sv_pixelformat, 292 _sv_player, 293 _sv_player1, 294 _sv_player2, 295 _sv_player3, 296 _sv_player4, 297 _sv_player_max_z, 298 _sv_player_min_z, 299 _sv_scrollmaxz, 300 _sv_scrollminz, 301 _sv_self, 302 _sv_shadowalpha, 303 _sv_shadowcolor, 304 _sv_skiptoset, 305 _sv_slowmotion, 306 _sv_slowmotion_duration, 307 _sv_smartbomber, 308 _sv_soundvol, 309 _sv_textbox, 310 _sv_ticks, 311 _sv_totalram, 312 _sv_usedram, 313 _sv_usesave, 314 _sv_vResolution, 315 _sv_viewporth, 316 _sv_viewportw, 317 _sv_viewportx, 318 _sv_viewporty, 319 _sv_vscreen, 320 _sv_waiting, 321 _sv_xpos, 322 _sv_ypos, 323 _sv_the_end, 324 }; 325 326 #endif 327