@@ -712,7 +712,7 @@ function game_update(dt)
712
712
end
713
713
-- UPDATE OBJECTS
714
714
local delete
715
- for i , v in pairs (objects ) do
715
+ for i , v in kpairs (objects , objectskeys ) do
716
716
if i ~= " tile" and i ~= " portalwall" and i ~= " screenboundary" and i ~= " coin" and i ~= " risingwater" and i ~= " clearpipesegment" and i ~= " tracksegment" and i ~= " funnel" and i ~= " clearpipe" then
717
717
delete = nil
718
718
for j , w in pairs (v ) do
@@ -1617,7 +1617,7 @@ function game_draw()
1617
1617
--[[ for j, w in pairs(objects["redseesaw"]) do --has overlapping shadows
1618
1618
w:draw()
1619
1619
end]]
1620
- for j , w in pairs (objects ) do
1620
+ for j , w in kpairs (objects , objectskeys ) do
1621
1621
if j ~= " tile" then
1622
1622
for i , v in pairs (w ) do
1623
1623
if v .drawable and (not v .nodropshadow ) then -- and not v.drawback then
@@ -2040,7 +2040,7 @@ function game_draw()
2040
2040
end
2041
2041
2042
2042
-- OBJECTS
2043
- for j , w in pairs (objects ) do
2043
+ for j , w in kpairs (objects , objectskeys ) do
2044
2044
if j ~= " tile" then
2045
2045
for i , v in pairs (w ) do
2046
2046
if v .drawable and not v .drawback then
@@ -2141,7 +2141,7 @@ function game_draw()
2141
2141
for j , w in pairs (objects [" tilemoving" ]) do
2142
2142
w :draw ()
2143
2143
end
2144
- for j , w in pairs (objects ) do
2144
+ for j , w in kpairs (objects , objectskeys ) do
2145
2145
if j ~= " tile" then
2146
2146
for i , v in pairs (w ) do
2147
2147
if v .drawable and (not v .nodropshadow ) then -- and not v.drawback then
@@ -2305,7 +2305,7 @@ function game_draw()
2305
2305
if HITBOXDEBUG and (editormode or testlevel ) then
2306
2306
local lw = love .graphics .getLineWidth ()
2307
2307
love .graphics .setLineWidth (.5 * scale )
2308
- for i , v in pairs (objects ) do
2308
+ for i , v in kpairs (objects , objectskeys ) do
2309
2309
for j , k in pairs (v ) do
2310
2310
if k .width then
2311
2311
if xscroll >= k .x - width and k .x + k .width > xscroll then
@@ -4118,161 +4118,32 @@ function startlevel(level, reason)
4118
4118
portals = {}
4119
4119
blockedportaltiles = {}
4120
4120
4121
+ objectskeys = {
4122
+ " mariohammer" , " icicle" , " thwomp" , " threeup" , " ceilblocker" , " energyball" , " belt" , " brofireball" , " bomb" ,
4123
+ " musicchanger" , " mole" , " lightbridge" , " splunkin" , " bulletbill" , " cannonballcannon" , " randomizer" ,
4124
+ " collectable" , " plant" , " lakito" , " laser" , " squid" , " star" , " bowser" , " powblock" , " animationoutput" ,
4125
+ " chainchomp" , " energylauncher" , " skewer" , " platformspawner" , " collectablelock" , " cubedispenser" , " door" ,
4126
+ " bigmole" , " hammersuit" , " flipblock" , " notgate" , " frozencoin" , " portalent" , " yoshi" , " coin" , " bigbill" ,
4127
+ " torpedolauncher" , " seesawplatform" , " groundlight" , " koopa" , " flyingfish" , " kingbill" , " spike" , " donut" ,
4128
+ " player" , " mushroom" , " clearpipesegment" , " angrysun" , " turretshot" , " edgewrap" , " spikeball" , " rocketturret" ,
4129
+ " redseesaw" , " koopaling" , " levelball" , " torpedoted" , " upfire" , " magikoopa" , " fireball" , " cheep" , " pixeltile" ,
4130
+ " tilemoving" , " platform" , " drybones" , " hammerbro" , " animationtrigger" , " meteor" , " pushbutton" , " leaf" ,
4131
+ " wrench" , " hammer" , " muncher" , " fire" , " faithplate" , " castlefire" , " ninji" , " doorsprite" , " boo" ,
4132
+ " blocktogglebutton" , " iceball" , " longfire" , " animatedtiletrigger" , " cannonball" , " tiletool" , " text" ,
4133
+ " turretrocket" , " funnel" , " trackcontroller" , " rsflipflop" , " portalwall" , " smallspring" , " core" ,
4134
+ " screenboundary" , " boomboom" , " cappy" , " grinder" , " ice" , " checkpointflag" , " plantfire" , " geldispenser" ,
4135
+ " castlefirefire" , " tracksegment" , " plantcreepersegment" , " rockywrench" , " wallindicator" , " oneup" , " box" ,
4136
+ " snakeblock" , " risingwater" , " plantcreeper" , " orgate" , " pbutton" , " delayer" , " camerastop" , " vine" , " glados" ,
4137
+ " gel" , " yoshiegg" , " spring" , " pokey" , " sidestepper" , " windleaf" , " button" , " turret" , " flower" , " tile" ,
4138
+ " mariotail" , " laserdetector" , " regiontrigger" , " boomerang" , " smbsitem" , " walltimer" , " fuzzy" , " frogsuit" ,
4139
+ " checkpoint" , " lightbridgebody" , " andgate" , " fishbone" , " goomba" , " squarewave" , " parabeetle" , " amp" ,
4140
+ " energycatcher" , " pedestal" , " buttonblock" , " enemy" , " enemytool" , " barrel" , " poisonmush"
4141
+ }
4121
4142
objects = {}
4122
- objects [" player" ] = {}
4123
- objects [" portalwall" ] = {}
4124
- objects [" tile" ] = {}
4125
- objects [" tilemoving" ] = {}
4126
- objects [" enemy" ] = {}
4127
- objects [" goomba" ] = {}
4128
- objects [" koopa" ] = {}
4129
- objects [" mushroom" ] = {}
4130
- objects [" flower" ] = {}
4131
- objects [" oneup" ] = {}
4132
- objects [" star" ] = {}
4133
- objects [" vine" ] = {}
4134
- objects [" box" ] = {}
4135
- objects [" door" ] = {}
4136
- objects [" button" ] = {}
4137
- objects [" groundlight" ] = {}
4138
- objects [" wallindicator" ] = {}
4139
- objects [" walltimer" ] = {}
4140
- objects [" notgate" ] = {}
4141
- objects [" lightbridge" ] = {}
4142
- objects [" lightbridgebody" ] = {}
4143
- objects [" faithplate" ] = {}
4144
- objects [" laser" ] = {}
4145
- objects [" laserdetector" ] = {}
4146
- objects [" gel" ] = {}
4147
- objects [" geldispenser" ] = {}
4148
- objects [" cubedispenser" ] = {}
4149
- objects [" pushbutton" ] = {}
4150
- objects [" bulletbill" ] = {}
4151
- objects [" hammerbro" ] = {}
4152
- objects [" hammer" ] = {}
4153
- objects [" fireball" ] = {}
4154
- objects [" platform" ] = {}
4155
- objects [" platformspawner" ] = {}
4156
- objects [" plant" ] = {}
4157
- objects [" castlefire" ] = {}
4158
- objects [" castlefirefire" ] = {}
4159
- objects [" fire" ] = {}
4160
- objects [" bowser" ] = {}
4161
- objects [" spring" ] = {}
4162
- objects [" cheep" ] = {}
4163
- objects [" flyingfish" ] = {}
4164
- objects [" upfire" ] = {}
4165
- objects [" seesawplatform" ] = {}
4166
- objects [" ceilblocker" ] = {}
4167
- objects [" lakito" ] = {}
4168
- objects [" squid" ] = {}
4169
- objects [" poisonmush" ] = {}
4170
- objects [" bigbill" ] = {}
4171
- objects [" kingbill" ] = {}
4172
- objects [" sidestepper" ] = {}
4173
- objects [" barrel" ] = {}
4174
- objects [" icicle" ] = {}
4175
- objects [" angrysun" ] = {}
4176
- objects [" splunkin" ] = {}
4177
- objects [" threeup" ] = {}
4178
- objects [" brofireball" ] = {}
4179
- objects [" smbsitem" ] = {}
4180
- objects [" thwomp" ] = {}
4181
- objects [" fishbone" ] = {}
4182
- objects [" drybones" ] = {}
4183
- objects [" muncher" ] = {}
4184
- objects [" meteor" ] = {}
4185
- objects [" donut" ] = {}
4186
- objects [" boomerang" ] = {}
4187
- objects [" parabeetle" ] = {}
4188
- objects [" ninji" ] = {}
4189
- objects [" hammersuit" ] = {}
4190
- objects [" mariohammer" ] = {}
4191
- objects [" boo" ] = {}
4192
- objects [" mole" ] = {}
4193
- objects [" bigmole" ] = {}
4194
- objects [" bomb" ] = {}
4195
- objects [" plantfire" ] = {}
4196
- objects [" flipblock" ] = {}
4197
- objects [" torpedoted" ] = {}
4198
- objects [" torpedolauncher" ] = {}
4199
- objects [" frogsuit" ] = {}
4200
- objects [" boomboom" ] = {}
4201
- objects [" levelball" ] = {}
4202
- objects [" leaf" ] = {}
4203
- objects [" mariotail" ] = {}
4204
- objects [" windleaf" ] = {}
4205
- objects [" energylauncher" ] = {}
4206
- objects [" energyball" ] = {}
4207
- objects [" energycatcher" ] = {}
4208
- objects [" turret" ] = {}
4209
- objects [" turretshot" ] = {}
4210
- objects [" blocktogglebutton" ] = {}
4211
- objects [" buttonblock" ] = {}
4212
- objects [" squarewave" ] = {}
4213
- objects [" delayer" ] = {}
4214
- objects [" coin" ] = {}
4215
- objects [" frozencoin" ] = {}
4216
- objects [" amp" ] = {}
4217
- objects [" fuzzy" ] = {}
4218
- objects [" funnel" ] = {}
4219
- objects [" longfire" ] = {}
4220
- objects [" cannonball" ] = {}
4221
- objects [" cannonballcannon" ] = {}
4222
- objects [" rocketturret" ] = {}
4223
- objects [" turretrocket" ] = {}
4224
- objects [" glados" ] = {}
4225
- objects [" core" ] = {}
4226
- objects [" pedestal" ] = {}
4227
- objects [" portalent" ] = {}
4228
- objects [" text" ] = {}
4229
- objects [" regiontrigger" ] = {}
4230
- objects [" tiletool" ] = {}
4231
- objects [" iceball" ] = {}
4232
- objects [" enemytool" ] = {}
4233
- objects [" randomizer" ] = {}
4234
- objects [" yoshiegg" ] = {}
4235
- objects [" yoshi" ] = {}
4236
- objects [" musicchanger" ] = {}
4237
- objects [" pbutton" ] = {}
4238
- objects [" pokey" ] = {}
4239
- objects [" chainchomp" ] = {}
4240
- objects [" rockywrench" ] = {}
4241
- objects [" wrench" ] = {}
4242
- objects [" koopaling" ] = {}
4243
- objects [" checkpoint" ] = {}
4244
- objects [" doorsprite" ] = {}
4245
- objects [" magikoopa" ] = {}
4246
- objects [" skewer" ] = {}
4247
- objects [" belt" ] = {}
4248
- objects [" animationtrigger" ] = {}
4249
- objects [" animationoutput" ] = {}
4250
- objects [" animatedtiletrigger" ] = {}
4251
- objects [" rsflipflop" ] = {}
4252
- objects [" orgate" ] = {}
4253
- objects [" andgate" ] = {}
4254
- objects [" collectable" ] = {}
4255
- objects [" collectablelock" ] = {}
4256
- objects [" powblock" ] = {}
4257
- objects [" smallspring" ] = {}
4258
- objects [" risingwater" ] = {}
4259
- objects [" redseesaw" ] = {}
4260
- objects [" snakeblock" ] = {}
4261
- objects [" spike" ] = {}
4262
- objects [" spikeball" ] = {}
4263
- objects [" camerastop" ] = {}
4264
- objects [" clearpipesegment" ] = {}
4265
- objects [" plantcreeper" ] = {}
4266
- objects [" plantcreepersegment" ] = {}
4267
- objects [" tracksegment" ] = {}
4268
- objects [" trackcontroller" ] = {}
4269
- objects [" checkpointflag" ] = {}
4270
- objects [" ice" ] = {}
4271
- objects [" grinder" ] = {}
4272
-
4273
- objects [" cappy" ] = {}
4274
-
4275
- objects [" screenboundary" ] = {}
4143
+ for i = 1 , # objectskeys do
4144
+ local key = objectskeys [i ]
4145
+ objects [key ] = {}
4146
+ end
4276
4147
objects [" screenboundary" ][" left" ] = screenboundary :new (0 )
4277
4148
4278
4149
splitxscroll = {0 }
@@ -4894,8 +4765,8 @@ function loadmap(filename)
4894
4765
table.sort (checkpoints )
4895
4766
4896
4767
-- Add links
4897
- for i , v in pairs (objects ) do
4898
- for j , w in pairs (v ) do
4768
+ for key , value in kpairs (objects , objectskeys ) do
4769
+ for j , w in pairs (value ) do
4899
4770
if w .link then
4900
4771
w :link ()
4901
4772
end
@@ -6052,7 +5923,7 @@ function insideportal(x, y, width, height) --returns whether an object is in, an
6052
5923
end
6053
5924
6054
5925
function moveoutportal () -- pushes objects out of the portal i in.
6055
- for i , v in pairs (objects ) do
5926
+ for i , v in kpairs (objects , objectskeys ) do
6056
5927
if i ~= " tile" and i ~= " portalwall" then
6057
5928
for j , w in pairs (v ) do
6058
5929
if w .active and w .static == false then
@@ -8774,7 +8645,7 @@ function convertr(r, types, dontgivedefaultvalues) --convert right cick values
8774
8645
end
8775
8646
8776
8647
function lightsoutstencil ()
8777
- for i2 , v2 in pairs (objects ) do
8648
+ for i2 , v2 in kpairs (objects , objectskeys ) do
8778
8649
if i2 ~= " tile" and i2 ~= " buttonblock" and i2 ~= " clearpipesegment" then
8779
8650
for i , v in pairs (objects [i2 ]) do
8780
8651
if (v .active or (i2 == " player" or i2 == " enemy" )) and v .light and onscreen (v .x + v .width / 2 - v .light , v .y + v .height / 2 - v .light , v .light * 2 , v .light * 2 ) then
0 commit comments