- More cleanup

- Added kupos entity and sprites (body, bow)
- Finally understood my code
This commit is contained in:
lustlion
2021-10-22 18:23:05 +02:00
parent 966aebf046
commit 5b7924fe4e
157 changed files with 394 additions and 1159 deletions

View File

@@ -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,