diff --git a/cirnofarm.p64 b/cirnofarm.p64 index d3302e8..0055fa8 100644 --- a/cirnofarm.p64 +++ b/cirnofarm.p64 @@ -6,7 +6,7 @@ version 2 :: sfx/ :: gfx/0.gfx b64$LS1bW3BvZCxjcmVhdGVkPSIyMDI0LTA0LTA0IDA3OjE5OjM0Iixtb2RpZmllZD0iMjAyNC0w -NC0yNCAyMDo1Mjo0MiIscmV2aXNpb249NzE5XV1sejQAiwYAAN86AADzFHtbMF09e2JtcD1weHUA +NC0yNSAyMTowNzoxNyIscmV2aXNpb249NzY0XV1sejQAiwYAAN86AADzFHtbMF09e2JtcD1weHUA QyAQEATw8CxmbGFncz0wLHBhbl94CADaeT0wLHpvb209MTF9LDIA8QivGyPeA34D3iPeA-4JE24D ThNuI04DfhMA-wOOAz4DTgMuI34jLgOeA-4UAy5eAB3wCfBFTYAtJi1QHWYdBSAdhg0VAB2WHRUN pgQAww0VAA2WHQUQvQXwE1gAHzNYABXwKlBEgBRPHxRQDxSPHwRALxRPHyRADxQfH0QODxkEQA8U @@ -39,29 +39,31 @@ EAgAGFAYUBgKAAQWAD84AAg3AR8PMgD--------------------------------------------D UD0xMX19 :: gfx/.info.pod b64$LS1bW3BvZCxjcmVhdGVkPSIyMDI0LTA0LTA0IDA3OjE5OjMzIixtb2RpZmllZD0iMjAyNC0w -NC0yNCAyMDo1Mjo0MyIsc3RvcmVkPSIyMDI0LTA0LTA0IDA3OjE5OjMzIl1dbHo0AAQAAAADAAAA +NC0yNSAyMTowNzoxNyIsc3RvcmVkPSIyMDI0LTA0LTA0IDA3OjE5OjMzIl1dbHo0AAQAAAADAAAA MG5pbA== :: map/0.map b64$LS1bW3BvZCxjcmVhdGVkPSIyMDI0LTA0LTA0IDA3OjE5OjMzIixtb2RpZmllZD0iMjAyNC0w -NC0yNCAyMDo1Mjo0MiIscmV2aXNpb249NzM2XV1sejQAawIAALFBAADwCHt7Ym1wPXVzZXJkYXRh +NC0yNSAyMTowNzoxNyIscmV2aXNpb249Nzg5XV1sejQA6AIAAKtBAADwCHt7Ym1wPXVzZXJkYXRh KCJpMTYiLDMyAwAvIjABAP--jD80ODABAF4vNDABAAs-MTMw9AL--1wOBAMOIAAPAQBGEzMEAAgB AC8zMAEATi80OBgADw4kAA8BADkOaAAPAQD----------8vxGSIpLGhpZGRlbj1mYWxzZSxuYW1l -PSJvYmplY3RzIixwYW5feD0tODYKAPIBeT0tMTEwLHRpbGVfaD0xNgoAEHcKAI96b29tPTF9LGsQ --58uMTAMAA8BAP-vL2EwgADtDwEA--------------9LD2sQA6Vmb3JlZ3JvdW5kbhAvOTRuEL4v -MzkEAAMPAQBRYzMyMDAwOQQAGmIMAA-MG1AKgAAaMAwAHzMAAW0WOIwBDwQAAQ_AADYPAQAFHmOU -AAgIAB8zgABZFzAMAA_AAD0XNQQACAEADBAAGjMEAC8zMIAANB402iEPPAAPD4AAaB8zgAA8HzUE -AAwEAQAaNQQAD4AANg8BACIPgAA8HzOAAGwfMIAAoQ8BAP-NHzMcABgvMjABADMPSAABLzIwAQBo -D5AA0A-oAQkfMFwALg8BAK8fMtwAEQ8UAqwfMrwBAg8BAPMPTAENLzMwbhD-s0dzb2xpaRAfOGkQ -MQ8BAP_ELjkwDAAPzyHRH2EEAAMPAQBVLzFhBAADLzAwkAFTJzFiBAAWOQQALzA4BAAKDwEANx84 -BAAiDwEANx84BAAiD4ABNx84BAAjDwEANS8xOAQAIw8BADUvMTgEACMPAQA1LzE4BAAjDwEANS8x -OAQAIw-XIP----------xUxiYWNr1yAPbhARUG09MX19 +PSJvYmplY3RzIixwYW5feD0tNjEKAOJ5PTIzLHRpbGVfaD0xNgoAEHcKAI96b29tPTF9LGkQ-58u +MTAMAA8BAP-vL2EwgADtDwEA--------------9LD2kQA6Vmb3JlZ3JvdW5kbBAjOTRsEE8tMTEw +bhCzLzM5BAADDwEAUWMzMjAwMDkEABpiDAAPyhtQCoAAGjAMAB8zAAFtFjiMAQ8EAAEPgAA2DwEA +BR5jlAAICAAfM4AAWRcwDAAPgAA9FzUEAAgBAAwQABozBAAvMzCAADQeNNghDzwADw_AAGgfM4AA +PB81BAAMBAEAGjUEAA_AADYPAQAiD4AAPB8zgABsHzCAAP--gh8zHAALCR8AHzKAADQOSAAPFAAD +AoMADwABSw8BAAUfMoAAbAwAAS8yMIAAKx8zgAAsDyUACg8AAVAPAQAKD4AAMB8ygAAFDwEAiC8y +MDAALy8zMAEA8w9MAQ0vMzBuEP_zX3NvbGlk1SD-0AHDDg4MAA-NIc8fYQQAAw8BAFUvMWEEAAMv +MDCQAVMnMWIEABY5BAAvMDgEAAoPAQA3HzgEACIPAQA3HzgEACIPgAE3HzgEACMPAQA1LzE4BAAj +DwEANS8xOAQAIw8BADUvMTgEACMPAQA1LzE4BAAjDwEANS8xYgQAAAQIBB9iBAAHDwEANh84BAAi +DwEANx84BAAiDwEANx84BAAiDwEANx44BAAQMgQAFzkEABZhHAAFBAAPAQA1HjgEAB8zjw4BHjgE +AA8BADIfOIAAIg8BADcfOIAA-yMP1SD----BS2JhY2vVIA9sEBBQbT0xfX0= :: map/.info.pod b64$LS1bW3BvZCxjcmVhdGVkPSIyMDI0LTA0LTA0IDA3OjE5OjMzIixtb2RpZmllZD0iMjAyNC0w -NC0yNCAyMDo1Mjo0MyIsc3RvcmVkPSIyMDI0LTA0LTA0IDA3OjE5OjMzIl1dbHo0AAQAAAADAAAA +NC0yNSAyMTowNzoxNyIsc3RvcmVkPSIyMDI0LTA0LTA0IDA3OjE5OjMzIl1dbHo0AAQAAAADAAAA MG5pbA== :: sfx/0.sfx b64$LS1bW3BvZCxjcmVhdGVkPSIyMDI0LTA0LTA0IDA3OjE5OjM0Iixtb2RpZmllZD0iMjAyNC0w -NC0yNCAyMDo1Mjo0MiIscmV2aXNpb249NjEzXV1sejQARgEAAGYIAADwJ3B4dQADKAAAAwAED0AQ +NC0yNSAyMTowNzoxNyIscmV2aXNpb249NjU2XV1sejQARgEAAGYIAADwJ3B4dQADKAAAAwAED0AQ Ag4AAaABIAKgDgAPEAAN8MoBAgMEBQYHAA--kAgJCgsPDA8NDw4PDxAA8AANDxEPEg8TDxQPFQ8W DxcTAPEBDxgPGQ8aDxsPHA8dDx4PHxQA8QAgDyEPIg8jDyQPJQ8mDycUAPEAKA8pDyoPKw8sDy0P Lg8vFADxADAPMQ8yDzMPNA81DzYPNxQA-wU4DzkPOg87DzwPPQ8_Dz8AD--w-wEA6-InWgEQBg8g @@ -70,14 +72,14 @@ L-AAMAD--4If-wEAzPEd6A9AAA1ADxcACxoIBggQAgMQBQAGAAgASRcAJggJUP--CfEX-gn8F-4J 8HArAF-_sPBwBAgA-9wf-wEAl1D-----Hw== :: sfx/.info.pod b64$LS1bW3BvZCxjcmVhdGVkPSIyMDI0LTA0LTA0IDA3OjE5OjMzIixtb2RpZmllZD0iMjAyNC0w -NC0yNCAyMDo1Mjo0MyIsc3RvcmVkPSIyMDI0LTA0LTA0IDA3OjE5OjMzIl1dbHo0AAQAAAADAAAA +NC0yNSAyMTowNzoxNyIsc3RvcmVkPSIyMDI0LTA0LTA0IDA3OjE5OjMzIl1dbHo0AAQAAAADAAAA MG5pbA== :: main.lua ---[[pod_format="raw",created="2024-04-04 07:19:33",modified="2024-04-24 20:52:42",revision=840]] +--[[pod_format="raw",created="2024-04-04 07:19:33",modified="2024-04-25 21:07:17",revision=904]] include("/cirnofarm/src/game.lua") :: .info.pod b64$LS1bW3BvZCxjcmVhdGVkPSIyMDI0LTA0LTE2IDE5OjQyOjIyIixtb2RpZmllZD0iMjAyNC0w -NC0yNCAyMDo1Mjo0MyIscnVudGltZT02LHN0b3JlZD0iMjAyNC0wNC0xNiAxOTo0MDowNSIsd29y +NC0yNSAyMTowNzoxNyIscnVudGltZT02LHN0b3JlZD0iMjAyNC0wNC0xNiAxOTo0MDowNSIsd29y a3NwYWNlcz17e2xvY2F0aW9uPSJtYWluLmx1YSMxIix3b3Jrc3BhY2VfaW5kZXg9MX0se2xvY2F0 aW9uPSJnZngvMC5nZngiLHdvcmtzcGFjZV9pbmRleD0yfSx7bG9jYXRpb249Im1hcC8wLm1hcCIs d29ya3NwYWNlX2luZGV4PTN9LHtsb2NhdGlvbj0ic2Z4LzAuc2Z4Iix3b3Jrc3BhY2VfaW5kZXg9 diff --git a/src/actor2.lua b/src/actor2.lua new file mode 100644 index 0000000..11a7f63 --- /dev/null +++ b/src/actor2.lua @@ -0,0 +1,24 @@ +--M = {} + +actor = {} +actor.__index = actor +function actor:new(x,y) + local o = setmetatable({}, actor) + o.x=x + o.y=y + o.life=100 + o.spriteIndex=0 + return o +end + +function actor:update() + +end + +function actor:draw() + spr(self.spriteIndex,self.x,self.y) +end + +--M.actor = actor + +return actor \ No newline at end of file diff --git a/src/barrel.lua b/src/barrel.lua new file mode 100644 index 0000000..8653789 --- /dev/null +++ b/src/barrel.lua @@ -0,0 +1,33 @@ +--local actor = require("actor2") + +-- barrel = setmetatable({}, {__index = actor}) +-- function barrel:new(actor) +-- local instance = setmetatable({ +-- x = 0, +-- }) +-- end + +-- return barrel + +barrel = {} +barrel.__index = barrel +function barrel:new(x,y) + local o = setmetatable({}, barrel) + o.x=x + o.y=y + o.life=100 + o.spriteIndex=0 + return o +end + +function barrel:update() + +end + +function barrel:draw() + spr(self.spriteIndex,self.x,self.y) +end + +--M.actor = actor + +return barrel \ No newline at end of file diff --git a/src/cirno.lua b/src/cirno.lua index 22a4c70..c0b2be0 100644 --- a/src/cirno.lua +++ b/src/cirno.lua @@ -11,52 +11,6 @@ h=300 asdf = {top=0, side=1} LAYERS_COUNT=4 -LAYERS = { -{index=4, name="background", render=true, render_objects=false, spawn_objects=false}, -{index=3, name="solid", render=true, render_objects=true, spawn_objects=false}, -{index=2, name="foreground", render=true, render_objects=false, spawn_objects=false}, -{index=1, name="objects", render=false, render_objects=false, spawn_objects=true} -} - --- function create_bullet(new_x, new_y, dir_x, dir_y) - --- -- Calculate the length of the direction vector --- local length = sqrt(dir_x^2 + dir_y^2) - --- -- Normalize the direction vector --- local normalized_dir_x = dir_x / length --- local normalized_dir_y = dir_y / length - --- add(bullets, { --- x=new_x, --- y=new_y, --- dx=normalized_dir_x * 2, --- dy=normalized_dir_y * 2, --- spriteIndex=80, --- destroy_sprite_index=66, --- life=100, --- draw=function(self) --- --pset(self.x,self.y,8) --- spr(self.spriteIndex,self.x,self.y) --- end, --- update=function(self) --- self.x+=self.dx --- self.y+=self.dy - --- self.life-=1 --- if self.life<0 then --- del(bullets,self) --- -- TODO: Create particle --- end - --- self.check_collision(self) --- end, --- check_collision=function(self) --- -- If Collide with wall destroy self and create particle - --- end --- }) --- end function draw_crosshair(self) local radius = 20 -- Adjust the radius of the crosshair as needed @@ -146,52 +100,26 @@ function cirno_init() end function cirno_draw() - cls(0) + --cls(0) --camera(x - 240, y - 135) - foreach(LAYERS, render_layer) --drawMap() --debug_mouse() + for p in all(player) do + p:draw() + end print(string.format("%.4f %dfps",stat(1),stat(7)),2,16,5) - weapons_manager.debug_draw() end -function render_layer(layer) - if (layer.render) then - map(fetch"map/0.map"[layer.index].bmp) - end - - if (layer.render_objects) then - -- Render all objects here - for p in all(player) do - p:draw() - end - - weapons_manager.draw() - - -- for b in all(bullets) do - -- b:draw() - -- end - end - -end - -function drawMap() - for i=LAYERS_COUNT,1,-1 do - map(fetch"map/0.map"[i].bmp) - end -end function cirno_update() for p in all(player) do p:update() end - weapons_manager.update() - end function check_collision(x,y,w,h) diff --git a/src/game.lua b/src/game.lua index 8fec0bc..13401b3 100644 --- a/src/game.lua +++ b/src/game.lua @@ -53,6 +53,8 @@ end local cirno = require(make_path("cirno")) local mouse_debug = require(make_path("mouse_debug")) +local map_manager = require(make_path("map")) +local weapons_manager = require(make_path("weapons")) tile_width = 16 tile_height = 16 @@ -63,9 +65,41 @@ end function _update() cirno.update() + + weapons_manager.update() end +LAYERS = { + {index=4, name="background", render=true, render_objects=false, spawn_objects=false}, + {index=3, name="solid", render=true, render_objects=true, spawn_objects=false}, + {index=2, name="foreground", render=true, render_objects=false, spawn_objects=false}, + {index=1, name="objects", render=false, render_objects=false, spawn_objects=true} +} + function _draw() - cirno.draw() + cls(0) + + foreach(LAYERS, render_layer) + mouse_debug.draw(4, tile_width, tile_height) + weapons_manager.debug_draw() +end + +function render_layer(layer) + if (layer.render) then + -- todo move function in map manager + map(fetch("map/".. map_manager.get_current_map() .. ".map")[layer.index].bmp) + end + + if (layer.render_objects) then + -- Render all objects here + cirno.draw() + + weapons_manager.draw() + + -- for b in all(bullets) do + -- b:draw() + -- end + end + end \ No newline at end of file diff --git a/src/map.lua b/src/map.lua index 0233302..962f767 100644 --- a/src/map.lua +++ b/src/map.lua @@ -1,3 +1,5 @@ +--local player = require(make_path("cirno")) + M = {} local tile_width = 16 @@ -28,6 +30,14 @@ function M.is_tile_shoot_solid(x,y) return (tile_flags & 2) ~= 0 end +function M.get_current_map() + return current_map +end + +function M.get_layer_tile(x,y,layer) + return get_layer_tile(x,y,layer) +end + -- function M.can_move(x,y) -- return is_tile(0,x,y) -- end diff --git a/src/mouse_debug.lua b/src/mouse_debug.lua index 0fdfa80..0ccf60c 100644 --- a/src/mouse_debug.lua +++ b/src/mouse_debug.lua @@ -1,4 +1,5 @@ --[[pod_format="raw",created="2024-04-22 19:55:03",modified="2024-04-22 20:14:14",revision=9]] +local map_manager = require(make_path("map")) M = {} function debug_mouse(layers_count, tile_width, tile_height) @@ -28,7 +29,7 @@ function debug_mouse(layers_count, tile_width, tile_height) print(string.format("%d (%d)",tile_y,my),mx+x_offset,my+y_offset+8,9) for i=layers_count,1,-1 do - local sprite = get_layer_tile(tile_x,tile_y,i) + local sprite = map_manager.get_layer_tile(tile_x,tile_y,i) local flag = fget(sprite) print(sprite,mx+x_offset+(i*16),my+y_offset+8*2,10) print(flag,mx+x_offset+(i*16),my+y_offset+8+8*2,10) diff --git a/src/weapons.lua b/src/weapons.lua index 0bb47dd..c30b1e8 100644 --- a/src/weapons.lua +++ b/src/weapons.lua @@ -1,5 +1,6 @@ --[[pod_format="raw",created="2024-04-24 07:17:14",modified="2024-04-24 20:33:05",revision=11]] local map_manager = require(make_path("map")) +--local actor = require("actor2") M = {}