- More cleanup
- Added kupos entity and sprites (body, bow) - Finally understood my code
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
function LoadTiles()
|
||||
function LevelLoadTiles()
|
||||
LevelInfo = {}
|
||||
Tiles = dofile("Mothback/data/tiles.lua")
|
||||
--[[
|
||||
@@ -13,13 +13,17 @@ function LoadTiles()
|
||||
|
||||
]]
|
||||
LevelTiles = json.decode(getInput("Mothback/data/levels/"..currLevel..".json"))
|
||||
LevelInfo.Width = GetLevelWidth()
|
||||
LevelInfo.Height = #LevelTiles * tileProperties.height
|
||||
IndexLevelTiles()
|
||||
LoadTileObjects()
|
||||
LevelInfo.Width = LevelGetWidth()
|
||||
LevelInfo.Height = LevelGetHeight()
|
||||
LevelIndexTiles()
|
||||
TileCreateObjects()
|
||||
end
|
||||
|
||||
function GetLevelWidth()
|
||||
function LevelGetHeight()
|
||||
return #LevelTiles * tileProperties.height
|
||||
end
|
||||
|
||||
function LevelGetWidth()
|
||||
local width = 0
|
||||
for i = 1, #LevelTiles do
|
||||
if width < #LevelTiles[i] then width = #LevelTiles[i] end
|
||||
@@ -27,7 +31,7 @@ function GetLevelWidth()
|
||||
return width * tileProperties.width
|
||||
end
|
||||
|
||||
function IndexLevelTiles()
|
||||
function LevelIndexTiles()
|
||||
TileIndex = {}
|
||||
|
||||
-- number of tiles in tileset!
|
||||
@@ -79,12 +83,12 @@ function IndexLevelTiles()
|
||||
end
|
||||
end
|
||||
|
||||
function TilesDisplayFront()
|
||||
function LevelDisplayForeground()
|
||||
for i = 1, #LevelTiles do
|
||||
for j = 1, #LevelTiles[i] do
|
||||
if LevelTiles[i][j] ~= 0 then
|
||||
|
||||
local depth = getTileDepth(LevelTiles[i][j])
|
||||
local depth = TileGetDepth(LevelTiles[i][j])
|
||||
DrawTile(
|
||||
LevelTiles[i][j],
|
||||
tileProperties.scale * j * tileProperties.width + tileProperties.scale * (levelProperties.offset.x - tileProperties.width) - Camera.pos.x,
|
||||
@@ -97,12 +101,12 @@ function TilesDisplayFront()
|
||||
end
|
||||
end
|
||||
|
||||
function TilesDisplayBack()
|
||||
function LevelDisplayBackground()
|
||||
for i = 1, #LevelTiles do
|
||||
for j = 1, #LevelTiles[i] do
|
||||
if LevelTiles[i][j] ~= 0 then
|
||||
|
||||
local depth = getTileDepth(LevelTiles[i][j])
|
||||
local depth = TileGetDepth(LevelTiles[i][j])
|
||||
DrawTile(
|
||||
LevelTiles[i][j],
|
||||
tileProperties.scale * j * tileProperties.width + tileProperties.scale * (levelProperties.offset.x - tileProperties.width) - Camera.pos.x,
|
||||
@@ -116,7 +120,7 @@ function TilesDisplayBack()
|
||||
end
|
||||
|
||||
|
||||
function getTileType(tile_id)
|
||||
function TileGetType(tile_id)
|
||||
for _, properties in ipairs(Tiles) do
|
||||
if properties.id == tile_id then
|
||||
return properties.type
|
||||
@@ -124,7 +128,7 @@ function getTileType(tile_id)
|
||||
end
|
||||
end
|
||||
|
||||
function getTileDepth(tile_id)
|
||||
function TileGetDepth(tile_id)
|
||||
for _, properties in ipairs(Tiles) do
|
||||
if properties.id == tile_id then
|
||||
return properties.depth
|
||||
@@ -146,7 +150,7 @@ function GridDisplay()
|
||||
end
|
||||
end
|
||||
|
||||
function LoadTileObjects()
|
||||
function TileCreateObjects()
|
||||
objects.collisions = {}
|
||||
objects.platforms = {}
|
||||
objects.ladders = {}
|
||||
@@ -155,13 +159,13 @@ function LoadTileObjects()
|
||||
for j = 1, #LevelTiles[i] do
|
||||
if LevelTiles[i][j] ~= 0 then
|
||||
|
||||
local type = getTileType(LevelTiles[i][j])
|
||||
local type = TileGetType(LevelTiles[i][j])
|
||||
|
||||
local base_x = tileProperties.scale * j * tileProperties.width + tileProperties.scale * (levelProperties.offset.x - tileProperties.height)
|
||||
local base_y = tileProperties.scale * i * tileProperties.height + tileProperties.scale * (levelProperties.offset.y - tileProperties.height)
|
||||
|
||||
if type == "whole" then
|
||||
local col = Collision:new(
|
||||
local col = Collision:New(
|
||||
base_x,
|
||||
base_y,
|
||||
base_x + tileProperties.width * tileProperties.scale,
|
||||
@@ -169,9 +173,9 @@ function LoadTileObjects()
|
||||
)
|
||||
table.insert(objects.collisions,col)
|
||||
|
||||
elseif type == "half" then
|
||||
elseif type == "half_bottom" then
|
||||
|
||||
local col = Collision:new(
|
||||
local col = Collision:New(
|
||||
base_x,
|
||||
base_y + tileProperties.height/2 * tileProperties.scale,
|
||||
base_x + tileProperties.width * tileProperties.scale,
|
||||
@@ -179,8 +183,38 @@ function LoadTileObjects()
|
||||
)
|
||||
table.insert(objects.collisions,col)
|
||||
|
||||
elseif type == "half_top" then
|
||||
|
||||
local col = Collision:New(
|
||||
base_x,
|
||||
base_y ,
|
||||
base_x + tileProperties.width * tileProperties.scale,
|
||||
base_y + tileProperties.height/2 * tileProperties.scale
|
||||
)
|
||||
table.insert(objects.collisions,col)
|
||||
|
||||
elseif type == "half_right" then
|
||||
|
||||
local col = Collision:New(
|
||||
base_x + tileProperties.height/2 * tileProperties.scale,
|
||||
base_y,
|
||||
base_x + tileProperties.width * tileProperties.scale,
|
||||
base_y + tileProperties.height * tileProperties.scale
|
||||
)
|
||||
table.insert(objects.collisions,col)
|
||||
|
||||
elseif type == "half_left" then
|
||||
|
||||
local col = Collision:New(
|
||||
base_x,
|
||||
base_y,
|
||||
base_x + tileProperties.height/2 * tileProperties.scale,
|
||||
base_y + tileProperties.height * tileProperties.scale
|
||||
)
|
||||
table.insert(objects.collisions,col)
|
||||
|
||||
elseif type == "platform" then
|
||||
local plat = Collision:new(
|
||||
local plat = Collision:New(
|
||||
base_x,
|
||||
base_y + tileProperties.scale * 2,
|
||||
base_x + tileProperties.width * tileProperties.scale,
|
||||
@@ -191,7 +225,7 @@ function LoadTileObjects()
|
||||
elseif type == "ramp2_bot_left_whole" then
|
||||
for k = 1, 8 do
|
||||
-- do ramp owo
|
||||
local slope = Collision:new(
|
||||
local slope = Collision:New(
|
||||
base_x,
|
||||
base_y + k * tileProperties.scale - tileProperties.scale,
|
||||
base_x + k * 2 * tileProperties.scale,
|
||||
@@ -201,7 +235,7 @@ function LoadTileObjects()
|
||||
|
||||
end
|
||||
-- fill lower half
|
||||
local col = Collision:new(
|
||||
local col = Collision:New(
|
||||
base_x,
|
||||
base_y + tileProperties.height/2 * tileProperties.scale,
|
||||
base_x + tileProperties.width * tileProperties.scale,
|
||||
@@ -212,7 +246,7 @@ function LoadTileObjects()
|
||||
elseif type == "ramp2_bot_left_half" then
|
||||
for k = 1, 8 do
|
||||
-- do ramp owo
|
||||
local slope = Collision:new(
|
||||
local slope = Collision:New(
|
||||
base_x,
|
||||
base_y + tileProperties.height/2 * tileProperties.scale + k * tileProperties.scale - tileProperties.scale,
|
||||
base_x + k * 2 * tileProperties.scale,
|
||||
@@ -225,7 +259,7 @@ function LoadTileObjects()
|
||||
elseif type == "ramp2_top_left_whole" then
|
||||
for k = 1, 8 do
|
||||
-- do ramp owo
|
||||
local slope = Collision:new(
|
||||
local slope = Collision:New(
|
||||
base_x,
|
||||
base_y + tileProperties.height/2 * tileProperties.scale - tileProperties.scale + k * tileProperties.scale,
|
||||
base_x + tileProperties.width * tileProperties.scale - (k-1) * 2 * tileProperties.scale,
|
||||
@@ -235,7 +269,7 @@ function LoadTileObjects()
|
||||
|
||||
end
|
||||
-- fill higher half
|
||||
local col = Collision:new(
|
||||
local col = Collision:New(
|
||||
base_x,
|
||||
base_y,
|
||||
base_x + tileProperties.width * tileProperties.scale,
|
||||
@@ -246,7 +280,7 @@ function LoadTileObjects()
|
||||
elseif type == "ramp2_top_left_half" then
|
||||
for k = 1, 8 do
|
||||
-- do ramp owo
|
||||
local slope = Collision:new(
|
||||
local slope = Collision:New(
|
||||
base_x,
|
||||
base_y - tileProperties.scale + k * tileProperties.scale,
|
||||
base_x + tileProperties.width * tileProperties.scale - (k-1) * 2 * tileProperties.scale,
|
||||
@@ -259,7 +293,7 @@ function LoadTileObjects()
|
||||
elseif type == "ramp2_bot_right_whole" then
|
||||
for k = 1, 8 do
|
||||
-- do ramp owo
|
||||
local slope = Collision:new(
|
||||
local slope = Collision:New(
|
||||
base_x + (k-8) * -2 * tileProperties.scale,
|
||||
base_y - tileProperties.scale + k * tileProperties.scale,
|
||||
base_x + tileProperties.width * tileProperties.scale,
|
||||
@@ -269,7 +303,7 @@ function LoadTileObjects()
|
||||
|
||||
end
|
||||
-- fill lower half
|
||||
local col = Collision:new(
|
||||
local col = Collision:New(
|
||||
base_x,
|
||||
base_y + tileProperties.height/2 * tileProperties.scale,
|
||||
base_x + tileProperties.width * tileProperties.scale,
|
||||
@@ -280,7 +314,7 @@ function LoadTileObjects()
|
||||
elseif type == "ramp2_bot_right_half" then
|
||||
for k = 1, 8 do
|
||||
-- do ramp owo
|
||||
local slope = Collision:new(
|
||||
local slope = Collision:New(
|
||||
base_x + (k-8) * -2 * tileProperties.scale,
|
||||
base_y + tileProperties.height/2 * tileProperties.scale - tileProperties.scale + k * tileProperties.scale,
|
||||
base_x + tileProperties.width * tileProperties.scale,
|
||||
@@ -293,7 +327,7 @@ function LoadTileObjects()
|
||||
elseif type == "ramp2_top_right_half" then
|
||||
for k = 1, 8 do
|
||||
-- do ramp owo
|
||||
local slope = Collision:new(
|
||||
local slope = Collision:New(
|
||||
base_x + (k-8) * -2 * tileProperties.scale,
|
||||
base_y + tileProperties.height/2 * tileProperties.scale - k * tileProperties.scale,
|
||||
base_x + tileProperties.width * tileProperties.scale,
|
||||
@@ -306,7 +340,7 @@ function LoadTileObjects()
|
||||
elseif type == "ramp2_top_right_whole" then
|
||||
for k = 1, 8 do
|
||||
-- do ramp owo
|
||||
local slope = Collision:new(
|
||||
local slope = Collision:New(
|
||||
base_x + (k-8) * -2 * tileProperties.scale,
|
||||
base_y + tileProperties.height/2 * tileProperties.scale + tileProperties.height/2 * tileProperties.scale - k * tileProperties.scale,
|
||||
base_x + tileProperties.width * tileProperties.scale,
|
||||
@@ -316,7 +350,7 @@ function LoadTileObjects()
|
||||
|
||||
end
|
||||
-- fill higher half
|
||||
local col = Collision:new(
|
||||
local col = Collision:New(
|
||||
base_x,
|
||||
base_y,
|
||||
base_x + tileProperties.width * tileProperties.scale,
|
||||
@@ -328,7 +362,7 @@ function LoadTileObjects()
|
||||
|
||||
for k = 1, 16 do
|
||||
-- do ramp owo
|
||||
local slope = Collision:new(
|
||||
local slope = Collision:New(
|
||||
base_x,
|
||||
base_y + k * tileProperties.scale - tileProperties.scale,
|
||||
base_x + k * tileProperties.scale,
|
||||
@@ -340,7 +374,7 @@ function LoadTileObjects()
|
||||
|
||||
elseif type == "ladder_right" then
|
||||
|
||||
local ladder = Collision:new(
|
||||
local ladder = Collision:New(
|
||||
base_x + (tileProperties.width-4)* tileProperties.scale,
|
||||
base_y,
|
||||
base_x + tileProperties.width * tileProperties.scale,
|
||||
@@ -350,7 +384,7 @@ function LoadTileObjects()
|
||||
|
||||
elseif type == "ladder_platform_right" then
|
||||
|
||||
local ladder = Collision:new(
|
||||
local ladder = Collision:New(
|
||||
base_x + (tileProperties.width-4)* tileProperties.scale,
|
||||
base_y + tileProperties.scale * 2,
|
||||
base_x + tileProperties.width * tileProperties.scale,
|
||||
@@ -358,7 +392,7 @@ function LoadTileObjects()
|
||||
)
|
||||
table.insert(objects.ladders,ladder)
|
||||
|
||||
local plat = Collision:new(
|
||||
local plat = Collision:New(
|
||||
base_x,
|
||||
base_y + tileProperties.scale * 2,
|
||||
base_x + tileProperties.width * tileProperties.scale,
|
||||
@@ -369,7 +403,7 @@ function LoadTileObjects()
|
||||
elseif type == "ladder_left" then
|
||||
|
||||
|
||||
local ladder = Collision:new(
|
||||
local ladder = Collision:New(
|
||||
base_x,
|
||||
base_y,
|
||||
base_x + tileProperties.scale * 4,
|
||||
@@ -380,7 +414,7 @@ function LoadTileObjects()
|
||||
elseif type == "ladder_platform_left" then
|
||||
|
||||
|
||||
local ladder = Collision:new(
|
||||
local ladder = Collision:New(
|
||||
base_x,
|
||||
base_y + tileProperties.scale * 2,
|
||||
base_x + tileProperties.scale * 4,
|
||||
@@ -388,7 +422,7 @@ function LoadTileObjects()
|
||||
)
|
||||
table.insert(objects.ladders,ladder)
|
||||
|
||||
local plat = Collision:new(
|
||||
local plat = Collision:New(
|
||||
base_x,
|
||||
base_y + tileProperties.scale * 2,
|
||||
base_x + tileProperties.width * tileProperties.scale,
|
||||
|
||||
Reference in New Issue
Block a user