author  sheepluva 
Fri, 13 Jun 2014 02:31:05 +0200  
changeset 10291  d9893b1b76a0 
parent 10290  42efccba0711 
child 10293  201ea4989985 
permissions  rwrr 
3043
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

1 
(* 
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

2 
* Hedgewars, a free turn based strategy game 
9998  3 
* Copyright (c) 20042014 Andrey Korotaev <unC0Rr@gmail.com> 
3043
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

4 
* 
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

5 
* This program is free software; you can redistribute it and/or modify 
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

6 
* it under the terms of the GNU General Public License as published by 
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

7 
* the Free Software Foundation; version 2 of the License 
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

8 
* 
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

9 
* This program is distributed in the hope that it will be useful, 
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

10 
* but WITHOUT ANY WARRANTY; without even the implied warranty of 
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

11 
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

12 
* GNU General Public License for more details. 
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

13 
* 
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

14 
* You should have received a copy of the GNU General Public License 
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

15 
* along with this program; if not, write to the Free Software 
10108
c68cf030eded
update FSF address. note: two sdl include files (by Sam Lantinga) still have the old FSF address in their copyright  but I ain't gonna touch their copyright headers
sheepluva
parents:
10078
diff
changeset

16 
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 021101301 USA 
3043
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

17 
*) 
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

18 

3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

19 
{$INCLUDE "options.inc"} 
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

20 

3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

21 
unit uScript; 
5124  22 
(* 
23 
* This unit defines, implements and registers functions and 

24 
* variables/constants bindings for usage in Lua scripts. 

25 
* 

26 
* Please keep http://code.google.com/p/hedgewars/wiki/LuaAPI up to date! 

27 
* 

28 
* Note: If you add a new function, make sure to test if _all_ parameters 

29 
* work as intended! (Especially conversions errors can sneak in 

30 
* unnoticed and render the parameter useless!) 

31 
*) 

3043
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

32 
interface 
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

33 

3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

34 
procedure ScriptPrintStack; 
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

35 
procedure ScriptClearStack; 
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

36 

3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

37 
procedure ScriptLoad(name : shortstring); 
10150
fa5c83fd0ad9
Allow lua drawn maps (shoppamap, tunnels, diagonal maze etc) to generate previews.
nemo
parents:
10143
diff
changeset

38 
procedure ScriptOnPreviewInit; 
3043
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

39 
procedure ScriptOnGameInit; 
7030
09984acadece
invert LUA symbol meaning and avoid hints when compiling without it
koda
parents:
7010
diff
changeset

40 
procedure ScriptOnScreenResize; 
8366
67c7ba2b82a3
lua API functions to enable or disable game flags
martin_bede
parents:
8228
diff
changeset

41 
procedure ScriptSetInteger(name : shortstring; value : LongInt); 
9985
42cd42e44c9a
GravRacer, GravHigh, GravMutant, Grav... uhm... shoppamap? Easy! Gravity script could be combined with any other script now.
unc0rr
parents:
9917
diff
changeset

42 
procedure ScriptSetString(name : shortstring; value : shortstring); 
3043
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

43 

3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

44 
procedure ScriptCall(fname : shortstring); 
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

45 
function ScriptCall(fname : shortstring; par1: LongInt) : LongInt; 
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

46 
function ScriptCall(fname : shortstring; par1, par2: LongInt) : LongInt; 
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

47 
function ScriptCall(fname : shortstring; par1, par2, par3: LongInt) : LongInt; 
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

48 
function ScriptCall(fname : shortstring; par1, par2, par3, par4 : LongInt) : LongInt; 
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

49 
function ScriptExists(fname : shortstring) : boolean; 
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

50 

5410  51 

7805  52 
//function ParseCommandOverride(key, value : shortstring) : shortstring; This did not work out well 
5577  53 

3043
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

54 
procedure initModule; 
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

55 
procedure freeModule; 
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

56 

3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

57 
implementation 
7030
09984acadece
invert LUA symbol meaning and avoid hints when compiling without it
koda
parents:
7010
diff
changeset

58 
{$IFDEF USE_LUA_SCRIPT} 
9205
abce6011f86c
aaaaand let's not forget about lua, which has also a slightly revised build process
koda
parents:
9180
diff
changeset

59 

6453
11c578d30bd3
Countless imporvements to the parser and countless help to the parser in sources.
unc0rr
parents:
6430
diff
changeset

60 
uses LuaPas, 
3043
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

61 
uConsole, 
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

62 
uConsts, 
6543  63 
uGears, 
6468  64 
uGearsList, 
6543  65 
uGearsUtils, 
3043
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

66 
uFloat, 
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

67 
uWorld, 
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

68 
uAmmos, 
6763  69 
uTeams, 
3043
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

70 
uSound, 
4235
6b1dfbd60a45
added TeamsCount and TotalTurns to lua as requested by mikade
Henek
parents:
4221
diff
changeset

71 
uChat, 
4243  72 
uStats, 
4875  73 
uStore, 
4357
a1fcfc341a52
Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents:
4319
diff
changeset

74 
uRandom, 
4359  75 
uTypes, 
4373  76 
uVariables, 
4374  77 
uCommands, 
4377  78 
uUtils, 
4403  79 
uCaptions, 
4832  80 
uDebug, 
4889
f71e30eb1d37
Reset things using team colour on change in SetClanColor in lua. This routine had better have been worth it.
nemo
parents:
4883
diff
changeset

81 
uCollisions, 
f71e30eb1d37
Reset things using team colour on change in SetClanColor in lua. This routine had better have been worth it.
nemo
parents:
4883
diff
changeset

82 
uRenderUtils, 
f71e30eb1d37
Reset things using team colour on change in SetClanColor in lua. This routine had better have been worth it.
nemo
parents:
4883
diff
changeset

83 
uTextures, 
4985  84 
uLandGraphics, 
9752
656c511ab0f3
here have some lua love: make parameter count error messages more helpful to lua devs
sheepluva
parents:
9751
diff
changeset

85 
SysUtils, 
8031  86 
uIO, 
9283
76e68c136a11
Refactoring: VGSHandlers.inc > uVisualGearsHandlers.pas
unc0rr
parents:
9245
diff
changeset

87 
uVisualGearsList, 
9285  88 
uGearsHandlersMess, 
9952
32f5982604f4
Fix build (no idea what's going on in this branch btw)
unc0rr
parents:
9950
diff
changeset

89 
uPhysFSLayer 
10129
cd2a64a1f4aa
 Pas2C: make use of 'external' function decorator
unc0rr
parents:
10127
diff
changeset

90 
{$IFNDEF PAS2C} 
9952
32f5982604f4
Fix build (no idea what's going on in this branch btw)
unc0rr
parents:
9950
diff
changeset

91 
, typinfo 
9521
8054d9d775fd
merge with latest defaul, fixing compiling with fpc, parsing and rendering with pas2c, some minor problems with compiling with clang
koda
diff
changeset

92 
{$ENDIF} 
8031  93 
; 
3697  94 

3043
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

95 
var luaState : Plua_State; 
3346  96 
ScriptAmmoLoadout : shortstring; 
97 
ScriptAmmoProbability : shortstring; 

98 
ScriptAmmoDelay : shortstring; 

99 
ScriptAmmoReinforcement : shortstring; 

3043
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

100 
ScriptLoaded : boolean; 
9567
42bc1b58a242
This test is intended to avoid repeatedly calling 5 ScriptSetIntegers each script call, that won't ever change after the map is created.
nemo
parents:
9531
diff
changeset

101 
mapDims : boolean; 
3697  102 

3043
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

103 
procedure ScriptPrepareAmmoStore; forward; 
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

104 
procedure ScriptApplyAmmoStore; forward; 
9750  105 
procedure ScriptSetAmmo(ammo : TAmmoType; count, probability, delay, reinforcement: Byte); forward; 
9751
7a6038c3faa2
lua call SetAmmoDelay(ammotype, delay). note: as the engine does not yet support perclan/team/hog ammo delay values, lua scripters will have to keep track of individual delays and set them accordingly before a hedgehog's turn (if they want usage cooldown behavior)
sheepluva
parents:
9750
diff
changeset

106 
procedure ScriptSetAmmoDelay(ammo : TAmmoType; delay: Byte); forward; 
3043
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

107 

3539  108 
procedure LuaError(s: shortstring); 
109 
begin 

10279
b75e7ebfbe11
fix possible engine crash that a lua script could cause by passing an invalid geartype to addgear
sheepluva
parents:
10278
diff
changeset

110 
s:= 'Luascript error: ' + s; 
3539  111 
WriteLnToConsole(s); 
112 
AddChatString(#5 + s); 

9988
317d46a2afd2
simple mechanism to run luabased test cases. experimental  I will back it out if it turns out to be nonsense
sheepluva
parents:
9987
diff
changeset

113 
if cTestLua then 
317d46a2afd2
simple mechanism to run luabased test cases. experimental  I will back it out if it turns out to be nonsense
sheepluva
parents:
9987
diff
changeset

114 
halt(rtnTestLuaErr); 
3539  115 
end; 
116 

10284
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

117 
procedure LuaCallError(error, call, paramsyntax: shortstring); 
10279
b75e7ebfbe11
fix possible engine crash that a lua script could cause by passing an invalid geartype to addgear
sheepluva
parents:
10278
diff
changeset

118 
begin 
10280
762c256552e9
WIP: PlaceSprite for lua API. also changed PlaceGirder so that it will return true/false for whether placing was successful too
sheepluva
parents:
10279
diff
changeset

119 
LuaError(call + ': ' + error + ' function syntax: ' + call + ' ( ' + paramsyntax + ' )'); 
10279
b75e7ebfbe11
fix possible engine crash that a lua script could cause by passing an invalid geartype to addgear
sheepluva
parents:
10278
diff
changeset

120 
end; 
b75e7ebfbe11
fix possible engine crash that a lua script could cause by passing an invalid geartype to addgear
sheepluva
parents:
10278
diff
changeset

121 

10285  122 
procedure LuaParameterCountError(expected, call, paramsyntax: shortstring; wrongcount: LongInt); inline; 
123 
begin 

124 
// TODO: i18n? 

125 
LuaCallError('Wrong number of parameters! (is: ' + inttostr(wrongcount) + ', should be: '+ expected + ')', call, paramsyntax); 

126 
end; 

127 

10284
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

128 
// compare with allowed count 
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

129 
function CheckLuaParameterCount(L : Plua_State; count: LongInt; call, paramsyntax: shortstring): boolean; inline; 
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

130 
var c: LongInt; 
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

131 
begin 
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

132 
c:= lua_gettop(L); 
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

133 
if c <> count then 
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

134 
begin 
10285  135 
LuaParameterCountError('exactly ' + inttostr(count), call, paramsyntax, c); 
10284
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

136 
exit(false); 
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

137 
end; 
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

138 

e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

139 
CheckLuaParameterCount:= true; 
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

140 
end; 
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

141 

e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

142 
// check if is either count1 or count2 
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

143 
function CheckAndFetchLuaParameterCount(L : Plua_State; count1, count2: LongInt; call, paramsyntax: shortstring; out actual: LongInt): boolean; inline; 
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

144 
begin 
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

145 
actual:= lua_gettop(L); 
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

146 
if (actual <> count1) and (actual <> count2) then 
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

147 
begin 
10285  148 
LuaParameterCountError('either ' + inttostr(count1) + ' or ' + inttostr(count2), call, paramsyntax, actual); 
10284
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

149 
exit(false); 
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

150 
end; 
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

151 

e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

152 
CheckAndFetchLuaParameterCount:= true; 
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

153 
end; 
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

154 

e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

155 
// check if is same or higher as minCount 
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

156 
function CheckAndFetchLuaParameterCount(L : Plua_State; minCount: LongInt; call, paramsyntax: shortstring; out actual: LongInt): boolean; inline; 
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

157 
begin 
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

158 
actual:= lua_gettop(L); 
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

159 
if (actual < minCount) then 
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

160 
begin 
10285  161 
LuaParameterCountError(inttostr(minCount) + ' or more', call, paramsyntax, actual); 
10284
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

162 
exit(false); 
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

163 
end; 
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

164 

e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

165 
CheckAndFetchLuaParameterCount:= true; 
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

166 
end; 
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

167 

10281  168 
function LuaToGearTypeOrd(L : Plua_State; i: LongInt; call, paramsyntax: shortstring): LongInt; inline; 
169 
begin 

170 
if lua_isnoneornil(L, i) then i:= 1 

171 
else i:= lua_tointeger(L, i); 

172 
if (i < ord(Low(TGearType))) or (i > ord(High(TGearType))) then 

173 
begin 

174 
LuaCallError('Invalid gearType!', call, paramsyntax); 

175 
LuaToGearTypeOrd:= 1; 

176 
end 

177 
else 

178 
LuaToGearTypeOrd:= i; 

179 
end; 

180 

181 
function LuaToVisualGearTypeOrd(L : Plua_State; i: LongInt; call, paramsyntax: shortstring): LongInt; inline; 

182 
begin 

183 
if lua_isnoneornil(L, i) then i:= 1 

184 
else i:= lua_tointeger(L, i); 

185 
if (i < ord(Low(TVisualGearType))) or (i > ord(High(TVisualGearType))) then 

186 
begin 

187 
LuaCallError('Invalid visualGearType!', call, paramsyntax); 

188 
LuaToVisualGearTypeOrd:= 1; 

189 
end 

190 
else 

191 
LuaToVisualGearTypeOrd:= i; 

192 
end; 

193 

194 
function LuaToAmmoTypeOrd(L : Plua_State; i: LongInt; call, paramsyntax: shortstring): LongInt; inline; 

10279
b75e7ebfbe11
fix possible engine crash that a lua script could cause by passing an invalid geartype to addgear
sheepluva
parents:
10278
diff
changeset

195 
begin 
10281  196 
if lua_isnoneornil(L, i) then i:= 1 
197 
else i:= lua_tointeger(L, i); 

198 
if (i < ord(Low(TAmmoType))) or (i > ord(High(TAmmoType))) then 

199 
begin 

200 
LuaCallError('Invalid ammoType!', call, paramsyntax); 

201 
LuaToAmmoTypeOrd:= 1; 

202 
end 

203 
else 

204 
LuaToAmmoTypeOrd:= i; 

205 
end; 

206 

207 
function LuaToStatInfoTypeOrd(L : Plua_State; i: LongInt; call, paramsyntax: shortstring): LongInt; inline; 

208 
begin 

209 
if lua_isnoneornil(L, i) then i:= 1 

210 
else i:= lua_tointeger(L, i); 

211 
if (i < ord(Low(TStatInfoType))) or (i > ord(High(TStatInfoType))) then 

212 
begin 

213 
LuaCallError('Invalid statInfoType!', call, paramsyntax); 

214 
LuaToStatInfoTypeOrd:= 1; 

215 
end 

216 
else 

217 
LuaToStatInfoTypeOrd:= i; 

218 
end; 

219 

220 
function LuaToSoundOrd(L : Plua_State; i: LongInt; call, paramsyntax: shortstring): LongInt; inline; 

221 
begin 

222 
if lua_isnoneornil(L, i) then i:= 1 

223 
else i:= lua_tointeger(L, i); 

224 
if (i < ord(Low(TSound))) or (i > ord(High(TSound))) then 

225 
begin 

226 
LuaCallError('Invalid soundId!', call, paramsyntax); 

227 
LuaToSoundOrd:= 1; 

228 
end 

229 
else 

230 
LuaToSoundOrd:= i; 

231 
end; 

232 

233 
function LuaToHogEffectOrd(L : Plua_State; i: LongInt; call, paramsyntax: shortstring): LongInt; inline; 

234 
begin 

235 
if lua_isnoneornil(L, i) then i:= 1 

236 
else i:= lua_tointeger(L, i); 

237 
if (i < ord(Low(THogEffect))) or (i > ord(High(THogEffect))) then 

10279
b75e7ebfbe11
fix possible engine crash that a lua script could cause by passing an invalid geartype to addgear
sheepluva
parents:
10278
diff
changeset

238 
begin 
b75e7ebfbe11
fix possible engine crash that a lua script could cause by passing an invalid geartype to addgear
sheepluva
parents:
10278
diff
changeset

239 
LuaCallError('Invalid gear type!', call, paramsyntax); 
10281  240 
LuaToHogEffectOrd:= 1; 
241 
end 

242 
else 

243 
LuaToHogEffectOrd:= i; 

9752
656c511ab0f3
here have some lua love: make parameter count error messages more helpful to lua devs
sheepluva
parents:
9751
diff
changeset

244 
end; 
656c511ab0f3
here have some lua love: make parameter count error messages more helpful to lua devs
sheepluva
parents:
9751
diff
changeset

245 

10281  246 
function LuaToCapGroupOrd(L : Plua_State; i: LongInt; call, paramsyntax: shortstring): LongInt; inline; 
10280
762c256552e9
WIP: PlaceSprite for lua API. also changed PlaceGirder so that it will return true/false for whether placing was successful too
sheepluva
parents:
10279
diff
changeset

247 
begin 
10281  248 
if lua_isnoneornil(L, i) then i:= 1 
249 
else i:= lua_tointeger(L, i); 

250 
if (i < ord(Low(TCapGroup))) or (i > ord(High(TCapGroup))) then 

251 
begin 

252 
LuaCallError('Invalid capgroup type!', call, paramsyntax); 

253 
LuaToCapGroupOrd:= 1; 

254 
end 

255 
else 

256 
LuaToCapGroupOrd:= i; 

257 
end; 

258 

259 
function LuaToSpriteOrd(L : Plua_State; i: LongInt; call, paramsyntax: shortstring): LongInt; inline; 

260 
begin 

261 
if lua_isnoneornil(L, i) then i:= 1 

262 
else i:= lua_tointeger(L, i); 

263 
if (i < ord(Low(TSprite))) or (i > ord(High(TSprite))) then 

10280
762c256552e9
WIP: PlaceSprite for lua API. also changed PlaceGirder so that it will return true/false for whether placing was successful too
sheepluva
parents:
10279
diff
changeset

264 
begin 
762c256552e9
WIP: PlaceSprite for lua API. also changed PlaceGirder so that it will return true/false for whether placing was successful too
sheepluva
parents:
10279
diff
changeset

265 
LuaCallError('Invalid sprite id!', call, paramsyntax); 
10281  266 
LuaToSpriteOrd:= 1; 
267 
end 

268 
else 

269 
LuaToSpriteOrd:= i; 

10280
762c256552e9
WIP: PlaceSprite for lua API. also changed PlaceGirder so that it will return true/false for whether placing was successful too
sheepluva
parents:
10279
diff
changeset

270 
end; 
762c256552e9
WIP: PlaceSprite for lua API. also changed PlaceGirder so that it will return true/false for whether placing was successful too
sheepluva
parents:
10279
diff
changeset

271 

3043
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

272 
// wrapped calls // 
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

273 

3539  274 
// functions called from Lua: 
3043
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

275 
// function(L : Plua_State) : LongInt; Cdecl; 
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

276 
// where L contains the state, returns the number of return values on the stack 
10287  277 
// call CheckLuaParameterCount or CheckAndFetchLuaParameterCount 
278 
// to validate/get the number of passed arguments (see their call definitions) 

279 
// 

280 
// use as return value the number of variables pushed back to the lua script 

3043
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

281 

4483  282 
function lc_band(L: PLua_State): LongInt; Cdecl; 
283 
begin 

10284
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

284 
if CheckLuaParameterCount(L, 2, 'band', 'value1, value2') then 
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

285 
lua_pushinteger(L, lua_tointeger(L, 2) and lua_tointeger(L, 1)) 
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

286 
else 
4483  287 
lua_pushnil(L); 
288 
lc_band := 1; 

289 
end; 

290 

291 
function lc_bor(L: PLua_State): LongInt; Cdecl; 

292 
begin 

10284
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

293 
if CheckLuaParameterCount(L, 2, 'bor', 'value1, value2') then 
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

294 
lua_pushinteger(L, lua_tointeger(L, 2) or lua_tointeger(L, 1)) 
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

295 
else 
4483  296 
lua_pushnil(L); 
297 
lc_bor := 1; 

298 
end; 

299 

300 
function lc_bnot(L: PLua_State): LongInt; Cdecl; 

301 
begin 

10284
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

302 
if CheckLuaParameterCount(L, 1, 'bnot', 'value') then 
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

303 
lua_pushinteger(L, (not lua_tointeger(L, 1))) 
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

304 
else 
4483  305 
lua_pushnil(L); 
306 
lc_bnot := 1; 

307 
end; 

308 

6764  309 
function lc_div(L: PLua_State): LongInt; Cdecl; 
310 
begin 

10284
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

311 
if CheckLuaParameterCount(L, 2, 'div', 'dividend, divisor') then 
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

312 
lua_pushinteger(L, lua_tointeger(L, 1) div lua_tointeger(L, 2)) 
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

313 
else 
6764  314 
lua_pushnil(L); 
315 
lc_div := 1; 

316 
end; 

317 

4523  318 
function lc_getinputmask(L : Plua_State) : LongInt; Cdecl; 
319 
begin 

10284
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

320 
if CheckLuaParameterCount(L, 0, 'GetInputMask', '') then 
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6578
diff
changeset

321 
lua_pushinteger(L, InputMask); 
4523  322 
lc_getinputmask:= 1 
323 
end; 

324 

4522
0f590eefd531
Add an input mask for setting of gear messages. Intended for intercepting user messages. This is totally untested. I don't think it should desync but seriously needs a lot of testing. Esp the doPut behaviour.
nemo
parents:
4517
diff
changeset

325 
function lc_setinputmask(L : Plua_State) : LongInt; Cdecl; 
0f590eefd531
Add an input mask for setting of gear messages. Intended for intercepting user messages. This is totally untested. I don't think it should desync but seriously needs a lot of testing. Esp the doPut behaviour.
nemo
parents:
4517
diff
changeset

326 
begin 
10284
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

327 
if CheckLuaParameterCount(L, 1, 'SetInputMask', 'mask') then 
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6578
diff
changeset

328 
InputMask:= lua_tointeger(L, 1); 
4522
0f590eefd531
Add an input mask for setting of gear messages. Intended for intercepting user messages. This is totally untested. I don't think it should desync but seriously needs a lot of testing. Esp the doPut behaviour.
nemo
parents:
4517
diff
changeset

329 
lc_setinputmask:= 0 
0f590eefd531
Add an input mask for setting of gear messages. Intended for intercepting user messages. This is totally untested. I don't think it should desync but seriously needs a lot of testing. Esp the doPut behaviour.
nemo
parents:
4517
diff
changeset

330 
end; 
0f590eefd531
Add an input mask for setting of gear messages. Intended for intercepting user messages. This is totally untested. I don't think it should desync but seriously needs a lot of testing. Esp the doPut behaviour.
nemo
parents:
4517
diff
changeset

331 

3043
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

332 
function lc_writelntoconsole(L : Plua_State) : LongInt; Cdecl; 
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

333 
begin 
10284
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

334 
if CheckLuaParameterCount(L, 1, 'WriteLnToConsole', 'string') then 
5549
ccfb9b8ab9d1
sheepluva pointed out there are 2 StrPas in pascal, in different units. Do conversion in LuaPas instead
nemo
parents:
5547
diff
changeset

335 
WriteLnToConsole('Lua: ' + lua_tostring(L ,1)); 
3043
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

336 
lc_writelntoconsole:= 0; 
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

337 
end; 
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

338 

3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

339 
function lc_parsecommand(L : Plua_State) : LongInt; Cdecl; 
7307
f830a65d6a6d
This is necessary because commands can contain 0s, and StrPas used by LuaPas halts at the first 0. It might be necessary to change the base string handling.
nemo
parents:
7270
diff
changeset

340 
var t: PChar; 
f830a65d6a6d
This is necessary because commands can contain 0s, and StrPas used by LuaPas halts at the first 0. It might be necessary to change the base string handling.
nemo
parents:
7270
diff
changeset

341 
i,c: LongWord; 
f830a65d6a6d
This is necessary because commands can contain 0s, and StrPas used by LuaPas halts at the first 0. It might be necessary to change the base string handling.
nemo
parents:
7270
diff
changeset

342 
s: shortstring; 
3043
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

343 
begin 
10284
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

344 
if CheckLuaParameterCount(L, 1, 'ParseCommand', 'string') then 
3043
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

345 
begin 
10131
4b4a043111f4
 pas2c recognizes typecasts in initialization expressions
unc0rr
parents:
10129
diff
changeset

346 
t:= lua_tolstring(L, 1, Psize_t(@c)); 
7307
f830a65d6a6d
This is necessary because commands can contain 0s, and StrPas used by LuaPas halts at the first 0. It might be necessary to change the base string handling.
nemo
parents:
7270
diff
changeset

347 

f830a65d6a6d
This is necessary because commands can contain 0s, and StrPas used by LuaPas halts at the first 0. It might be necessary to change the base string handling.
nemo
parents:
7270
diff
changeset

348 
for i:= 1 to c do s[i]:= t[i1]; 
f830a65d6a6d
This is necessary because commands can contain 0s, and StrPas used by LuaPas halts at the first 0. It might be necessary to change the base string handling.
nemo
parents:
7270
diff
changeset

349 
s[0]:= char(c); 
f830a65d6a6d
This is necessary because commands can contain 0s, and StrPas used by LuaPas halts at the first 0. It might be necessary to change the base string handling.
nemo
parents:
7270
diff
changeset

350 

7805  351 
ParseCommand(s, true, true); 
7307
f830a65d6a6d
This is necessary because commands can contain 0s, and StrPas used by LuaPas halts at the first 0. It might be necessary to change the base string handling.
nemo
parents:
7270
diff
changeset

352 

10284
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

353 
end; 
3043
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

354 
lc_parsecommand:= 0; 
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

355 
end; 
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

356 

10291  357 
// sets weapon to the desired ammo type 
10289  358 
function lc_setweapon(L : Plua_State) : LongInt; Cdecl; 
359 
var at: LongInt; 

360 
const 

361 
call = 'SetWeapon'; 

362 
params = 'ammoType'; 

363 
begin 

10291  364 
// no point to run this without any CurrentHedgehog 
365 
if (CurrentHedgehog <> nil) and (CheckLuaParameterCount(L, 1, call, params)) then 

10289  366 
begin 
367 
at:= LuaToAmmoTypeOrd(L, 1, call, params); 

368 
if at >= 0 then 

369 
ParseCommand('setweap ' + char(at), true, true); 

370 
end; 

371 
lc_setweapon:= 0; 

372 
end; 

373 

10291  374 
// sets weapon to whatever weapons is next (wraps around, amSkip is skipped) 
375 
function lc_setnextweapon(L : Plua_State) : LongInt; Cdecl; 

376 
var at : LongInt; 

377 
nextAmmo : TAmmo; 

378 
s, a, cs, fa: LongInt; 

379 
const 

380 
call = 'SetNextWeapon'; 

381 
params = ''; 

382 
begin 

383 
if (CurrentHedgehog <> nil) and (CheckLuaParameterCount(L, 0, call, params)) then 

384 
begin 

385 
at:= 1; 

386 
with CurrentHedgehog^ do 

387 
begin 

388 
cs:= 0; // current slot 

389 
fa:= 0; // first ammo item to check 

390 

391 
// if something is selected, find it's successor 

392 
if curAmmoType <> amNothing then 

393 
begin 

394 
// get current slot index 

395 
cs:= Ammoz[CurAmmoType].Slot; 

396 
// find current ammo index 

397 
while (fa < cMaxSlotAmmoIndex) 

398 
and (Ammo^[cs, fa].AmmoType <> CurAmmoType) do 

399 
inc(fa); 

400 
// increase once more because we won't successor 

401 
inc(fa); 

402 
end; 

403 

404 
// find first available ammo 

405 
// revisit current slot too (current item might not be first) 

406 
for s:= cs to cs + cMaxSlotIndex + 1 do 

407 
begin 

408 
for a:= fa to cMaxSlotAmmoIndex do 

409 
begin 

410 
// check if we went full circle 

411 
if (a = fa) and (s = cs + cMaxSlotIndex + 1) then 

412 
exit(0); 

413 

414 
// get ammo 

415 
nextAmmo:= Ammo^[s mod (cMaxSlotIndex + 1), a]; 

416 
// only switch to ammos the hog actually has 

417 
if (nextAmmo.AmmoType <> amNothing) 

418 
and (nextAmmo.AmmoType <> amSkip) and (nextAmmo.Count > 0) then 

419 
begin 

420 
at:= ord(nextAmmo.AmmoType); 

421 
break; 

422 
end; 

423 
end; 

424 
// stop slot loop if something was found 

425 
if at >= 0 then 

426 
break; 

427 
// check following slots starting with first item 

428 
fa:= 0; 

429 
end; 

430 
end; 

431 

432 
if at >= 0 then 

433 
ParseCommand('setweap ' + char(at), true, true); 

434 
end; 

435 
lc_setnextweapon:= 0; 

436 
end; 

437 

3043
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

438 
function lc_showmission(L : Plua_State) : LongInt; Cdecl; 
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

439 
begin 
10284
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

440 
if CheckLuaParameterCount(L, 5, 'ShowMission', 'caption, subcaption, text, icon, time') then 
10127  441 
ShowMission(lua_tostringA(L, 1), lua_tostringA(L, 2), lua_tostringA(L, 3), lua_tointeger(L, 4), lua_tointeger(L, 5)); 
3043
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

442 
lc_showmission:= 0; 
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

443 
end; 
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

444 

3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

445 
function lc_hidemission(L : Plua_State) : LongInt; Cdecl; 
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

446 
begin 
3407  447 
L:= L; // avoid compiler hint 
3043
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

448 
HideMission; 
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

449 
lc_hidemission:= 0; 
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

450 
end; 
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

451 

8366
67c7ba2b82a3
lua API functions to enable or disable game flags
martin_bede
parents:
8228
diff
changeset

452 
function lc_enablegameflags(L : Plua_State) : LongInt; Cdecl; 
10284
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

453 
var i, n : integer; 
8366
67c7ba2b82a3
lua API functions to enable or disable game flags
martin_bede
parents:
8228
diff
changeset

454 
begin 
10284
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

455 
// can have 1 or more arguments 
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

456 
if CheckAndFetchLuaParameterCount(L, 1, 'EnableGameFlags', 'gameFlag, ... ', n) then 
10035  457 
begin 
10284
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

458 
for i:= 1 to n do 
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

459 
GameFlags := GameFlags or LongWord(lua_tointeger(L, i)); 
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

460 
ScriptSetInteger('GameFlags', GameFlags); 
10035  461 
end; 
8370  462 
lc_enablegameflags:= 0; 
8366
67c7ba2b82a3
lua API functions to enable or disable game flags
martin_bede
parents:
8228
diff
changeset

463 
end; 
67c7ba2b82a3
lua API functions to enable or disable game flags
martin_bede
parents:
8228
diff
changeset

464 

67c7ba2b82a3
lua API functions to enable or disable game flags
martin_bede
parents:
8228
diff
changeset

465 
function lc_disablegameflags(L : Plua_State) : LongInt; Cdecl; 
10284
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

466 
var i , n: integer; 
8366
67c7ba2b82a3
lua API functions to enable or disable game flags
martin_bede
parents:
8228
diff
changeset

467 
begin 
10284
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

468 
// can have 1 or more arguments 
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

469 
if CheckAndFetchLuaParameterCount(L, 1, 'DisableGameFlags', 'gameFlag, ... ', n) then 
10035  470 
begin 
10284
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

471 
for i:= 1 to n do 
10078  472 
GameFlags := GameFlags and (not LongWord(lua_tointeger(L, i))); 
10035  473 
ScriptSetInteger('GameFlags', GameFlags); 
474 
end; 

8370  475 
lc_disablegameflags:= 0; 
8366
67c7ba2b82a3
lua API functions to enable or disable game flags
martin_bede
parents:
8228
diff
changeset

476 
end; 
67c7ba2b82a3
lua API functions to enable or disable game flags
martin_bede
parents:
8228
diff
changeset

477 

67c7ba2b82a3
lua API functions to enable or disable game flags
martin_bede
parents:
8228
diff
changeset

478 
function lc_cleargameflags(L : Plua_State) : LongInt; Cdecl; 
67c7ba2b82a3
lua API functions to enable or disable game flags
martin_bede
parents:
8228
diff
changeset

479 
begin 
10284
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

480 
if CheckLuaParameterCount(L, 0, 'ClearGameFlags', '') then 
10035  481 
begin 
482 
GameFlags:= 0; 

483 
ScriptSetInteger('GameFlags', GameFlags); 

484 
end; 

8370  485 
lc_cleargameflags:= 0; 
8366
67c7ba2b82a3
lua API functions to enable or disable game flags
martin_bede
parents:
8228
diff
changeset

486 
end; 
67c7ba2b82a3
lua API functions to enable or disable game flags
martin_bede
parents:
8228
diff
changeset

487 

10035  488 
function lc_getgameflag(L : Plua_State) : LongInt; Cdecl; 
489 
begin 

10284
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

490 
if CheckLuaParameterCount(L, 1, 'GetGameFlag', 'gameflag') then 
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

491 
lua_pushboolean(L, (GameFlags and LongWord(lua_tointeger(L, 1)) <> 0)) 
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

492 
else 
10035  493 
lua_pushnil(L); 
494 
lc_getgameflag:= 1; 

495 
end; 

496 

4243  497 
function lc_addcaption(L : Plua_State) : LongInt; Cdecl; 
10281  498 
var cg: LongInt; 
499 
const 

500 
call = 'AddCaption'; 

501 
params = 'text [, color, captiongroup]'; 

4243  502 
begin 
10284
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

503 
if CheckAndFetchLuaParameterCount(L, 1, 3, call, params, cg) then 
4243  504 
begin 
10284
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

505 
if cg = 1 then 
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

506 
AddCaption(lua_tostringA(L, 1), cWhiteColor, capgrpMessage) 
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

507 
else 
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

508 
begin 
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

509 
cg:= LuaToCapGroupOrd(L, 3, call, params); 
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

510 
if cg >= 0 then 
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

511 
AddCaption(lua_tostringA(L, 1), lua_tointeger(L, 2) shr 8, TCapGroup(cg)); 
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

512 
end 
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

513 
end; 
4243  514 
lc_addcaption:= 0; 
515 
end; 

516 

3848  517 
function lc_campaignlock(L : Plua_State) : LongInt; Cdecl; 
518 
begin 

10284
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

519 
if CheckLuaParameterCount(L, 1, 'CampaignLock', 'TODO') then 
3848  520 
begin 
10284
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

521 
// TODO 
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

522 
end; 
3848  523 
lc_campaignlock:= 0; 
524 
end; 

525 

526 
function lc_campaignunlock(L : Plua_State) : LongInt; Cdecl; 

527 
begin 

10284
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

528 
if CheckLuaParameterCount(L, 1, 'CampaignUnlock', 'TODO') then 
3848  529 
begin 
10284
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

530 
// TODO 
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

531 
end; 
3848  532 
lc_campaignunlock:= 0; 
533 
end; 

534 

5313
5e18eaef65d0
now scripts can create unique crates: dummy (empty) crates and booby traps. scripts can also set health crate values
Henek
parents:
5277
diff
changeset

535 
function lc_spawnfakehealthcrate(L: Plua_State) : LongInt; Cdecl; 
5e18eaef65d0
now scripts can create unique crates: dummy (empty) crates and booby traps. scripts can also set health crate values
Henek
parents:
5277
diff
changeset

536 
var gear: PGear; 
5e18eaef65d0
now scripts can create unique crates: dummy (empty) crates and booby traps. scripts can also set health crate values
Henek
parents:
5277
diff
changeset

537 
begin 
10284
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

538 
if CheckLuaParameterCount(L, 4,'SpawnFakeHealthCrate', 'x, y, explode, poison') then 
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6578
diff
changeset

539 
begin 
5313
5e18eaef65d0
now scripts can create unique crates: dummy (empty) crates and booby traps. scripts can also set health crate values
Henek
parents:
5277
diff
changeset

540 
gear := SpawnFakeCrateAt(lua_tointeger(L, 1), lua_tointeger(L, 2), 
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6578
diff
changeset

541 
HealthCrate, lua_toboolean(L, 3), lua_toboolean(L, 4)); 
5313
5e18eaef65d0
now scripts can create unique crates: dummy (empty) crates and booby traps. scripts can also set health crate values
Henek
parents:
5277
diff
changeset

542 
lua_pushinteger(L, gear^.uid); 
10284
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

543 
end 
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

544 
else 
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

545 
lua_pushnil(L); 
9752
656c511ab0f3
here have some lua love: make parameter count error messages more helpful to lua devs
sheepluva
parents:
9751
diff
changeset

546 
lc_spawnfakehealthcrate := 1; 
5313
5e18eaef65d0
now scripts can create unique crates: dummy (empty) crates and booby traps. scripts can also set health crate values
Henek
parents:
5277
diff
changeset

547 
end; 
5e18eaef65d0
now scripts can create unique crates: dummy (empty) crates and booby traps. scripts can also set health crate values
Henek
parents:
5277
diff
changeset

548 

5e18eaef65d0
now scripts can create unique crates: dummy (empty) crates and booby traps. scripts can also set health crate values
Henek
parents:
5277
diff
changeset

549 
function lc_spawnfakeammocrate(L: PLua_State): LongInt; Cdecl; 
5e18eaef65d0
now scripts can create unique crates: dummy (empty) crates and booby traps. scripts can also set health crate values
Henek
parents:
5277
diff
changeset

550 
var gear: PGear; 
5e18eaef65d0
now scripts can create unique crates: dummy (empty) crates and booby traps. scripts can also set health crate values
Henek
parents:
5277
diff
changeset

551 
begin 
10284
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

552 
if CheckLuaParameterCount(L, 4,'SpawnFakeAmmoCrate', 'x, y, explode, poison') then 
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6578
diff
changeset

553 
begin 
5313
5e18eaef65d0
now scripts can create unique crates: dummy (empty) crates and booby traps. scripts can also set health crate values
Henek
parents:
5277
diff
changeset

554 
gear := SpawnFakeCrateAt(lua_tointeger(L, 1), lua_tointeger(L, 2), 
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6578
diff
changeset

555 
AmmoCrate, lua_toboolean(L, 3), lua_toboolean(L, 4)); 
5313
5e18eaef65d0
now scripts can create unique crates: dummy (empty) crates and booby traps. scripts can also set health crate values
Henek
parents:
5277
diff
changeset

556 
lua_pushinteger(L, gear^.uid); 
10284
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

557 
end 
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

558 
else 
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

559 
lua_pushnil(L); 
5313
5e18eaef65d0
now scripts can create unique crates: dummy (empty) crates and booby traps. scripts can also set health crate values
Henek
parents:
5277
diff
changeset

560 
lc_spawnfakeammocrate := 1; 
5e18eaef65d0
now scripts can create unique crates: dummy (empty) crates and booby traps. scripts can also set health crate values
Henek
parents:
5277
diff
changeset

561 
end; 
5e18eaef65d0
now scripts can create unique crates: dummy (empty) crates and booby traps. scripts can also set health crate values
Henek
parents:
5277
diff
changeset

562 

5e18eaef65d0
now scripts can create unique crates: dummy (empty) crates and booby traps. scripts can also set health crate values
Henek
parents:
5277
diff
changeset

563 
function lc_spawnfakeutilitycrate(L: PLua_State): LongInt; Cdecl; 
5e18eaef65d0
now scripts can create unique crates: dummy (empty) crates and booby traps. scripts can also set health crate values
Henek
parents:
5277
diff
changeset

564 
var gear: PGear; 
5e18eaef65d0
now scripts can create unique crates: dummy (empty) crates and booby traps. scripts can also set health crate values
Henek
parents:
5277
diff
changeset

565 
begin 
10284
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

566 
if CheckLuaParameterCount(L, 4,'SpawnFakeUtilityCrate', 'x, y, explode, poison') then 
9752
656c511ab0f3
here have some lua love: make parameter count error messages more helpful to lua devs
sheepluva
parents:
9751
diff
changeset

567 
begin 
5313
5e18eaef65d0
now scripts can create unique crates: dummy (empty) crates and booby traps. scripts can also set health crate values
Henek
parents:
5277
diff
changeset

568 
gear := SpawnFakeCrateAt(lua_tointeger(L, 1), lua_tointeger(L, 2), 
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6578
diff
changeset

569 
UtilityCrate, lua_toboolean(L, 3), lua_toboolean(L, 4)); 
5313
5e18eaef65d0
now scripts can create unique crates: dummy (empty) crates and booby traps. scripts can also set health crate values
Henek
parents:
5277
diff
changeset

570 
lua_pushinteger(L, gear^.uid); 
10284
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

571 
end 
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

572 
else 
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

573 
lua_pushnil(L); 
5313
5e18eaef65d0
now scripts can create unique crates: dummy (empty) crates and booby traps. scripts can also set health crate values
Henek
parents:
5277
diff
changeset

574 
lc_spawnfakeutilitycrate := 1; 
5e18eaef65d0
now scripts can create unique crates: dummy (empty) crates and booby traps. scripts can also set health crate values
Henek
parents:
5277
diff
changeset

575 
end; 
5e18eaef65d0
now scripts can create unique crates: dummy (empty) crates and booby traps. scripts can also set health crate values
Henek
parents:
5277
diff
changeset

576 

3730  577 
function lc_spawnhealthcrate(L: Plua_State) : LongInt; Cdecl; 
3750
3aa85b5f3318
SpawnCustomCrateAt: spawn crate at random position for x=y=0, also let it return the gear, and luabindings the gear uid
burp
parents:
3736
diff
changeset

578 
var gear: PGear; 
10284
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

579 
var health, n: LongInt; 
3730  580 
begin 
10284
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

581 
if CheckAndFetchLuaParameterCount(L, 2, 3, 'SpawnHealthCrate', 'x, y [, health]', n) then 
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6578
diff
changeset

582 
begin 
10284
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

583 
if n = 3 then 
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6578
diff
changeset

584 
health:= lua_tointeger(L, 3) 
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6578
diff
changeset

585 
else 
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6578
diff
changeset

586 
health:= cHealthCaseAmount; 
7337
c224cd2d32f3
Allow script to set number of ammo in a crate. untested.
nemo
parents:
7307
diff
changeset

587 
gear := SpawnCustomCrateAt(lua_tointeger(L, 1), lua_tointeger(L, 2), HealthCrate, health, 0); 
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6578
diff
changeset

588 
if gear <> nil then 
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6578
diff
changeset

589 
lua_pushinteger(L, gear^.uid) 
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6578
diff
changeset

590 
else 
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6578
diff
changeset

591 
lua_pushnil(L); 
10284
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

592 
end 
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

593 
else 
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

594 
lua_pushnil(L); 
9752
656c511ab0f3
here have some lua love: make parameter count error messages more helpful to lua devs
sheepluva
parents:
9751
diff
changeset

595 
lc_spawnhealthcrate := 1; 
3734  596 
end; 
597 

598 
function lc_spawnammocrate(L: PLua_State): LongInt; Cdecl; 

3750
3aa85b5f3318
SpawnCustomCrateAt: spawn crate at random position for x=y=0, also let it return the gear, and luabindings the gear uid
burp
parents:
3736
diff
changeset

599 
var gear: PGear; 
10284
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

600 
n : LongInt; 
3734  601 
begin 
10284
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

602 
if CheckAndFetchLuaParameterCount(L, 3, 4, 'SpawnAmmoCrate', 'x, y, content [, amount]', n) then 
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6578
diff
changeset

603 
begin 
10284
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

604 
if n = 3 then 
7337
c224cd2d32f3
Allow script to set number of ammo in a crate. untested.
nemo
parents:
7307
diff
changeset

605 
gear := SpawnCustomCrateAt(lua_tointeger(L, 1), lua_tointeger(L, 2), AmmoCrate, lua_tointeger(L, 3), 0) 
c224cd2d32f3
Allow script to set number of ammo in a crate. untested.
nemo
parents:
7307
diff
changeset

606 
else gear := SpawnCustomCrateAt(lua_tointeger(L, 1), lua_tointeger(L, 2), AmmoCrate, lua_tointeger(L, 3), lua_tointeger(L, 4)); 
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6578
diff
changeset

607 
if gear <> nil then 
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6578
diff
changeset

608 
lua_pushinteger(L, gear^.uid) 
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6578
diff
changeset

609 
else 
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6578
diff
changeset

610 
lua_pushnil(L); 
10284
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

611 
end 
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

612 
else 
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

613 
lua_pushnil(L); 
3734  614 
lc_spawnammocrate := 1; 
615 
end; 

616 

617 
function lc_spawnutilitycrate(L: PLua_State): LongInt; Cdecl; 

3750
3aa85b5f3318
SpawnCustomCrateAt: spawn crate at random position for x=y=0, also let it return the gear, and luabindings the gear uid
burp
parents:
3736
diff
changeset

618 
var gear: PGear; 
10284
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

619 
n : LongInt; 
3734  620 
begin 
10284
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

621 
if CheckAndFetchLuaParameterCount(L, 3, 4, 'SpawnUtilityCrate', 'x, y, content [, amount]', n) then 
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6578
diff
changeset

622 
begin 
10284
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

623 
if n = 3 then 
7337
c224cd2d32f3
Allow script to set number of ammo in a crate. untested.
nemo
parents:
7307
diff
changeset

624 
gear := SpawnCustomCrateAt(lua_tointeger(L, 1), lua_tointeger(L, 2), UtilityCrate, lua_tointeger(L, 3), 0) 
c224cd2d32f3
Allow script to set number of ammo in a crate. untested.
nemo
parents:
7307
diff
changeset

625 
else gear := SpawnCustomCrateAt(lua_tointeger(L, 1), lua_tointeger(L, 2), UtilityCrate, lua_tointeger(L, 3), lua_tointeger(L, 4)); 
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6578
diff
changeset

626 
if gear <> nil then 
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6578
diff
changeset

627 
lua_pushinteger(L, gear^.uid) 
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6578
diff
changeset

628 
else 
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6578
diff
changeset

629 
lua_pushnil(L); 
10284
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

630 
end 
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

631 
else 
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

632 
lua_pushnil(L); 
3734  633 
lc_spawnutilitycrate := 1; 
3730  634 
end; 
635 

3043
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

636 
function lc_addgear(L : Plua_State) : LongInt; Cdecl; 
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

637 
var gear : PGear; 
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

638 
x, y, s, t: LongInt; 
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

639 
dx, dy: hwFloat; 
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

640 
gt: TGearType; 
10279
b75e7ebfbe11
fix possible engine crash that a lua script could cause by passing an invalid geartype to addgear
sheepluva
parents:
10278
diff
changeset

641 
const 
b75e7ebfbe11
fix possible engine crash that a lua script could cause by passing an invalid geartype to addgear
sheepluva
parents:
10278
diff
changeset

642 
call = 'AddGear'; 
b75e7ebfbe11
fix possible engine crash that a lua script could cause by passing an invalid geartype to addgear
sheepluva
parents:
10278
diff
changeset

643 
params = 'x, y, gearType, state, dx, dy, timer'; 
3043
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

644 
begin 
10284
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

645 
if CheckLuaParameterCount(L, 7, call, params) then 
3043
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

646 
begin 
10281  647 
t:= LuaToGearTypeOrd(L, 3, call, params); 
648 
if t >= 0 then 

10279
b75e7ebfbe11
fix possible engine crash that a lua script could cause by passing an invalid geartype to addgear
sheepluva
parents:
10278
diff
changeset

649 
begin 
10281  650 
gt:= TGearType(t); 
10279
b75e7ebfbe11
fix possible engine crash that a lua script could cause by passing an invalid geartype to addgear
sheepluva
parents:
10278
diff
changeset

651 
x:= lua_tointeger(L, 1); 
b75e7ebfbe11
fix possible engine crash that a lua script could cause by passing an invalid geartype to addgear
sheepluva
parents:
10278
diff
changeset

652 
y:= lua_tointeger(L, 2); 
b75e7ebfbe11
fix possible engine crash that a lua script could cause by passing an invalid geartype to addgear
sheepluva
parents:
10278
diff
changeset

653 
s:= lua_tointeger(L, 4); 
b75e7ebfbe11
fix possible engine crash that a lua script could cause by passing an invalid geartype to addgear
sheepluva
parents:
10278
diff
changeset

654 
dx:= int2hwFloat(lua_tointeger(L, 5)) / 1000000; 
b75e7ebfbe11
fix possible engine crash that a lua script could cause by passing an invalid geartype to addgear
sheepluva
parents:
10278
diff
changeset

655 
dy:= int2hwFloat(lua_tointeger(L, 6)) / 1000000; 
b75e7ebfbe11
fix possible engine crash that a lua script could cause by passing an invalid geartype to addgear
sheepluva
parents:
10278
diff
changeset

656 
t:= lua_tointeger(L, 7); 
3043
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

657 

10279
b75e7ebfbe11
fix possible engine crash that a lua script could cause by passing an invalid geartype to addgear
sheepluva
parents:
10278
diff
changeset

658 
gear:= AddGear(x, y, gt, s, dx, dy, t); 
b75e7ebfbe11
fix possible engine crash that a lua script could cause by passing an invalid geartype to addgear
sheepluva
parents:
10278
diff
changeset

659 
lastGearByUID:= gear; 
b75e7ebfbe11
fix possible engine crash that a lua script could cause by passing an invalid geartype to addgear
sheepluva
parents:
10278
diff
changeset

660 
lua_pushinteger(L, gear^.uid) 
b75e7ebfbe11
fix possible engine crash that a lua script could cause by passing an invalid geartype to addgear
sheepluva
parents:
10278
diff
changeset

661 
end 
b75e7ebfbe11
fix possible engine crash that a lua script could cause by passing an invalid geartype to addgear
sheepluva
parents:
10278
diff
changeset

662 
else 
b75e7ebfbe11
fix possible engine crash that a lua script could cause by passing an invalid geartype to addgear
sheepluva
parents:
10278
diff
changeset

663 
lua_pushnil(L); 
10284
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

664 
end 
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

665 
else 
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

666 
lua_pushnil(L); 
3043
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

667 
lc_addgear:= 1; // 1 return value 
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

668 
end; 
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

669 

4443
d393b9ccd328
Add an extra pass in FindPlace for AI resurrection mode to try to make it unwinnable, add DeleteGear, DeleteVisualGear, AddVisualGear, GetVisualGearValues, SetVisualGearValues to Lua
nemo
parents:
4411
diff
changeset

670 
function lc_deletegear(L : Plua_State) : LongInt; Cdecl; 
d393b9ccd328
Add an extra pass in FindPlace for AI resurrection mode to try to make it unwinnable, add DeleteGear, DeleteVisualGear, AddVisualGear, GetVisualGearValues, SetVisualGearValues to Lua
nemo
parents:
4411
diff
changeset

671 
var gear : PGear; 
d393b9ccd328
Add an extra pass in FindPlace for AI resurrection mode to try to make it unwinnable, add DeleteGear, DeleteVisualGear, AddVisualGear, GetVisualGearValues, SetVisualGearValues to Lua
nemo
parents:
4411
diff
changeset

672 
begin 
10284
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

673 
if CheckLuaParameterCount(L, 1, 'DeleteGear', 'gearUid') then 
4443
d393b9ccd328
Add an extra pass in FindPlace for AI resurrection mode to try to make it unwinnable, add DeleteGear, DeleteVisualGear, AddVisualGear, GetVisualGearValues, SetVisualGearValues to Lua
nemo
parents:
4411
diff
changeset

674 
begin 
d393b9ccd328
Add an extra pass in FindPlace for AI resurrection mode to try to make it unwinnable, add DeleteGear, DeleteVisualGear, AddVisualGear, GetVisualGearValues, SetVisualGearValues to Lua
nemo
parents:
4411
diff
changeset

675 
gear:= GearByUID(lua_tointeger(L, 1)); 
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6578
diff
changeset

676 
if gear <> nil then 
7517  677 
gear^.Message:= gear^.Message or gmDelete; 
4443
d393b9ccd328
Add an extra pass in FindPlace for AI resurrection mode to try to make it unwinnable, add DeleteGear, DeleteVisualGear, AddVisualGear, GetVisualGearValues, SetVisualGearValues to Lua
nemo
parents:
4411
diff
changeset

678 
end; 
d393b9ccd328
Add an extra pass in FindPlace for AI resurrection mode to try to make it unwinnable, add DeleteGear, DeleteVisualGear, AddVisualGear, GetVisualGearValues, SetVisualGearValues to Lua
nemo
parents:
4411
diff
changeset

679 
lc_deletegear:= 0 
d393b9ccd328
Add an extra pass in FindPlace for AI resurrection mode to try to make it unwinnable, add DeleteGear, DeleteVisualGear, AddVisualGear, GetVisualGearValues, SetVisualGearValues to Lua
nemo
parents:
4411
diff
changeset

680 
end; 
d393b9ccd328
Add an extra pass in FindPlace for AI resurrection mode to try to make it unwinnable, add DeleteGear, DeleteVisualGear, AddVisualGear, GetVisualGearValues, SetVisualGearValues to Lua
nemo
parents:
4411
diff
changeset

681 

d393b9ccd328
Add an extra pass in FindPlace for AI resurrection mode to try to make it unwinnable, add DeleteGear, DeleteVisualGear, AddVisualGear, GetVisualGearValues, SetVisualGearValues to Lua
nemo
parents:
4411
diff
changeset

682 
function lc_addvisualgear(L : Plua_State) : LongInt; Cdecl; 
d393b9ccd328
Add an extra pass in FindPlace for AI resurrection mode to try to make it unwinnable, add DeleteGear, DeleteVisualGear, AddVisualGear, GetVisualGearValues, SetVisualGearValues to Lua
nemo
parents:
4411
diff
changeset

683 
var vg : PVisualGear; 
d393b9ccd328
Add an extra pass in FindPlace for AI resurrection mode to try to make it unwinnable, add DeleteGear, DeleteVisualGear, AddVisualGear, GetVisualGearValues, SetVisualGearValues to Lua
nemo
parents:
4411
diff
changeset

684 
x, y, s: LongInt; 
d393b9ccd328
Add an extra pass in FindPlace for AI resurrection mode to try to make it unwinnable, add DeleteGear, DeleteVisualGear, AddVisualGear, GetVisualGearValues, SetVisualGearValues to Lua
nemo
parents:
4411
diff
changeset

685 
c: Boolean; 
d393b9ccd328
Add an extra pass in FindPlace for AI resurrection mode to try to make it unwinnable, add DeleteGear, DeleteVisualGear, AddVisualGear, GetVisualGearValues, SetVisualGearValues to Lua
nemo
parents:
4411
diff
changeset

686 
vgt: TVisualGearType; 
10281  687 
uid: Longword; 
688 
const 

689 
call = 'AddVisualGear'; 

690 
params = 'x, y, visualGearType, state, critical'; 

4443
d393b9ccd328
Add an extra pass in FindPlace for AI resurrection mode to try to make it unwinnable, add DeleteGear, DeleteVisualGear, AddVisualGear, GetVisualGearValues, SetVisualGearValues to Lua
nemo
parents:
4411
diff
changeset

691 
begin 
10281  692 
uid:= 0; 
10284
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

693 
if CheckLuaParameterCount(L, 5, call, params) then 
4443
d393b9ccd328
Add an extra pass in FindPlace for AI resurrection mode to try to make it unwinnable, add DeleteGear, DeleteVisualGear, AddVisualGear, GetVisualGearValues, SetVisualGearValues to Lua
nemo
parents:
4411
diff
changeset

694 
begin 
10281  695 
s:= LuaToVisualGearTypeOrd(L, 3, call, params); 
696 
if s >= 0 then 

697 
begin 

698 
vgt:= TVisualGearType(s); 

699 
x:= lua_tointeger(L, 1); 

700 
y:= lua_tointeger(L, 2); 

701 
s:= lua_tointeger(L, 4); 

702 
c:= lua_toboolean(L, 5); 

4443
d393b9ccd328
Add an extra pass in FindPlace for AI resurrection mode to try to make it unwinnable, add DeleteGear, DeleteVisualGear, AddVisualGear, GetVisualGearValues, SetVisualGearValues to Lua
nemo
parents:
4411
diff
changeset

703 

10281  704 
vg:= AddVisualGear(x, y, vgt, s, c); 
705 
if vg <> nil then 

706 
begin 

707 
lastVisualGearByUID:= vg; 

708 
uid:= vg^.uid; 

10284
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

709 
lua_pushinteger(L, uid); 
10281  710 
end; 
10284
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

711 
end 
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

712 
else 
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

713 
lua_pushnil(L); 
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

714 
end 
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

715 
else 
e9c85a0acdd2
placeSprite accepts any amount of landflags now; further WIP wrt cleanup/fixing
sheepluva
parents:
10283
diff
changeset

716 
lua_pushnil(L); // return value on stack (nil) 
4443
d393b9ccd328
Add an extra pass in FindPlace for AI resurrection mode to try to make it unwinnable, add DeleteGear, DeleteVisualGear, AddVisualGear, GetVisualGearValues, SetVisualGearValues to Lua
nemo
parents:
4411
diff
changeset

717 
lc_addvisualgear:= 1; // 1 return value 
d393b9ccd328
Add an extra pass in FindPlace for AI resurrection mode to try to make it unwinnable, add DeleteGear, DeleteVisualGear, AddVisualGear, GetVisualGearValues, SetVisualGearValues to Lua
nemo
parents:
4411
diff
changeset

718 
end; 
d393b9ccd328
Add an extra pass in FindPlace for AI resurrection mode to try to make it unwinnable, add DeleteGear, DeleteVisualGear, AddVisualGear, GetVisualGearValues, SetVisualGearValues to Lua
nemo
parents:
4411
diff
changeset

719 

d393b9ccd328
Add an extra pass in FindPlace for AI resurrection mode to try to make it unwinnable, add DeleteGear, DeleteVisualGear, AddVisualGear, GetVisualGearValues, SetVisualGearValues to Lua
nemo
parents:
4411
diff
changeset

720 
function lc_deletevisualgear(L : Plua_State) : LongInt; Cdecl; 
d393b9ccd328
Add an extra pass in FindPlace for AI resurrection mode to try to make it unwinnable, add DeleteGear, DeleteVisualGear, AddVisualGear, GetVisualGearValues, SetVisualGearValues to Lua
nemo
parents:
4411
diff
changeset

721 
var vg : PVisualGear; 
d393b9ccd328
Add an extra pass in FindPlace for AI resurrection mode to try to make it unwinnable, add DeleteGear, DeleteVisualGear, AddVisualGear, GetVisualGearValues, SetVisualGearValues to Lua
nemo
parents:
4411
diff
changeset

722 
begin 
10281  723 
vg:= nil; 
10287  724 
if CheckLuaParameterCount(L, 1, 'DeleteVisualGear', 'vgUid') then 
4443
d393b9ccd328
Add an extra pass in FindPlace for AI resurrection mode to try to make it unwinnable, add DeleteGear, DeleteVisualGear, AddVisualGear, GetVisualGearValues, SetVisualGearValues to Lua
nemo
parents:
4411
diff
changeset

725 
begin 
d393b9ccd328
Add an extra pass in FindPlace for AI resurrection mode to try to make it unwinnable, add DeleteGear, DeleteVisualGear, AddVisualGear, GetVisualGearValues, SetVisualGearValues to Lua
nemo
parents:
4411
diff
changeset

726 
vg:= VisualGearByUID(lua_tointeger(L, 1)); 
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6578
diff
changeset

727 
if vg <> nil then 
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6578
diff
changeset

728 
DeleteVisualGear(vg); 
4443
d393b9ccd328
Add an extra pass in FindPlace for AI resurrection mode to try to make it unwinnable, add DeleteGear, DeleteVisualGear, AddVisualGear, GetVisualGearValues, SetVisualGearValues to Lua
nemo
parents:
4411
diff
changeset

729 
end; 
10281  730 
// allow caller to know whether there was something to delete 
731 
lua_pushboolean(L, vg <> nil); 

732 
lc_deletevisualgear:= 1 

4443
d393b9ccd328
Add an extra pass in FindPlace for AI resurrection mode to try to make it unwinnable, add DeleteGear, DeleteVisualGear, AddVisualGear, GetVisualGearValues, SetVisualGearValues to Lua
nemo
parents:
4411
diff
changeset

733 
end; 
d393b9ccd328
Add an extra pass in FindPlace for AI resurrection mode to try to make it unwinnable, add DeleteGear, DeleteVisualGear, AddVisualGear, GetVisualGearValues, SetVisualGearValues to Lua
nemo
parents:
4411
diff
changeset

734 

d393b9ccd328
Add an extra pass in FindPlace for AI resurrection mode to try to make it unwinnable, add DeleteGear, DeleteVisualGear, AddVisualGear, GetVisualGearValues, SetVisualGearValues to Lua
nemo
parents:
4411
diff
changeset

735 
function lc_getvisualgearvalues(L : Plua_State) : LongInt; Cdecl; 
d393b9ccd328
Add an extra pass in FindPlace for AI resurrection mode to try to make it unwinnable, add DeleteGear, DeleteVisualGear, AddVisualGear, GetVisualGearValues, SetVisualGearValues to Lua
nemo
parents:
4411
diff
changeset

736 
var vg: PVisualGear; 
d393b9ccd328
Add an extra pass in FindPlace for AI resurrection mode to try to make it unwinnable, add DeleteGear, DeleteVisualGear, AddVisualGear, GetVisualGearValues, SetVisualGearValues to Lua
nemo
parents:
4411
diff
changeset

737 
begin 
10287  738 
if CheckLuaParameterCount(L, 1, 'GetVisualGearValues', 'vgUid') then 
4443
d393b9ccd328
Add an extra pass in FindPlace for AI resurrection mode to try to make it unwinnable, add DeleteGear, DeleteVisualGear, AddVisualGear, GetVisualGearValues, SetVisualGearValues to Lua
nemo
parents:
4411
diff
changeset

739 
begin 
d393b9ccd328
Add an extra pass in FindPlace for AI resurrection mode to try to make it unwinnable, add DeleteGear, DeleteVisualGear, AddVisualGear, GetVisualGearValues, SetVisualGearValues to Lua
nemo
parents:
4411
diff
changeset

740 
vg:= VisualGearByUID(lua_tointeger(L, 1)); 
d393b9ccd328
Add an extra pass in FindPlace for AI resurrection mode to try to make it unwinnable, add DeleteGear, DeleteVisualGear, AddVisualGear, GetVisualGearValues, SetVisualGearValues to Lua
nemo
parents:
4411
diff
changeset

741 
if vg <> nil then 
d393b9ccd328
Add an extra pass in FindPlace for AI resurrection mode to try to make it unwinnable, add DeleteGear, DeleteVisualGear, AddVisualGear, GetVisualGearValues, SetVisualGearValues to Lua
nemo
parents:
4411
diff
changeset

742 
begin 
d393b9ccd328
Add an extra pass in FindPlace for AI resurrection mode to try to make it unwinnable, add DeleteGear, DeleteVisualGear, AddVisualGear, GetVisualGearValues, SetVisualGearValues to Lua
nemo
parents:
4411
diff
changeset

743 
lua_pushinteger(L, round(vg^.X)); 
d393b9ccd328
Add an extra pass in FindPlace for AI resurrection mode to try to make it unwinnable, add DeleteGear, DeleteVisualGear, AddVisualGear, GetVisualGearValues, SetVisualGearValues to Lua
nemo
parents:
4411
diff
changeset

744 
lua_pushinteger(L, round(vg^.Y)); 
5075
59b13b38a827
not useful for visual gears, and apparently not helpful for consistency
nemo
parents:
5074
diff
changeset

745 
lua_pushnumber(L, vg^.dX); 
59b13b38a827
not useful for visual gears, and apparently not helpful for consistency
nemo
parents:
5074
diff
changeset

746 
lua_pushnumber(L, vg^.dY); 
4443
d393b9ccd328
Add an extra pass in FindPlace for AI resurrection mode to try to make it unwinnable, add DeleteGear, DeleteVisualGear, AddVisualGear, GetVisualGearValues, SetVisualGearValues to Lua
nemo
parents:
4411
diff
changeset

747 
lua_pushnumber(L, vg^.Angle); 
d393b9ccd328
Add an extra pass in FindPlace for AI resurrection mode to try to make it unwinnable, add DeleteGear, DeleteVisualGear, AddVisualGear, GetVisualGearValues, SetVisualGearValues to Lua
nemo
parents:
4411
diff
changeset

748 
lua_pushinteger(L, vg^.Frame); 
d393b9ccd328
Add an extra pass in FindPlace for AI resurrection mode to try to make it unwinnable, add DeleteGear, DeleteVisualGear, AddVisualGear, GetVisualGearValues, SetVisualGearValues to Lua
nemo
parents:
4411
diff
changeset

749 
lua_pushinteger(L, vg^.FrameTicks); 
d393b9ccd328
Add an extra pass in FindPlace for AI resurrection mode to try to make it unwinnable, add DeleteGear, DeleteVisualGear, AddVisualGear, GetVisualGearValues, SetVisualGearValues to Lua
nemo
parents:
4411
diff
changeset

750 
lua_pushinteger(L, vg^.State); 
d393b9ccd328
Add an extra pass in FindPlace for AI resurrection mode to try to make it unwinnable, add DeleteGear, DeleteVisualGear, AddVisualGear, GetVisualGearValues, SetVisualGearValues to Lua
nemo
parents:
4411
diff
changeset

751 
lua_pushinteger(L, vg^.Timer); 
d393b9ccd328
Add an extra pass in FindPlace for AI resurrection mode to try to make it unwinnable, add DeleteGear, DeleteVisualGear, AddVisualGear, GetVisualGearValues, SetVisualGearValues to Lua
nemo
parents:
4411
diff
changeset

752 
lua_pushinteger(L, vg^.Tint); 
d393b9ccd328
Add an extra pass in FindPlace for AI resurrection mode to try to make it unwinnable, add DeleteGear, DeleteVisualGear, AddVisualGear, GetVisualGearValues, SetVisualGearValues to Lua
nemo
parents:
4411
diff
changeset

753 
end 
4767
4ee4a49549e2
return nil values if an invalid visual gear is passed to the get, add a check in Control map lua
nemo
parents:
4682
diff
changeset

754 
else 
4ee4a49549e2
return nil values if an invalid visual gear is passed to the get, add a check in Control map lua
nemo
parents:
4682
diff
changeset

755 
begin 
4ee4a49549e2
return nil values if an invalid visual gear is passed to the get, add a check in Control map lua
nemo
parents:
4682
diff
changeset

756 
lua_pushnil(L); lua_pushnil(L); lua_pushnil(L); lua_pushnil(L); lua_pushnil(L); 
10287  757 
lua_pushnil(L); lua_pushnil(L); lua_pushnil(L); lua_pushnil(L); lua_pushnil(L); 
4767
4ee4a49549e2
return nil values if an invalid visual gear is passed to the get, add a check in Control map lua
nemo
parents:
4682
diff
changeset

758 
end 
10287  759 
end 
760 
else 

761 
begin 

762 
lua_pushnil(L); lua_pushnil(L); lua_pushnil(L); lua_pushnil(L); lua_pushnil(L); 

763 
lua_pushnil(L); lua_pushnil(L); lua_pushnil(L); lua_pushnil(L); lua_pushnil(L); 

4443
d393b9ccd328
Add an extra pass in FindPlace for AI resurrection mode to try to make it unwinnable, add DeleteGear, DeleteVisualGear, AddVisualGear, GetVisualGearValues, SetVisualGearValues to Lua
nemo
parents:
4411
diff
changeset

764 
end; 
d393b9ccd328
Add an extra pass in FindPlace for AI resurrection mode to try to make it unwinnable, add DeleteGear, DeleteVisualGear, AddVisualGear, GetVisualGearValues, SetVisualGearValues to Lua
nemo
parents:
4411
diff
changeset

765 
lc_getvisualgearvalues:= 10; 
d393b9ccd328
Add an extra pass in FindPlace for AI resurrection mode to try to make it unwinnable, add DeleteGear, DeleteVisualGear, AddVisualGear, GetVisualGearValues, SetVisualGearValues to Lua
nemo
parents:
4411
diff
changeset

766 
end; 
d393b9ccd328
Add an extra pass in FindPlace for AI resurrection mode to try to make it unwinnable, add DeleteGear, DeleteVisualGear, AddVisualGear, GetVisualGearValues, SetVisualGearValues to Lua
nemo
parents:
4411
diff
changeset

767 

d393b9ccd328
Add an extra pass in FindPlace for AI resurrection mode to try to make it unwinnable, add DeleteGear, DeleteVisualGear, AddVisualGear, GetVisualGearValues, SetVisualGearValues to Lua
nemo
parents:
4411
diff
changeset

768 
function lc_setvisualgearvalues(L : Plua_State) : LongInt; Cdecl; 
d393b9ccd328
Add an extra pass in FindPlace for AI resurrection mode to try to make it unwinnable, add DeleteGear, DeleteVisualGear, AddVisualGear, GetVisualGearValues, SetVisualGearValues to Lua
nemo
parents:
4411
diff
changeset

769 
var vg : PVisualGear; 
d393b9ccd328
Add an extra pass in FindPlace for AI resurrection mode to try to make it unwinnable, add DeleteGear, DeleteVisualGear, AddVisualGear, GetVisualGearValues, SetVisualGearValues to Lua
nemo
parents:
4411
diff
changeset

770 
begin 
10287  771 
if CheckLuaParameterCount(L, 11, 'SetVisualGearValues', 'vgUid, X, Y, dX, dY, Angle, Frame, FrameTicks, State, Timer, Tint') then 
4443
d393b9ccd328
Add an extra pass in FindPlace for AI resurrection mode to try to make it unwinnable, add DeleteGear, DeleteVisualGear, AddVisualGear, GetVisualGearValues, SetVisualGearValues to Lua
nemo
parents:
4411
diff
changeset

772 
begin 
d393b9ccd328
Add an extra pass in FindPlace for AI resurrection mode to try to make it unwinnable, add DeleteGear, DeleteVisualGear, AddVisualGear, GetVisualGearValues, SetVisualGearValues to Lua
nemo
parents:
4411
diff
changeset

773 
vg:= VisualGearByUID(lua_tointeger(L, 1)); 
d393b9ccd328
Add an extra pass in FindPlace for AI resurrection mode to try to make it unwinnable, add DeleteGear, DeleteVisualGear, AddVisualGear, GetVisualGearValues, SetVisualGearValues to Lua
nemo
parents:
4411
diff
changeset

774 
if vg <> nil then 
d393b9ccd328
Add an extra pass in FindPlace for AI resurrection mode to try to make it unwinnable, add DeleteGear, DeleteVisualGear, AddVisualGear, GetVisualGearValues, SetVisualGearValues to Lua
nemo
parents:
4411
diff
changeset

775 
begin 
4450  776 
vg^.X:= lua_tointeger(L, 2); 
777 
vg^.Y:= lua_tointeger(L, 3); 

5075
59b13b38a827
not useful for visual gears, and apparently not helpful for consistency
nemo
parents:
5074
diff
changeset

778 
vg^.dX:= lua_tonumber(L, 4); 
59b13b38a827
not useful for visual gears, and apparently not helpful for consistency
nemo
parents:
5074
diff
changeset

779 
vg^.dY:= lua_tonumber(L, 5); 
4450  780 
vg^.Angle:= lua_tonumber(L, 6); 
781 
vg^.Frame:= lua_tointeger(L, 7); 

6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6578
diff
changeset

782 
if lua_tointeger(L, 8) <> 0 then 
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6578
diff
changeset

783 
vg^.FrameTicks:= lua_tointeger(L, 8); // find a better way to do this. maybe need to break all these up. 
4450  784 
vg^.State:= lua_tointeger(L, 9); 
785 
vg^.Timer:= lua_tointeger(L, 10); 

786 
vg^.Tint:= lua_tointeger(L, 11); 

4443
d393b9ccd328
Add an extra pass in FindPlace for AI resurrection mode to try to make it unwinnable, add DeleteGear, DeleteVisualGear, AddVisualGear, GetVisualGearValues, SetVisualGearValues to Lua
nemo
parents:
4411
diff
changeset

787 
end 
10287  788 
end 
789 
else 

790 
lua_pushnil(L); // return value on stack (nil) 

4443
d393b9ccd328
Add an extra pass in FindPlace for AI resurrection mode to try to make it unwinnable, add DeleteGear, DeleteVisualGear, AddVisualGear, GetVisualGearValues, SetVisualGearValues to Lua
nemo
parents:
4411
diff
changeset

791 
lc_setvisualgearvalues:= 0; 
d393b9ccd328
Add an extra pass in FindPlace for AI resurrection mode to try to make it unwinnable, add DeleteGear, DeleteVisualGear, AddVisualGear, GetVisualGearValues, SetVisualGearValues to Lua
nemo
parents:
4411
diff
changeset

792 
end; 
d393b9ccd328
Add an extra pass in FindPlace for AI resurrection mode to try to make it unwinnable, add DeleteGear, DeleteVisualGear, AddVisualGear, GetVisualGearValues, SetVisualGearValues to Lua
nemo
parents:
4411
diff
changeset

793 

3058  794 
function lc_getfollowgear(L : Plua_State) : LongInt; Cdecl; 
795 
begin 

10287  796 
if CheckLuaParameterCount(L, 0, 'GetFollowGear', '') then 
3058  797 
begin 
798 
if FollowGear = nil then 

799 
lua_pushnil(L) 

800 
else 

4484  801 
lua_pushinteger(L, FollowGear^.uid); 
10287  802 
end 
803 
else 

804 
lua_pushnil(L); 

3058  805 
lc_getfollowgear:= 1; // 1 return value 
806 
end; 

807 

3043
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

808 
function lc_getgeartype(L : Plua_State) : LongInt; Cdecl; 
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

809 
var gear : PGear; 
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

810 
begin 
10287  811 
if CheckLuaParameterCount(L, 1, 'GetGearType', 'gearUid') then 
3043
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

812 
begin 
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

813 
gear:= GearByUID(lua_tointeger(L, 1)); 
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

814 
if gear <> nil then 
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

815 
lua_pushinteger(L, ord(gear^.Kind)) 
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

816 
else 
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

817 
lua_pushnil(L); 
10287  818 
end 
819 
else 

820 
lua_pushnil(L); // return value on stack (nil) 

3043
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

821 
lc_getgeartype:= 1 
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

822 
end; 
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

823 

3892  824 
function lc_getgearmessage(L : Plua_State) : LongInt; Cdecl; 
825 
var gear : PGear; 

826 
begin 

10287  827 
if CheckLuaParameterCount(L, 1, 'GetGearMessage', 'gearUid') then 
3892  828 
begin 
829 
gear:= GearByUID(lua_tointeger(L, 1)); 

830 
if gear <> nil then 

831 
lua_pushinteger(L, gear^.message) 

832 
else 

833 
lua_pushnil(L); 

10287  834 
end 
835 
else 

836 
lua_pushnil(L); // return value on stack (nil) 

3892  837 
lc_getgearmessage:= 1 
838 
end; 

839 

4682
0fc1ff341482
add a GetGearElasticity since Mikade kept asking for it. (actually return *10000 to handle it being an hwFloat  I assume large values will just overflow to negative)
nemo
parents:
4629
diff
changeset

840 
function lc_getgearelasticity(L : Plua_State) : LongInt; Cdecl; 
0fc1ff341482
add a GetGearElasticity since Mikade kept asking for it. (actually return *10000 to handle it being an hwFloat  I assume large values will just overflow to negative)
nemo
parents:
4629
diff
changeset

841 
var gear : PGear; 
0fc1ff341482
add a GetGearElasticity since Mikade kept asking for it. (actually return *10000 to handle it being an hwFloat  I assume large values will just overflow to negative)
nemo
parents:
4629
diff
changeset

842 
begin 
10287  843 
if CheckLuaParameterCount(L, 1, 'GetGearElasticity', 'gearUid') then 
4682
0fc1ff341482
add a GetGearElasticity since Mikade kept asking for it. (actually return *10000 to handle it being an hwFloat  I assume large values will just overflow to negative)
nemo
parents:
4629
diff
changeset

844 
begin 
0fc1ff341482
add a GetGearElasticity since Mikade kept asking for it. (actually return *10000 to handle it being an hwFloat  I assume large values will just overflow to negative)
nemo
parents:
4629
diff
changeset

845 
gear:= GearByUID(lua_tointeger(L, 1)); 
0fc1ff341482
add a GetGearElasticity since Mikade kept asking for it. (actually return *10000 to handle it being an hwFloat  I assume large values will just overflow to negative)
nemo
parents:
4629
diff
changeset

846 
if gear <> nil then 
0fc1ff341482
add a GetGearElasticity since Mikade kept asking for it. (actually return *10000 to handle it being an hwFloat  I assume large values will just overflow to negative)
nemo
parents:
4629
diff
changeset

847 
lua_pushinteger(L, hwRound(gear^.elasticity * _10000)) 
0fc1ff341482
add a GetGearElasticity since Mikade kept asking for it. (actually return *10000 to handle it being an hwFloat  I assume large values will just overflow to negative)
nemo
parents:
4629
diff
changeset

848 
else 
0fc1ff341482
add a GetGearElasticity since Mikade kept asking for it. (actually return *10000 to handle it being an hwFloat  I assume large values will just overflow to negative)
nemo
parents:
4629
diff
changeset

849 
lua_pushnil(L); 
10287  850 
end 
851 
else 

852 
lua_pushnil(L); // return value on stack (nil) 

4682
0fc1ff341482
add a GetGearElasticity since Mikade kept asking for it. (actually return *10000 to handle it being an hwFloat  I assume large values will just overflow to negative)
nemo
parents:
4629
diff
changeset

853 
lc_getgearelasticity:= 1 
0fc1ff341482
add a GetGearElasticity since Mikade kept asking for it. (actually return *10000 to handle it being an hwFloat  I assume large values will just overflow to negative)
nemo
parents:
4629
diff
changeset

854 
end; 
0fc1ff341482
add a GetGearElasticity since Mikade kept asking for it. (actually return *10000 to handle it being an hwFloat  I assume large values will just overflow to negative)
nemo
parents:
4629
diff
changeset

855 

3896  856 
function lc_setgearmessage(L : Plua_State) : LongInt; Cdecl; 
857 
var gear : PGear; 

858 
begin 

10287  859 
if CheckLuaParameterCount(L, 2, 'SetGearMessage', 'gearUid, message') then 
3896  860 
else 
861 
begin 

862 
gear:= GearByUID(lua_tointeger(L, 1)); 

863 
if gear <> nil then 

864 
gear^.message:= lua_tointeger(L, 2); 

865 
end; 

866 
lc_setgearmessage:= 0 

867 
end; 

868 

6523  869 
function lc_getgearpos(L : Plua_State) : LongInt; Cdecl; 
870 
var gear : PGear; 

871 
begin 

10287  872 
if CheckLuaParameterCount(L, 1, 'GetGearPos', 'gearUid') then 
6523  873 
begin 
874 
gear:= GearByUID(lua_tointeger(L, 1)); 

875 
if gear <> nil then 

876 
lua_pushinteger(L, gear^.Pos) 

877 
else 

878 
lua_pushnil(L); 

10287  879 
end 
880 
else 

881 
lua_pushnil(L); // return value on stack (nil) 

6523  882 
lc_getgearpos:= 1 
883 
end; 

884 

885 
function lc_setgearpos(L : Plua_State) : LongInt; Cdecl; 

886 
var gear : PGear; 

887 
begin 

10287  888 
if CheckLuaParameterCount(L, 2, 'SetGearPos', 'gearUid, value') then 
6523  889 
begin 
890 
gear:= GearByUID(lua_tointeger(L, 1)); 

891 
if gear <> nil then 

892 
gear^.Pos:= lua_tointeger(L, 2); 

893 
end; 

894 
lc_setgearpos:= 0 

895 
end; 

896 

7726
1137406bce12
Set default collision mask for gears at currenthedgehog X/Y to FF7F, expose mask to scripting as well. This should resolve the collision part of bug #420
nemo
parents:
7721
diff
changeset

897 
function lc_getgearcollisionmask(L : Plua_State) : LongInt; Cdecl; 
1137406bce12
Set default collision mask for gears at currenthedgehog X/Y to FF7F, expose mask to scripting as well. This should resolve the collision part of bug #420
nemo
parents:
7721
diff
changeset

898 
var gear : PGear; 
1137406bce12
Set default collision mask for gears at currenthedgehog X/Y to FF7F, expose mask to scripting as well. This should resolve the collision part of bug #420
nemo
parents:
7721
diff
changeset

899 
begin 
10287  900 
if CheckLuaParameterCount(L, 1, 'GetGearCollisionMask', 'gearUid') then 
7726
1137406bce12
Set default collision mask for gears at currenthedgehog X/Y to FF7F, expose mask to scripting as well. This should resolve the collision part of bug #420
nemo
parents:
7721
diff
changeset

901 
begin 
1137406bce12
Set default collision mask for gears at currenthedgehog X/Y to FF7F, expose mask to scripting as well. This should resolve the collision part of bug #420
nemo
parents:
7721
diff
changeset

902 
gear:= GearByUID(lua_tointeger(L, 1)); 
1137406bce12
Set default collision mask for gears at currenthedgehog X/Y to FF7F, expose mask to scripting as well. This should resolve the collision part of bug #420
nemo
parents:
7721
diff
changeset

903 
if gear <> nil then 
1137406bce12
Set default collision mask for gears at currenthedgehog X/Y to FF7F, expose mask to scripting as well. This should resolve the collision part of bug #420
nemo
parents:
7721
diff
changeset

904 
lua_pushinteger(L, gear^.CollisionMask) 
1137406bce12
Set default collision mask for gears at currenthedgehog X/Y to FF7F, expose mask to scripting as well. This should resolve the collision part of bug #420
nemo
parents:
7721
diff
changeset

905 
else 
1137406bce12
Set default collision mask for gears at currenthedgehog X/Y to FF7F, expose mask to scripting as well. This should resolve the collision part of bug #420
nemo
parents:
7721
diff
changeset

906 
lua_pushnil(L); 
10287  907 
end 
908 
else 

909 
lua_pushnil(L); // return value on stack (nil) 

7726
1137406bce12
Set default collision mask for gears at currenthedgehog X/Y to FF7F, expose mask to scripting as well. This should resolve the collision part of bug #420
nemo
parents:
7721
diff
changeset

910 
lc_getgearcollisionmask:= 1 
1137406bce12
Set default collision mask for gears at currenthedgehog X/Y to FF7F, expose mask to scripting as well. This should resolve the collision part of bug #420
nemo
parents:
7721
diff
changeset

911 
end; 
1137406bce12
Set default collision mask for gears at currenthedgehog X/Y to FF7F, expose mask to scripting as well. This should resolve the collision part of bug #420
nemo
parents:
7721
diff
changeset

912 

1137406bce12
Set default collision mask for gears at currenthedgehog X/Y to FF7F, expose mask to scripting as well. This should resolve the collision part of bug #420
nemo
parents:
7721
diff
changeset

913 
function lc_setgearcollisionmask(L : Plua_State) : LongInt; Cdecl; 
1137406bce12
Set default collision mask for gears at currenthedgehog X/Y to FF7F, expose mask to scripting as well. This should resolve the collision part of bug #420
nemo
parents:
7721
diff
changeset

914 
var gear : PGear; 
1137406bce12
Set default collision mask for gears at currenthedgehog X/Y to FF7F, expose mask to scripting as well. This should resolve the collision part of bug #420
nemo
parents:
7721
diff
changeset

915 
begin 
10287  916 
if CheckLuaParameterCount(L, 2, 'SetGearCollisionMask', 'gearUid, mask') then 
7726
1137406bce12
Set default collision mask for gears at currenthedgehog X/Y to FF7F, expose mask to scripting as well. This should resolve the collision part of bug #420
nemo
parents:
7721
diff
changeset

917 
begin 
1137406bce12
Set default collision mask for gears at currenthedgehog X/Y to FF7F, expose mask to scripting as well. This should resolve the collision part of bug #420
nemo
parents:
7721
diff
changeset

918 
gear:= GearByUID(lua_tointeger(L, 1)); 
1137406bce12
Set default collision mask for gears at currenthedgehog X/Y to FF7F, expose mask to scripting as well. This should resolve the collision part of bug #420
nemo
parents:
7721
diff
changeset

919 
if gear <> nil then 
1137406bce12
Set default collision mask for gears at currenthedgehog X/Y to FF7F, expose mask to scripting as well. This should resolve the collision part of bug #420
nemo
parents:
7721
diff
changeset

920 
gear^.CollisionMask:= lua_tointeger(L, 2); 
1137406bce12
Set default collision mask for gears at currenthedgehog X/Y to FF7F, expose mask to scripting as well. This should resolve the collision part of bug #420
nemo
parents:
7721
diff
changeset

921 
end; 
1137406bce12
Set default collision mask for gears at currenthedgehog X/Y to FF7F, expose mask to scripting as well. This should resolve the collision part of bug #420
nemo
parents:
7721
diff
changeset

922 
lc_setgearcollisionmask:= 0 
1137406bce12
Set default collision mask for gears at currenthedgehog X/Y to FF7F, expose mask to scripting as well. This should resolve the collision part of bug #420
nemo
parents:
7721
diff
changeset

923 
end; 
1137406bce12
Set default collision mask for gears at currenthedgehog X/Y to FF7F, expose mask to scripting as well. This should resolve the collision part of bug #420
nemo
parents:
7721
diff
changeset

924 

3755  925 
function lc_gethoglevel(L : Plua_State): LongInt; Cdecl; 
926 
var gear : PGear; 

927 
begin 

10287  928 
if CheckLuaParameterCount(L, 1, 'GetHogLevel', 'gearUid') then 
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6578
diff
changeset

929 
begin 
3755  930 
gear := GearByUID(lua_tointeger(L, 1)); 
8228
8cc5dc7f7ef9
kinda treat graves like hedgehogs for the purpose of looking up hog info
nemo
parents:
8145
diff
changeset

931 
if (gear <> nil) and ((gear^.Kind = gtHedgehog) or (gear^.Kind = gtGrave)) and (gear^.Hedgehog <> nil) then 
4372  932 
lua_pushinteger(L, gear^.Hedgehog^.BotLevel) 
3755  933 
else 
934 
lua_pushnil(L); 

935 
end; 

936 
lc_gethoglevel := 1; 

937 
end; 

938 

4496  939 
function lc_sethoglevel(L : Plua_State) : LongInt; Cdecl; 
940 
var gear : PGear; 

941 
begin 

10287  942 
if CheckLuaParameterCount(L, 2, 'SetHogLevel', 'gearUid, level') then 
4496  943 
begin 
944 
gear:= GearByUID(lua_tointeger(L, 1)); 

945 
if (gear <> nil) and (gear^.Kind = gtHedgehog) and (gear^.Hedgehog <> nil) then 

946 
gear^.Hedgehog^.BotLevel:= lua_tointeger(L, 2); 

947 
end; 

948 
lc_sethoglevel:= 0 

949 
end; 

950 

3043
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

951 
function lc_gethogclan(L : Plua_State) : LongInt; Cdecl; 
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

952 
var gear : PGear; 
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

953 
begin 
10287  954 
if CheckLuaParameterCount(L, 1, 'GetHogClan', 'gearUid') then 
3043
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

955 
begin 
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

956 
gear:= GearByUID(lua_tointeger(L, 1)); 
8228
8cc5dc7f7ef9
kinda treat graves like hedgehogs for the purpose of looking up hog info
nemo
parents:
8145
diff
changeset

957 
if (gear <> nil) and ((gear^.Kind = gtHedgehog) or (gear^.Kind = gtGrave)) and (gear^.Hedgehog <> nil) then 
3043
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

958 
begin 
4372  959 
lua_pushinteger(L, gear^.Hedgehog^.Team^.Clan^.ClanIndex) 
3043
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

960 
end 
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

961 
else 
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

962 
lua_pushnil(L); 
10287  963 
end 
964 
else 

965 
lua_pushnil(L); // return value on stack (nil) 

3043
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

966 
lc_gethogclan:= 1 
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

967 
end; 
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

968 

4498  969 
function lc_getclancolor(L : Plua_State) : LongInt; Cdecl; 
970 
begin 

10287  971 
if CheckLuaParameterCount(L, 1, 'GetClanColor', 'clan') then 
972 
lua_pushinteger(L, ClansArray[lua_tointeger(L, 1)]^.Color shl 8 or $FF) 

973 
else 

4498  974 
lua_pushnil(L); // return value on stack (nil) 
975 
lc_getclancolor:= 1 

976 
end; 

977 

4882
b4c84db92d8f
expose set clan color for Cairo. might also be useful for betrayals in campaign mode or somesuch
nemo
parents:
4875
diff
changeset

978 
function lc_setclancolor(L : Plua_State) : LongInt; Cdecl; 
4889
f71e30eb1d37
Reset things using team colour on change in SetClanColor in lua. This routine had better have been worth it.
nemo
parents:
4883
diff
changeset

979 
var clan : PClan; 
f71e30eb1d37
Reset things using team colour on change in SetClanColor in lua. This routine had better have been worth it.
nemo
parents:
4883
diff
changeset

980 
team : PTeam; 
f71e30eb1d37
Reset things using team colour on change in SetClanColor in lua. This routine had better have been worth it.
nemo
parents:
4883
diff
changeset

981 
hh : THedgehog; 
f71e30eb1d37
Reset things using team colour on change in SetClanColor in lua. This routine had better have been worth it.
nemo
parents:
4883
diff
changeset

982 
i, j : LongInt; 
4882
b4c84db92d8f
expose set clan color for Cairo. might also be useful for betrayals in campaign mode or somesuch
nemo
parents:
4875
diff
changeset

983 
begin 
10287  984 
if CheckLuaParameterCount(L, 2, 'SetClanColor', 'clan, color') then 
4889
f71e30eb1d37
Reset things using team colour on change in SetClanColor in lua. This routine had better have been worth it.
nemo
parents:
4883
diff
changeset

985 
begin 
f71e30eb1d37
Reset things using team colour on change in SetClanColor in lua. This routine had better have been worth it.
nemo
parents:
4883
diff
changeset

986 
clan := ClansArray[lua_tointeger(L, 1)]; 
f71e30eb1d37
Reset things using team colour on change in SetClanColor in lua. This routine had better have been worth it.
nemo
parents:
4883
diff
changeset

987 
clan^.Color:= lua_tointeger(L, 2) shr 8; 
9656  988 

4889
f71e30eb1d37
Reset things using team colour on change in SetClanColor in lua. This routine had better have been worth it.
nemo
parents:
4883
diff
changeset

989 
for i:= 0 to Pred(clan^.TeamsNumber) do 
f71e30eb1d37
Reset things using team colour on change in SetClanColor in lua. This routine had better have been worth it.
nemo
parents:
4883
diff
changeset

990 
begin 
f71e30eb1d37
Reset things using team colour on change in SetClanColor in lua. This routine had better have been worth it.
nemo
parents:
4883
diff
changeset

991 
team:= clan^.Teams[i]; 
f71e30eb1d37
Reset things using team colour on change in SetClanColor in lua. This routine had better have been worth it.
nemo
parents:
4883
diff
changeset

992 
for j:= 0 to 7 do 
f71e30eb1d37
Reset things using team colour on change in SetClanColor in lua. This routine had better have been worth it.
nemo
parents:
4883
diff
changeset

993 
begin 
4891  994 
hh:= team^.Hedgehogs[j]; 
9752
656c511ab0f3
here have some lua love: make parameter count error messages more helpful to lua devs
sheepluva
parents:
9751
diff
changeset

995 
if (hh.Gear <> nil) or (hh.GearHidden <> nil) then 
4889
f71e30eb1d37
Reset things using team colour on change in SetClanColor in lua. This routine had better have been worth it.
nemo
parents:
4883
diff
changeset

996 
begin 
f71e30eb1d37
Reset things using team colour on change in SetClanColor in lua. This routine had better have been worth it.
nemo
parents:
4883
diff
changeset

997 
FreeTexture(hh.NameTagTex); 
10127  998 
hh.NameTagTex:= RenderStringTex(ansistring(hh.Name), clan^.Color, fnt16); 
4889
f71e30eb1d37
Reset things using team colour on change in SetClanColor in lua. This routine had better have been worth it.
nemo
parents:
4883
diff
changeset

999 
RenderHealth(hh); 
f71e30eb1d37
Reset things using team colour on change in SetClanColor in lua. This routine had better have been worth it.
nemo
parents:
4883
diff
changeset

1000 
end; 
f71e30eb1d37
Reset things using team colour on change in SetClanColor in lua. This routine had better have been worth it.
nemo
parents:
4883
diff
changeset

1001 
end; 
f71e30eb1d37
Reset things using team colour on change in SetClanColor in lua. This routine had better have been worth it.
nemo
parents:
4883
diff
changeset

1002 
FreeTexture(team^.NameTagTex); 
10127  1003 
team^.NameTagTex:= RenderStringTex(ansistring(clan^.Teams[i]^.TeamName), clan^.Color, fnt16); 
9656  1004 
end; 
4889
f71e30eb1d37
Reset things using team colour on change in SetClanColor in lua. This routine had better have been worth it.
nemo
parents:
4883
diff
changeset

1005 

9656  1006 
clan^.HealthTex:= makeHealthBarTexture(cTeamHealthWidth + 5, clan^.Teams[0]^.NameTagTex^.h, clan^.Color); 
1007 
end; 

4889
f71e30eb1d37
Reset things using team colour on change in SetClanColor in lua. This routine had better have been worth it.
nemo
parents:
4883
diff
changeset

1008 

4882
b4c84db92d8f
expose set clan color for Cairo. might also be useful for betrayals in campaign mode or somesuch
nemo
parents:
4875
diff
changeset

1009 
lc_setclancolor:= 0 
b4c84db92d8f
expose set clan color for Cairo. might also be useful for betrayals in campaign mode or somesuch
nemo
parents:
4875
diff
changeset

1010 
end; 
b4c84db92d8f
expose set clan color for Cairo. might also be useful for betrayals in campaign mode or somesuch
nemo
parents:
4875
diff
changeset

1011 

4236
fa2680cfff86
added function GetHogTeamName to lua, makes TeamsCount more useful
Henek
parents:
4235
diff
changeset

1012 
function lc_gethogteamname(L : Plua_State) : LongInt; Cdecl; 
fa2680cfff86
added function GetHogTeamName to lua, makes TeamsCount more useful
Henek
parents:
4235
diff
changeset

1013 
var gear : PGear; 
fa2680cfff86
added function GetHogTeamName to lua, makes TeamsCount more useful
Henek
parents:
4235
diff
changeset

1014 
begin 
10287  1015 
if CheckLuaParameterCount(L, 1, 'GetHogTeamName', 'gearUid') then 
4236
fa2680cfff86
added function GetHogTeamName to lua, makes TeamsCount more useful
Henek
parents:
4235
diff
changeset

1016 
begin 
fa2680cfff86
added function GetHogTeamName to lua, makes TeamsCount more useful
Henek
parents:
4235
diff
changeset

1017 
gear:= GearByUID(lua_tointeger(L, 1)); 
8228
8cc5dc7f7ef9
kinda treat graves like hedgehogs for the purpose of looking up hog info
nemo
parents:
8145
diff
changeset

1018 
if (gear <> nil) and ((gear^.Kind = gtHedgehog) or (gear^.Kind = gtGrave)) and (gear^.Hedgehog <> nil) then 
4372  1019 
lua_pushstring(L, str2pchar(gear^.Hedgehog^.Team^.TeamName)) 
4236
fa2680cfff86
added function GetHogTeamName to lua, makes TeamsCount more useful
Henek
parents:
4235
diff
changeset

1020 
else 
fa2680cfff86
added function GetHogTeamName to lua, makes TeamsCount more useful
Henek
parents:
4235
diff
changeset

1021 
lua_pushnil(L); 
10287  1022 
end 
1023 
else 

1024 
lua_pushnil(L); // return value on stack (nil) 

4236
fa2680cfff86
added function GetHogTeamName to lua, makes TeamsCount more useful
Henek
parents:
4235
diff
changeset

1025 
lc_gethogteamname:= 1 
fa2680cfff86
added function GetHogTeamName to lua, makes TeamsCount more useful
Henek
parents:
4235
diff
changeset

1026 
end; 
fa2680cfff86
added function GetHogTeamName to lua, makes TeamsCount more useful
Henek
parents:
4235
diff
changeset

1027 

9788  1028 
function lc_sethogteamname(L : Plua_State) : LongInt; Cdecl; 
1029 
var gear : PGear; 

1030 
begin 

10287  1031 
if CheckLuaParameterCount(L, 2, 'SetHogTeamName', 'gearUid, name') then 
9788  1032 
begin 
1033 
gear := GearByUID(lua_tointeger(L, 1)); 

1034 
if (gear <> nil) and ((gear^.Kind = gtHedgehog) or (gear^.Kind = gtGrave)) and (gear^.Hedgehog <> nil) then 

1035 
begin 

1036 
gear^.Hedgehog^.Team^.TeamName := lua_tostring(L, 2); 

1037 

1038 
FreeTexture(gear^.Hedgehog^.Team^.NameTagTex); 

10127  1039 
gear^.Hedgehog^.Team^.NameTagTex:= RenderStringTex(ansistring(gear^.Hedgehog^.Team^.TeamName), gear^.Hedgehog^.Team^.Clan^.Color, fnt16); 
9788  1040 
end 
1041 
else 

1042 
lua_pushnil(L); 

10287  1043 
end 
1044 
else 

1045 
lua_pushnil(L); // return value on stack (nil) 

9788  1046 
lc_sethogteamname:= 1 
1047 
end; 

1048 

3043
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

1049 
function lc_gethogname(L : Plua_State) : LongInt; Cdecl; 
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

1050 
var gear : PGear; 
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

1051 
begin 
10287  1052 
if CheckLuaParameterCount(L, 1, 'GetHogName', 'gearUid') then 
3043
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

1053 
begin 
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

1054 
gear:= GearByUID(lua_tointeger(L, 1)); 
8228
8cc5dc7f7ef9
kinda treat graves like hedgehogs for the purpose of looking up hog info
nemo
parents:
8145
diff
changeset

1055 
if (gear <> nil) and ((gear^.Kind = gtHedgehog) or (gear^.Kind = gtGrave)) and (gear^.Hedgehog <> nil) then 
3043
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

1056 
begin 
4372  1057 
lua_pushstring(L, str2pchar(gear^.Hedgehog^.Name)) 
3043
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

1058 
end 
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

1059 
else 
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

1060 
lua_pushnil(L); 
10287  1061 
end 
1062 
else 

1063 
lua_pushnil(L); // return value on stack (nil) 

3043
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

1064 
lc_gethogname:= 1 
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

1065 
end; 
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

1066 

5245
ce407084728f
Fully playable version of Space Invasion (fingers crossed). No bugs known.
mikade
parents:
5243
diff
changeset

1067 
function lc_sethogname(L : Plua_State) : LongInt; Cdecl; 
ce407084728f
Fully playable version of Space Invasion (fingers crossed). No bugs known.
mikade
parents:
5243
diff
changeset

1068 
var gear : PGear; 
ce407084728f
Fully playable version of Space Invasion (fingers crossed). No bugs known.
mikade
parents:
5243
diff
changeset

1069 
begin 
10287  1070 
if CheckLuaParameterCount(L, 2, 'SetHogName', 'gearUid, name') then 
5245
ce407084728f
Fully playable version of Space Invasion (fingers crossed). No bugs known.
mikade
parents:
5243
diff
changeset

1071 
begin 
ce407084728f
Fully playable version of Space Invasion (fingers crossed). No bugs known.
mikade
parents:
5243
diff
changeset

1072 
gear:= GearByUID(lua_tointeger(L, 1)); 
ce407084728f
Fully playable version of Space Invasion (fingers crossed). No bugs known.
mikade
parents:
5243
diff
changeset

1073 
if (gear <> nil) and (gear^.Kind = gtHedgehog) and (gear^.Hedgehog <> nil) then 
9748
b0286b0c91ce
sethogname/hat need to wrap entire operation around test of hog/gear
nemo
parents:
9718
diff
changeset

1074 
begin 
b0286b0c91ce
sethogname/hat need to wrap entire operation around test of hog/gear
nemo
parents:
9718
diff
changeset

1075 
gear^.Hedgehog^.Name:= lua_tostring(L, 2); 
5245
ce407084728f
Fully playable version of Space Invasion (fingers crossed). No bugs known.
mikade
parents:
5243
diff
changeset

1076 

9748
b0286b0c91ce
sethogname/hat need to wrap entire operation around test of hog/gear
nemo
parents:
9718
diff
changeset

1077 
FreeTexture(gear^.Hedgehog^.NameTagTex); 
10127  1078 
gear^.Hedgehog^.NameTagTex:= RenderStringTex(ansistring(gear^.Hedgehog^.Name), gear^.Hedgehog^.Team^.Clan^.Color, fnt16) 
9748
b0286b0c91ce
sethogname/hat need to wrap entire operation around test of hog/gear
nemo
parents:
9718
diff
changeset

1079 
end 
5245
ce407084728f
Fully playable version of Space Invasion (fingers crossed). No bugs known.
mikade
parents:
5243
diff
changeset

1080 
end; 
ce407084728f
Fully playable version of Space Invasion (fingers crossed). No bugs known.
mikade
parents:
5243
diff
changeset

1081 
lc_sethogname:= 0; 
ce407084728f
Fully playable version of Space Invasion (fingers crossed). No bugs known.
mikade
parents:
5243
diff
changeset

1082 
end; 
ce407084728f
Fully playable version of Space Invasion (fingers crossed). No bugs known.
mikade
parents:
5243
diff
changeset

1083 

3722  1084 
function lc_gettimer(L : Plua_State) : LongInt; Cdecl; 
1085 
var gear : PGear; 

1086 
begin 

10287  1087 
if CheckLuaParameterCount(L, 1, 'GetTimer', 'gearUid') then 
3722  1088 
begin 
1089 
gear:= GearByUID(lua_tointeger(L, 1)); 

1090 
if gear <> nil then 

4484  1091 
lua_pushinteger(L, gear^.Timer) 
3722  1092 
else 
1093 
lua_pushnil(L); 

10287  1094 
end 
1095 
else 

1096 
lua_pushnil(L); // return value on stack (nil) 

3722  1097 
lc_gettimer:= 1 
1098 
end; 

1099 

1100 
function lc_gethealth(L : Plua_State) : LongInt; Cdecl; 

1101 
var gear : PGear; 

1102 
begin 

10287  1103 
if CheckLuaParameterCount(L, 1, 'GetHealth', 'gearUid') then 
3722  1104 
begin 
1105 
gear:= GearByUID(lua_tointeger(L, 1)); 

1106 
if gear <> nil then 

4484  1107 
lua_pushinteger(L, gear^.Health) 
3722  1108 
else 
1109 
lua_pushnil(L); 

10287  1110 
end 
1111 
else 

1112 
lua_pushnil(L); // return value on stack (nil) 

3722  1113 
lc_gethealth:= 1 
1114 
end; 

1115 

3043
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

1116 
function lc_getx(L : Plua_State) : LongInt; Cdecl; 
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

1117 
var gear : PGear; 
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

1118 
begin 
10287  1119 
if CheckLuaParameterCount(L, 1, 'GetX', 'gearUid') then 
3043
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

1120 
begin 
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

1121 
gear:= GearByUID(lua_tointeger(L, 1)); 
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

1122 
if gear <> nil then 
4484  1123 
lua_pushinteger(L, hwRound(gear^.X)) 
3043
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

1124 
else 
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

1125 
lua_pushnil(L); 
10287  1126 
end 
1127 
else 

1128 
lua_pushnil(L); // return value on stack (nil) 

3043
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

1129 
lc_getx:= 1 
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

1130 
end; 
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

1131 

3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

1132 
function lc_gety(L : Plua_State) : LongInt; Cdecl; 
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

1133 
var gear : PGear; 
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

1134 
begin 
10287  1135 
if CheckLuaParameterCount(L, 1, 'GetY', 'gearUid') then 
3043
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

1136 
begin 
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

1137 
gear:= GearByUID(lua_tointeger(L, 1)); 
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

1138 
if gear <> nil then 
4484  1139 
lua_pushinteger(L, hwRound(gear^.Y)) 
3043
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

1140 
else 
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

1141 
lua_pushnil(L); 
10287  1142 
end 
1143 
else 

1144 
lua_pushnil(L); // return value on stack (nil) 

3043
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

1145 
lc_gety:= 1 
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

1146 
end; 
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

1147 

3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

1148 
function lc_copypv(L : Plua_State) : LongInt; Cdecl; 
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

1149 
var gears, geard : PGear; 
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

1150 
begin 
10287  1151 
if CheckLuaParameterCount(L, 2, 'CopyPV', 'fromGearUid, toGearUid') then 
3043
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

1152 
begin 
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

1153 
gears:= GearByUID(lua_tointeger(L, 1)); 
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

1154 
geard:= GearByUID(lua_tointeger(L, 2)); 
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

1155 
if (gears <> nil) and (geard <> nil) then 
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

1156 
begin 
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

1157 
geard^.X:= gears^.X; 
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

1158 
geard^.Y:= gears^.Y; 
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

1159 
geard^.dX:= gears^.dX; 
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

1160 
geard^.dY:= gears^.dY; 
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

1161 
end 
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

1162 
end; 
10287  1163 
lc_copypv:= 0 
3043
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

1164 
end; 
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

1165 

3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

1166 
function lc_followgear(L : Plua_State) : LongInt; Cdecl; 
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

1167 
var gear : PGear; 
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

1168 
begin 
10287  1169 
if CheckLuaParameterCount(L, 1, 'FollowGear', 'gearUid') then 
3043
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

1170 
begin 
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

1171 
gear:= GearByUID(lua_tointeger(L, 1)); 
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

1172 
if gear <> nil then FollowGear:= gear 
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

1173 
end; 
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

1174 
lc_followgear:= 0 
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

1175 
end; 
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

1176 

3761  1177 
function lc_hogsay(L : Plua_State) : LongInt; Cdecl; 
1178 
var gear : PGear; 

1179 
vgear : PVisualGear; 

4533  1180 
s : LongWord; 
10287  1181 
n : LongInt; 
3761  1182 
begin 
10287  1183 
if CheckAndFetchLuaParameterCount(L, 3, 4, 'HogSay', 'gearUid, text, manner [, vgState]', n) then 
3761  1184 
begin 
1185 
gear:= GearByUID(lua_tointeger(L, 1)); 

1186 
if gear <> nil then 

1187 
begin 

10287  1188 
// state defaults to 0 if state param is given 
1189 
if n = 4 then 

1190 
s:= lua_tointeger(L, 4) 

1191 
else 

1192 
s:= 0; 

4533  1193 
vgear:= AddVisualGear(0, 0, vgtSpeechBubble, s, true); 
3761  1194 
if vgear <> nil then 
1195 
begin 

10210
1a6b9a98147c
hm. I think I forgot to commit this when adding speech bubble change
nemo
parents:
10150
diff
changeset

1196 
if Gear^.Kind = gtHedgehog then 
1a6b9a98147c
hm. I think I forgot to commit this when adding speech bubble change
nemo
parents:
10150
diff
changeset

1197 
begin 
10288
7bf02127262c
fix broken speech bubble display in chat. caused by r1a6b9a98147c one line was forgotten when moving some code
sheepluva
parents:
10287
diff
changeset

1198 
vgear^.Text:= lua_tostring(L, 2); 
10210
1a6b9a98147c
hm. I think I forgot to commit this when adding speech bubble change
nemo
parents:
10150
diff
changeset

1199 
AddChatString(#1+'[' + gear^.Hedgehog^.Name + '] '+vgear^.text); 
1a6b9a98147c
hm. I think I forgot to commit this when adding speech bubble change
nemo
parents:
10150
diff
changeset

1200 
vgear^.Hedgehog:= gear^.Hedgehog 
1a6b9a98147c
hm. I think I forgot to commit this when adding speech bubble change
nemo
parents:
10150
diff
changeset

1201 
end 
1a6b9a98147c
hm. I think I forgot to commit this when adding speech bubble change
nemo
parents:
10150
diff
changeset

1202 
else vgear^.Frame:= gear^.uid; 
1a6b9a98147c
hm. I think I forgot to commit this when adding speech bubble change
nemo
parents:
10150
diff
changeset

1203 

3761  1204 
vgear^.FrameTicks:= lua_tointeger(L, 3); 
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6578
diff
changeset

1205 
if (vgear^.FrameTicks < 1) or (vgear^.FrameTicks > 3) then 
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6578
diff
changeset

1206 
vgear^.FrameTicks:= 1; 
9764
8dc9d268330f
revert r938d1c08d0d1 in favour of putting it in the chat log. I think this addresses main concern about missing text. There've been complaints in past too about conversation in bubbles not being visible in history. If the objection is that r938d1c08d0d1 offers a more Ã¦sthetic solution, I think it should augment this, be flagged, and fix the visual issues first.
nemo
parents:
9752
diff
changeset

1207 
lua_pushinteger(L, vgear^.Uid); 
5529  1208 
end 
3761  1209 
end 
10289  1210 
else 
1211 
lua_pushnil(L) 

4533  1212 
end 
10287  1213 
else 
1214 
lua_pushnil(L); 

5529  1215 
lc_hogsay:= 1 
3761  1216 
end; 
1217 

4851  1218 
function lc_switchhog(L : Plua_State) : LongInt; Cdecl; 
1219 
var gear, prevgear : PGear; 

1220 
begin 

10287  1221 
if CheckLuaParameterCount(L, 1, 'SwitchHog', 'gearUid') then 
4851  1222 
begin 
1223 
gear:= GearByUID(lua_tointeger(L, 1)); 

1224 
// should we allow this when there is no current hedgehog? might do some odd(er) things to turn sequence. 

1225 
if (gear <> nil) and (gear^.Kind = gtHedgehog) and (gear^.Hedgehog <> nil) and (CurrentHedgehog <> nil) then 

1226 
begin 

1227 
prevgear := CurrentHedgehog^.Gear; 

7573  1228 
if prevgear <> nil then 
1229 
begin 

1230 
prevgear^.Active := false; 

1231 
prevgear^.State:= prevgear^.State and (not gstHHDriven); 

1232 
prevgear^.Z := cHHZ; 

1233 
prevgear^.Message:= prevgear^.Message or gmRemoveFromList or gmAddToList; 

1234 
end; 

9752
656c511ab0f3
here have some lua love: make parameter count error messages more helpful to lua devs
sheepluva
parents:
9751
diff
changeset

1235 

7270
93e92e82d5c8
Step 1. Add current hedgehog as top bit of bottom byte.
nemo
parents:
7156
diff
changeset

1236 
SwitchCurrentHedgehog(gear^.Hedgehog); 
93e92e82d5c8
Step 1. Add current hedgehog as top bit of bottom byte.
nemo
parents:
7156
diff
changeset

1237 
CurrentTeam:= CurrentHedgehog^.Team; 
4851  1238 

1239 
gear^.State:= gear^.State or gstHHDriven; 

1240 
gear^.Active := true; 

1241 
gear^.Z := cCurrHHZ; 

7401  1242 
gear^.Message:= gear^.Message or gmRemoveFromList or gmAddToList; 
4851  1243 
end 
1244 
end; 

1245 
lc_switchhog:= 0 

1246 
end; 

1247 

4481  1248 
function lc_addammo(L : Plua_State) : LongInt; Cdecl; 
1249 
var gear : PGear; 

10287  1250 
at, n: LongInt; 
10281  1251 
const 
1252 
call = 'AddAmmo'; 

1253 
params = 'gearUid, ammoType [, ammoCount]'; 

4481  1254 
begin 
10287  1255 
if CheckAndFetchLuaParameterCount(L, 2, 3, call, params, n) then 
4481  1256 
begin 
10281  1257 
at:= LuaToAmmoTypeOrd(L, 2, call, params); 
1258 
if at >= 0 then 

1259 
begin 

1260 
gear:= GearByUID(lua_tointeger(L, 1)); 

1261 
if (gear <> nil) and (gear^.Hedgehog <> nil) then 

10287  1262 
if n = 2 then 
10281  1263 
AddAmmo(gear^.Hedgehog^, TAmmoType(at)) 
1264 
else 

1265 
SetAmmo(gear^.Hedgehog^, TAmmoType(at), lua_tointeger(L, 3)) 

1266 
end; 

10287  1267 
end; 
4481  1268 
lc_addammo:= 0 
1269 
end; 

1270 

5676
a655dfab27d7
Scripting changes. Add override of mapgen, templatefilter. Expose waterline, add "GetAmmoCount". Default to amNothing in uAmmos if entry is not found.
nemo
parents:
5638
diff
changeset

1271 
function lc_getammocount(L : Plua_State) : LongInt; Cdecl; 
a655dfab27d7
Scripting changes. Add override of mapgen, templatefilter. Expose waterline, add "GetAmmoCount". Default to amNothing in uAmmos if entry is not found.
nemo
parents:
5638
diff
changeset

1272 
var gear : PGear; 
a655dfab27d7
Scripting changes. Add override of mapgen, templatefilter. Expose waterline, add "GetAmmoCount". Default to amNothing in uAmmos if entry is not found.
nemo
parents:
5638
diff
changeset

1273 
ammo : PAmmo; 
10281  1274 
at : LongInt; 
1275 
const 

1276 
call = 'GetAmmoCount'; 

1277 
params = 'gearUid, ammoType'; 

5676
a655dfab27d7
Scripting changes. Add override of mapgen, templatefilter. Expose waterline, add "GetAmmoCount". Default to amNothing in uAmmos if entry is not found.
nemo
parents:
5638
diff
changeset

1278 
begin 
10287  1279 
if CheckLuaParameterCount(L, 2, call, params) then 
5676
a655dfab27d7
Scripting changes. Add override of mapgen, templatefilter. Expose waterline, add "GetAmmoCount". Default to amNothing in uAmmos if entry is not found.
nemo
parents:
5638
diff
changeset

1280 
begin 
a655dfab27d7
Scripting changes. Add override of mapgen, templatefilter. Expose waterline, add "GetAmmoCount". Default to amNothing in uAmmos if entry is not found.
nemo
parents:
5638
diff
changeset

1281 
gear:= GearByUID(lua_tointeger(L, 1)); 
9752
656c511ab0f3
here have some lua love: make parameter count error messages more helpful to lua devs
sheepluva
parents:
9751
diff
changeset

1282 
if (gear <> nil) and (gear^.Hedgehog <> nil) then 
5676
a655dfab27d7
Scripting changes. Add override of mapgen, templatefilter. Expose waterline, add "GetAmmoCount". Default to amNothing in uAmmos if entry is not found.
nemo
parents:
5638
diff
changeset

1283 
begin 
10281  1284 
at:= LuaToAmmoTypeOrd(L, 2, call, params); 
1285 
if at >= 0 then 

1286 
begin 

1287 
ammo:= GetAmmoEntry(gear^.Hedgehog^, TAmmoType(at)); 

1288 
if ammo^.AmmoType = amNothing then 

1289 
lua_pushinteger(L, 0) 

1290 
else 

1291 
lua_pushinteger(L, ammo^.Count); 

1292 
end; 

5676
a655dfab27d7
Scripting changes. Add override of mapgen, templatefilter. Expose waterline, add "GetAmmoCount". Default to amNothing in uAmmos if entry is not found.
nemo
parents:
5638
diff
changeset

1293 
end 
10281  1294 
else lua_pushinteger(L, 0); 
10287  1295 
end 
1296 
else 

1297 
lua_pushnil(L); 

6046  1298 
lc_getammocount:= 1 
5676
a655dfab27d7
Scripting changes. Add override of mapgen, templatefilter. Expose waterline, add "GetAmmoCount". Default to amNothing in uAmmos if entry is not found.
nemo
parents:
5638
diff
changeset

1299 
end; 
a655dfab27d7
Scripting changes. Add override of mapgen, templatefilter. Expose waterline, add "GetAmmoCount". Default to amNothing in uAmmos if entry is not found.
nemo
parents:
5638
diff
changeset

1300 

3043
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

1301 
function lc_sethealth(L : Plua_State) : LongInt; Cdecl; 
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

1302 
var gear : PGear; 
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

1303 
begin 
10287  1304 
if CheckLuaParameterCount(L, 2, 'SetHealth', 'gearUid, health') then 
3043
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

1305 
begin 
3acdb4dac6eb
Just tidying up a bit. Comments, moving uMisc to end of frees in case ones above it need logging
nemo
parents:
3038
diff
changeset

1306 
gear:= GearByUID(lua_tointeger(L, 1)); 
3723  1307 
if gear <> nil then 
1308 
begin 

1309 
gear^.Health:= lua_tointeger(L, 2); 

5245
ce407084728f
Fully playable version of Space Invasion (fingers crossed). No bugs known.
mikade
parents:
5243
diff
changeset

1310 

9914  1311 
if (gear^.Kind = gtHedgehog) and (gear^.Hedgehog <> nil) then 
1312 
begin 

1313 
RenderHealth(gear^.Hedgehog^); 

1314 
RecountTeamHealth(gear^.Hedgehog^.Team) 

1315 
end; 

1316 
// Why did this do a "setalltoactive" ? 

10015  1317 
//SetAllToActive; 
9914 