From 81a8c11823cd6d8195d9293f4799395c15056de6 Mon Sep 17 00:00:00 2001 From: MaddoScientisto Date: Fri, 26 Apr 2024 14:52:31 +0200 Subject: [PATCH] Converted cirno to movable object --- cirnofarm.p64 | 43 +++++----- src/cirno.lua | 194 ++++++++---------------------------------- src/game.lua | 11 +-- src/movable_actor.lua | 6 +- src/strawberry.lua | 8 ++ 5 files changed, 76 insertions(+), 186 deletions(-) diff --git a/cirnofarm.p64 b/cirnofarm.p64 index 1681e25..0b9e52e 100644 --- a/cirnofarm.p64 +++ b/cirnofarm.p64 @@ -6,7 +6,7 @@ version 2 :: sfx/ :: gfx/0.gfx b64$LS1bW3BvZCxjcmVhdGVkPSIyMDI0LTA0LTA0IDA3OjE5OjM0Iixtb2RpZmllZD0iMjAyNC0w -NC0yNiAxMjoyMjo0MCIscmV2aXNpb249ODk2XV1sejQAkAgAAPw9AADzFHtbMF09e2JtcD1weHUA +NC0yNiAxMjo1MjoxNiIscmV2aXNpb249OTA4XV1sejQAkAgAAPw9AADzFHtbMF09e2JtcD1weHUA QyAQEATw8CxmbGFncz0wLHBhbl94CADaeT0wLHpvb209MTF9LDIA8QivGyPeA34D3iPeA-4JE24D ThNuI04DfhMA-wOOAz4DTgMuI34jLgOeA-4UAy5eAB3wCfBFTYAtJi1QHWYdBSAdhg0VAB2WHRUN pgQAww0VAA2WHQUQvQXwE1gAHzNYABXwKlBEgBRPHxRQDxSPHwRALxRPHyRADxQfH0QODxkEQA8U @@ -48,34 +48,35 @@ CAYAgRAIABhQGFAYCgAEFgA-OAAINwEfDzIA---------------------------------------- ----w1A9MTF9fQ== :: gfx/.info.pod b64$LS1bW3BvZCxjcmVhdGVkPSIyMDI0LTA0LTA0IDA3OjE5OjMzIixtb2RpZmllZD0iMjAyNC0w -NC0yNiAxMjoyMjo0MCIsc3RvcmVkPSIyMDI0LTA0LTA0IDA3OjE5OjMzIl1dbHo0AAQAAAADAAAA +NC0yNiAxMjo1MjoxNyIsc3RvcmVkPSIyMDI0LTA0LTA0IDA3OjE5OjMzIl1dbHo0AAQAAAADAAAA MG5pbA== :: map/0.map b64$LS1bW3BvZCxjcmVhdGVkPSIyMDI0LTA0LTA0IDA3OjE5OjMzIixtb2RpZmllZD0iMjAyNC0w -NC0yNiAxMjoyMjo0MCIscmV2aXNpb249OTE5XV1sejQAngMAABVCAADwCHt7Ym1wPXVzZXJkYXRh +NC0yNiAxMjo1MjoxNiIscmV2aXNpb249OTM1XV1sejQAqAMAABVCAADwCHt7Ym1wPXVzZXJkYXRh KCJpMTYiLDMyAwAvIjABAP_DLjEwDAAPAQDhPzQ4MAEAXi80MAEACz8xMzABAHMXNAQADwEANQ9Q ACEfM4AAbg8BALoqNDgIAQ8EAwcOIAAPAQA2BIAAHzNgAQAvMzABAE4vNDgYAA8OJAAPAQA5DmgA DwEAch4zgAEPgABgDwEA---------7-1HSIpLGhpZGRlbj1mYWxzZSxuYW1lPSJvYmplY3RzIixw -YW5feD0tMTUyLjgzAQABFwBpeT0tMTAxFwCSdGlsZV9oPTE2CgAQdwoAj3pvb209MX0shBAJDwEA -----mi9hMIAA-2AvMzABAP-------------WD4QQA69mb3JlZ3JvdW5khxDiLzM5BAADDwEAUWMz -MjAwMDkEABpiDAAfM4AAXRowDAAfMwABbRY4jAEPBAABD4AANg8BAAUeY5QACAgAHzOAAFkXMAwA -D4AAPRc1BAAIAQAvNTABAAgPAAFQHzCAANQfNQQADAQBABo1BAAPAAG2D4AA7GoyYjAwMmMEAAQB -AC8yYwQABB9kgAA3PzM1MAEAHi8zYoAAay8wMIAA-B8ygAA7ZzI4MDAyOQQAH2EAAUgvZDBcAA4A -KAAOJAAPAQAvDlgAD1wAAy8zMiQAAQ8BAC8PgAAGDPwID4ABJR8zgAAjAXwIFzkEAA_kAQIPAQAv -AYAAFzUEAA_AABEDLAAvMzABADMO4AIPMAAMAxwDDgEAD5ADJw_IAQMPHAITDwEAAw_AAEcNnAEP -gADdDgEAD4AArgUIAw8EACQPhxAxT3NvbGmCEFYPAQD-hAhKAi85MAEA1i8xYQQAAw8BAFUvMWEE -AAMvMDCQAVMnMWIEABY5BAAvMDgEAAoPAQA3HzgEACIPAQA3HzgEACIPgAE3HzgEACMPAQA1LzE4 -BAAjDwEANS8xOAQAIw8BADUvMTgEACMPAQA1LzE4BAAjDwEANS8xYgQAAAQIBB9iBAAHDwEANh84 -BAAiDwEANx84BAAiDwEANx84BAAiDwEANx44BAAPghACGzgEAA8BADUeOAQAHzOiCwEbOAQADwEA -NR84gAD-bC4xYngED4AAAQQcAA6ABA8BADQfOAQAEg8BAEYvMTgEABMPAQBFLzE4BAATDwEARS8x -OAQAEw8BAEYfOAQAIg8BADcfOAQAIg8JIbZMYmFjawkhTjEyLjOHECgyNhYAD4cQBlBtPTF9fQ== +YW5feD0tMTQwLjgzAQABFwBpeT0tMTA1FwCSdGlsZV9oPTE2CgAQdwoAj3pvb209MX0shBAJDwEA +----mi9hMIAA-2AvMzABAP-------------WD4QQA6Zmb3JlZ3JvdW5khxAvNTKHEAMfMYcQvy8z +OQQAAw8BAFFjMzIwMDA5BAAaYgwAHzOAAF0aMAwAHzMAAW0WOIwBDwQAAQ_AADYPAQAFHmOUAAgI +AB8zgABZFzAMAA_AAD0XNQQACAEALzUwAQAIDwABUB8wgADUHzUEAAwEAQAaNQQADwABtg_AAOxq +MmIwMDJjBAAEAQAvMmMEAAQfZIAANz8zNTABAB4vM2KAAGsvMDCAAPwfMoAAO2cyODAwMjkEAB9h +AAFIL2QwXAAOACgADiQADwEALw5YAA9cAAMvMzIkAAEPAQAvD4AABgz8CA_AASUfM4AAIwF8CBc5 +BAAPpAECDwEALwGAABc1BAAPgAARAywALzMwAQAzDuACDzAADAMcAw4BAA_QAycPiAEDDxwCEw8B +AAMPgABHDZwBD4AA3Q4BAA_AAK4FCAMPBAAkD4cQMU9zb2xpghBWDwEA-4QISgIvOTABANYvMWEE +AAMPAQBVLzFhBAADLzAwkAFTJzFiBAAWOQQALzA4BAAKDwEANx84BAAiDwEANx84BAAiD4ABNx84 +BAAjDwEANS8xOAQAIw8BADUvMTgEACMPAQA1LzE4BAAjDwEANS8xOAQAIw8BADUvMWIEAAAECAQf +YgQABw8BADYfOAQAIg8BADcfOAQAIg8BADcfOAQAIg8BADceOAQAD4IQAhs4BAAPAQA1HjgEAB8z +ogsBGzgEAA8BADUfOIAA-2wuMWJ4BA_AAAEEHAAOgAQPAQA0HzgEABIPAQBGLzE4BAATDwEARS8x +OAQAEw8BAEUvMTgEABMPAQBGHzgEACIPAQA3HzgEACIPCSG2TGJhY2sJIU4xMi4zhxAoMjYWAA_H +EAZQbT0xfX0= :: map/.info.pod b64$LS1bW3BvZCxjcmVhdGVkPSIyMDI0LTA0LTA0IDA3OjE5OjMzIixtb2RpZmllZD0iMjAyNC0w -NC0yNiAxMjoyMjo0MCIsc3RvcmVkPSIyMDI0LTA0LTA0IDA3OjE5OjMzIl1dbHo0AAQAAAADAAAA +NC0yNiAxMjo1MjoxNyIsc3RvcmVkPSIyMDI0LTA0LTA0IDA3OjE5OjMzIl1dbHo0AAQAAAADAAAA MG5pbA== :: sfx/0.sfx b64$LS1bW3BvZCxjcmVhdGVkPSIyMDI0LTA0LTA0IDA3OjE5OjM0Iixtb2RpZmllZD0iMjAyNC0w -NC0yNiAxMjoyMjo0MCIscmV2aXNpb249NzUyXV1sejQARgEAAGYIAADwJ3B4dQADKAAAAwAED0AQ +NC0yNiAxMjo1MjoxNiIscmV2aXNpb249NzYxXV1sejQARgEAAGYIAADwJ3B4dQADKAAAAwAED0AQ Ag4AAaABIAKgDgAPEAAN8MoBAgMEBQYHAA--kAgJCgsPDA8NDw4PDxAA8AANDxEPEg8TDxQPFQ8W DxcTAPEBDxgPGQ8aDxsPHA8dDx4PHxQA8QAgDyEPIg8jDyQPJQ8mDycUAPEAKA8pDyoPKw8sDy0P Lg8vFADxADAPMQ8yDzMPNA81DzYPNxQA-wU4DzkPOg87DzwPPQ8_Dz8AD--w-wEA6-InWgEQBg8g @@ -84,14 +85,14 @@ L-AAMAD--4If-wEAzPEd6A9AAA1ADxcACxoIBggQAgMQBQAGAAgASRcAJggJUP--CfEX-gn8F-4J 8HArAF-_sPBwBAgA-9wf-wEAl1D-----Hw== :: sfx/.info.pod b64$LS1bW3BvZCxjcmVhdGVkPSIyMDI0LTA0LTA0IDA3OjE5OjMzIixtb2RpZmllZD0iMjAyNC0w -NC0yNiAxMjoyMjo0MCIsc3RvcmVkPSIyMDI0LTA0LTA0IDA3OjE5OjMzIl1dbHo0AAQAAAADAAAA +NC0yNiAxMjo1MjoxNyIsc3RvcmVkPSIyMDI0LTA0LTA0IDA3OjE5OjMzIl1dbHo0AAQAAAADAAAA MG5pbA== :: main.lua ---[[pod_format="raw",created="2024-04-04 07:19:33",modified="2024-04-26 12:22:40",revision=1022]] +--[[pod_format="raw",created="2024-04-04 07:19:33",modified="2024-04-26 12:52:16",revision=1036]] include("/cirnofarm/src/game.lua") :: .info.pod b64$LS1bW3BvZCxjcmVhdGVkPSIyMDI0LTA0LTE2IDE5OjQyOjIyIixtb2RpZmllZD0iMjAyNC0w -NC0yNiAxMjoyMjo0MCIscnVudGltZT02LHN0b3JlZD0iMjAyNC0wNC0xNiAxOTo0MDowNSIsd29y +NC0yNiAxMjo1MjoxNyIscnVudGltZT02LHN0b3JlZD0iMjAyNC0wNC0xNiAxOTo0MDowNSIsd29y a3NwYWNlcz17e2xvY2F0aW9uPSJtYWluLmx1YSMxIix3b3Jrc3BhY2VfaW5kZXg9MX0se2xvY2F0 aW9uPSJnZngvMC5nZngiLHdvcmtzcGFjZV9pbmRleD0yfSx7bG9jYXRpb249Im1hcC8wLm1hcCIs d29ya3NwYWNlX2luZGV4PTN9LHtsb2NhdGlvbj0ic2Z4LzAuc2Z4Iix3b3Jrc3BhY2VfaW5kZXg9 diff --git a/src/cirno.lua b/src/cirno.lua index 020aa1e..7312953 100644 --- a/src/cirno.lua +++ b/src/cirno.lua @@ -3,6 +3,7 @@ local weapons_manager = require(make_path("weapons")) local map_manager = require(make_path("map")) +local MovableActor = require(make_path("movable_actor")) last_coll=0 mouse_debug = true @@ -11,6 +12,29 @@ h=300 asdf = {top=0, side=1} LAYERS_COUNT=4 +local Cirno = MovableActor:new() +Cirno.spriteIndex = 65 +Cirno.crosshair_index=82 + +function Cirno:update() + if (btn(0)) self.move_x -= self.speed self.hflip = true + if (btn(1)) self.move_x += self.speed self.hflip = false + if (btn(2)) self.move_y -= self.speed + if (btn(3)) self.move_y += self.speed + + self:move() + + if (btn(4)) then + --create_bullet(self.x,self.y,self.move_x,self.move_Y) + weapons_manager.create_bullet(self.x+8,self.y+8,self.move_x,self.move_y) + end +end + +function Cirno:draw() + spr(self.spriteIndex,self.x,self.y, self.hflip) + + draw_crosshair(self) +end function draw_crosshair(self) local radius = 20 -- Adjust the radius of the crosshair as needed @@ -24,170 +48,24 @@ function draw_crosshair(self) --circfill(crosshair_x, crosshair_y, 2, 7) -- Adjust the size and color as needed end - -function cirno_init() - --bullets={} - - player={} - local cirnoInstance = { - x=128, - y=128, - w=16, - h=16, - speed=0.05, - hflip=false, - spriteIndex=65, - crosshair_index=82, - move_x=0, - move_y=0, - noclip=false, - cm=true, -- Collide with map tiles - cb=true, -- Collide with world bounds - draw=function(self) - - spr(self.spriteIndex,self.x,self.y, self.hflip) - print(string.format("x:%.2f y:%.2f mx:%.2f my:%.2f",self.x,self.y, - self.move_x,self.move_y),0,0,1) - - draw_crosshair(self) - --print(string.format("dir_x:%.4f dir_y:%.4f",self. - end, - update=function(self) - self.move_character(self) - - -- Shoot bullet with Z - if (btn(4)) then - --create_bullet(self.x,self.y,self.move_x,self.move_Y) - weapons_manager.create_bullet(self.x+8,self.y+8,self.move_x,self.move_y) - end - end, - move_character=function(self) - - local hitbox_x = 4 - local hitbox_y = 8 - local hitbox_w = 6 - local hitbox_h = 8 - - --self.move_x = self.x - --self.move_y = self.y - if (btn(0)) self.move_x -= self.speed self.hflip = true - if (btn(1)) self.move_x += self.speed self.hflip = false - if (btn(2)) self.move_y -= self.speed - if (btn(3)) self.move_y += self.speed - - if (check_collision(self.x+self.move_x+hitbox_x, - self.y+hitbox_y, - hitbox_w, - hitbox_h)) then - if (not self.noclip) then self.move_x = 0 end - end - - if (check_collision(self.x+hitbox_x, - self.y+self.move_y+hitbox_y, - hitbox_w, - hitbox_h)) then - if (not self.noclip) then self.move_y = 0 end - end - - self.move_x *= 0.95 - self.move_y *= 0.95 - - self.x += self.move_x - self.y += self.move_y - end - } - - add(player, cirnoInstance) - - return cirnoInstance - - -end - -function cirno_draw() - --cls(0) - - - --drawMap() - - --debug_mouse() - for p in all(player) do - p:draw() - end - - print(string.format("%.4f %dfps",stat(1),stat(7)),2,16,5) - -end - - -function cirno_update() - for p in all(player) do - p:update() - end - -end - -function check_collision(x,y,w,h) - local collide = false - - for i=x,x+w,w do - - if (map_manager.is_tile_solid(i,y) or map_manager.is_tile_solid(i,y+h)) then - collide = collide or true - end - end - - for i=y,y+h do - if (map_manager.is_tile_solid(x,i) or map_manager.is_tile_solid(x+w,i)) then - collide = collide or true - end - end - - return collide -end - -function cmap(o) - local ct=false - local cb=false - - -- if colliding with map tiles - if(o.cm) then - local x1=o.x/tile_width - local y1=o.y/tile_height - local x2=(o.x+tile_width-1)/tile_width - local y2=(o.y+tile_height-1)/tile_height - local a=fget(mget(x1,y1),1) - local b=fget(mget(x1,y2),1) - local c=fget(mget(x2,y2),1) - local d=fget(mget(x2,y1),1) - ct=a or b or c or d - end - -- if colliding world bounds - if(o.cw) then - cb=(o.x<0 or o.x+tile_width>w or - o.y<0 or o.y+tile_height>h) - end - - return ct or cb -end - - M = {} function M.init() - return cirno_init() + --return cirno_init() + local c = Cirno:new(128,128) + return c end -function M.update() - return cirno_update() -end +-- function M.update() +-- return cirno_update() +-- end -function M.draw() - return cirno_draw() -end +-- function M.draw() +-- return cirno_draw() +-- end -function M.get() - return player[1] -end +-- function M.get() +-- return player[1] +-- end return M \ No newline at end of file diff --git a/src/game.lua b/src/game.lua index 5b0e91e..755c4e6 100644 --- a/src/game.lua +++ b/src/game.lua @@ -51,7 +51,7 @@ end --local strawberry = require(make_path("strawberry")) --strawberry.func() -local cirno = require(make_path("cirno")) +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")) @@ -63,11 +63,12 @@ tile_height = 16 function _init() spawn_objects() - cirnoInstance = cirno.init() + cirnoInstance = Cirno.init() + add(actors,cirnoInstance) end function _update() - cirno.update() + --cirno.update() weapons_manager.update() @@ -106,7 +107,7 @@ function _draw() weapons_manager.debug_draw() print(string.format("Actors: %d", count(actors)),0,32+8) - + print(string.format("%.4f %dfps",stat(1),stat(7)),2,16,5) end function spawn_objects() @@ -142,7 +143,7 @@ function render_layer(layer) if (layer.render_objects) then -- Render all objects here - cirno.draw() + --cirno.draw() weapons_manager.draw() diff --git a/src/movable_actor.lua b/src/movable_actor.lua index f12ee69..775163d 100644 --- a/src/movable_actor.lua +++ b/src/movable_actor.lua @@ -10,6 +10,8 @@ MovableActor.noclip=false MovableActor.collide_map=true MovableActor.collide_actors=true MovableActor.collide_bounds=true +MovableActor.friction_x=0.95 +MovableActor.friction_y=0.95 function MovableActor:draw() spr(self.spriteIndex,self.x,self.y, self.hflip) @@ -42,8 +44,8 @@ function MovableActor:move() end end - self.move_x *= 0.95 - self.move_y *= 0.95 + self.move_x *= self.friction_x + self.move_y *= self.friction_y self.x += self.move_x self.y += self.move_y diff --git a/src/strawberry.lua b/src/strawberry.lua index 87297a0..5f1e089 100644 --- a/src/strawberry.lua +++ b/src/strawberry.lua @@ -6,4 +6,12 @@ Strawberry.collide_map=false Strawberry.collide_actors=false Strawberry.collide_bounds=false +function Strawberry:update() + if (btn(5)) then + self.move_x = 1 + end + + self:move() +end + return Strawberry \ No newline at end of file