diff --git a/cirnofarm.p64 b/cirnofarm.p64 index 25a5f23..6557f13 100644 --- a/cirnofarm.p64 +++ b/cirnofarm.p64 @@ -6,7 +6,7 @@ version 2 :: sfx/ :: gfx/0.gfx b64$LS1bW3BvZCxjcmVhdGVkPSIyMDI0LTA0LTA0IDA3OjE5OjM0Iixtb2RpZmllZD0iMjAyNC0w -NC0xNSAxODowNzowMiIscmV2aXNpb249MTU5XV1sejQAVQIAAG8zAADzFHtbMF09e2JtcD1weHUA +NC0xNSAyMToxMjowNyIscmV2aXNpb249MTkzXV1sejQAVQIAAG8zAADzFHtbMF09e2JtcD1weHUA QyAQEATw8CxmbGFncz0wLHBhbl94CADKeT0wLHpvb209N30sMQDxCK8bI94DfgPeI94D-gkTbgNO E24jTgN_EwD-A44DPgNOAy4jfiMuA54D-hQDLl0AHPAJ8EVNgC0mLVAdZh0FIB2GDRUAHZYdFQ2m BADDDRUADZYdBRC9BfATVwAfMVcAFP8VUESAFE8fFFAPFI8fBEAvFE8fJEAPFB8fRB4EQA8UXg0e @@ -22,7 +22,7 @@ BQAFHAVgBQwFIAUMBXAFQAXwBbIAHg8xAP------------------------------------------ b64$LS1bW3BvZCxjcmVhdGVkPSIyMDI0LTA0LTA0IDA3OjE5OjMzIixzdG9yZWQ9IjIwMjQtMDQt MDQgMDc6MTk6MzMiXV1sejQABAAAAAMAAAAwbmls :: main.lua ---[[pod_format="raw",created="2024-04-04 07:19:33",modified="2024-04-15 18:07:02",revision=224]] +--[[pod_format="raw",created="2024-04-04 07:19:33",modified="2024-04-15 21:12:07",revision=257]] --cd("/cirnofarm/src") include("/cirnofarm/src/cirno.lua") --function _init() @@ -53,33 +53,32 @@ include("/cirnofarm/src/cirno.lua") --end :: map/0.map b64$LS1bW3BvZCxjcmVhdGVkPSIyMDI0LTA0LTA0IDA3OjE5OjMzIixtb2RpZmllZD0iMjAyNC0w -NC0xNSAxODowNzowMiIscmV2aXNpb249MTY1XV1sejQAowEAANggAADwCHt7Ym1wPXVzZXJkYXRh -KCJpMTYiLDMyAwAvIjABAP9-LzEwDAADDhAADwEA-w0vMjABAAMvMzBMACEPAQB7HzPcAAYPAQD- -dA8wAh4P0AGcHzL0AEgfMkQAdB8wxAFRD_wAmB8ybAAND-QCyB8zHAAVDyQBOA9IAAEvMjABAGgP -kADQD_gBCR8wXAAuDwEArx8y3AARDxQCrB8yvAECDwEA8w9MAQ0vMzABAP_d8RciKSxoaWRkZW49 -ZmFsc2UsbmFtZT0ic29saWQiLHBhbl94PS05MgoA8gF5PS0xNDQsdGlsZV9oPTE2CgAQdwoAj3pv -b209MX0saRALHzEEAPgfOQQAIB8xBAA4HzkEACAfMQQAOB85BAAgHzEEADgfOAQAHB8xBAA8HzgE -ABwfMQQAPB84BAAcHzEEADwfOAQAHB8xBAA8HzgEABwfMQQAPB84BAAcHzEEADwfOAQAHB8xBAA8 -HzgEABwfMQQAPB84BAAcHzEEADwfOAQAHB8xBAD----------7UPaRADn2JhY2tncm91bm4QHFBt -PTF9fQ== +NC0xNSAyMToxMjowNyIscmV2aXNpb249MjAzXV1sejQAtAEAANggAADwCHt7Ym1wPXVzZXJkYXRh +KCJpMTYiLDMyAwAvIjABAPsfOQQAHg8BADsDVAAfMQwABA8QAAEPAQA6HzkEAB4PAQCHLzIwAQAD +LzMwTAAhDwEAex8z3AAGDwEA-3QPMAIeD9ABnB8y9ABIHzJEAHQfMMQBUQ-sAJgfMmwADQ-0Asgf +MxwAFQ8kATgPSAABLzIwAQBoD5AA0A-oAQkfMFwALg8BAK8fMtwAEQ8UAqwfMrwBAg8BAPMPTAEN +LzMwAQD-nfEXIiksaGlkZGVuPWZhbHNlLG5hbWU9InNvbGlkIixwYW5feD0tOTAKAPIBeT0tMTM5 +LHRpbGVfaD0xNgoAEHcKAI96b29tPTF9LGkQCx8xBAD4DwEAIR8xBAA4BAEAHzkMAAQPEAABHzEE +ADgPAQAhHzEEADgfOAQAHB8xBAA8HzgEABwXOTwADwQAMR84gACcHzEEADwfOAQAHB8xBAA8HzgE +ABwfMQQAPB84BAAcHzEEADwfOAQAHB8xBAA8HzgEABwfMQQAPB84BAAcHzEEAP----------tQ9p +EAOfYmFja2dyb3VubhAcUG09MX19 :: map/.info.pod b64$LS1bW3BvZCxjcmVhdGVkPSIyMDI0LTA0LTA0IDA3OjE5OjMzIixzdG9yZWQ9IjIwMjQtMDQt MDQgMDc6MTk6MzMiXV1sejQABAAAAAMAAAAwbmls :: sfx/0.sfx b64$LS1bW3BvZCxjcmVhdGVkPSIyMDI0LTA0LTA0IDA3OjE5OjM0Iixtb2RpZmllZD0iMjAyNC0w -NC0xNSAxODowNzowMiIscmV2aXNpb249MTM2XV1sejQAbAEAAJEIAADwJ3B4dQADKAAAAwAED0AQ +NC0xNSAyMToxMjowNyIscmV2aXNpb249MTY2XV1sejQARgEAAGYIAADwJ3B4dQADKAAAAwAED0AQ Ag4AAaABIAKgDgAPEAAN8MoBAgMEBQYHAA--kAgJCgsPDA8NDw4PDxAA8AANDxEPEg8TDxQPFQ8W DxcTAPEBDxgPGQ8aDxsPHA8dDx4PHxQA8QAgDyEPIg8jDyQPJQ8mDycUAPEAKA8pDyoPKw8sDy0P Lg8vFADxADAPMQ8yDzMPNA81DzYPNxQA-wU4DzkPOg87DzwPPQ8_Dz8AD--w-wEA6-InWgEQBg8g EAEgASAB8AACEAIMEAEgDyEgATAPQPDDDygP--DGD-gKD-8PgA-3Dw0B8AkBEAYMMAA-Dw-gMQAb -L-AAMAD--4If-wEAzPAR6A9AAA1ADzkfOg88DzYfRg8pDy8PMA8_Dx0PQg8fDyILBWEvKA8tDzMp -BfMCMg8xDz0POw85DzgPNQ8xDyxJBfEBPQ8_--8K8Rb_CvwW-grwcFYAX-6w8HADCAD-3B--AQCX -UP----8f +L-AAMAD--4If-wEAzPEd6A9AAA1ADxcACxoIBggQAgMQBQAGAAgASRcAJggJUP--CfEX-gn8F-4J +8HArAF-_sPBwBAgA-9wf-wEAl1D-----Hw== :: sfx/.info.pod b64$LS1bW3BvZCxjcmVhdGVkPSIyMDI0LTA0LTA0IDA3OjE5OjMzIixzdG9yZWQ9IjIwMjQtMDQt MDQgMDc6MTk6MzMiXV1sejQABAAAAAMAAAAwbmls :: .info.pod -b64$LS1bW3BvZCxydW50aW1lPTUsc3RvcmVkPSIyMDI0LTA0LTE1IDE4OjA3OjAyIix3b3Jrc3Bh +b64$LS1bW3BvZCxydW50aW1lPTUsc3RvcmVkPSIyMDI0LTA0LTE1IDIxOjEyOjA3Iix3b3Jrc3Bh Y2VzPXt7bG9jYXRpb249Im1haW4ubHVhIzIiLHdvcmtzcGFjZV9pbmRleD0xfSx7bG9jYXRpb249 ImdmeC8wLmdmeCIsd29ya3NwYWNlX2luZGV4PTJ9LHtsb2NhdGlvbj0ibWFwLzAubWFwIix3b3Jr c3BhY2VfaW5kZXg9M30se2xvY2F0aW9uPSJzZngvMC5zZngiLHdvcmtzcGFjZV9pbmRleD00fX1d diff --git a/src/cirno.lua b/src/cirno.lua index f1ea21d..f95dd72 100644 --- a/src/cirno.lua +++ b/src/cirno.lua @@ -1,4 +1,4 @@ ---[[pod_format="raw",created="2024-04-14 14:05:11",modified="2024-04-15 17:58:22",revision=94]] +--[[pod_format="raw",created="2024-04-14 14:05:11",modified="2024-04-15 22:01:12",revision=116]] --include("/cirnofarm/src/actor.lua") mouse_debug = true @@ -11,22 +11,18 @@ function _init() add(player, { x=128, y=128, + w=16, + h=16, speed=1.2, hflip=false, spriteIndex=64, move_x=0, move_y=0, - cm=false, -- Collide with map tiles + cm=true, -- Collide with map tiles cb=true, -- Collide with world bounds draw=function(self) spr(self.spriteIndex,self.x,self.y, self.hflip) - - if (mouse_debug == true) then - local col = 8; - if (checkCollision(self.move_x,self.move_y) == true) then col = 7 end - --pset(self.move_x,self.move_y,col) - end - + drawCollision(self) end, update=function(self) self.move_x = self.x @@ -36,9 +32,13 @@ function _init() if (btn(2)) self.move_y -= self.speed if (btn(3)) self.move_y += self.speed + + --if (can_move(self.move_x,self.move_y)) then --if (cmap(self) == false) then self.x = self.move_x self.y = self.move_y + --else + -- sfx(0) --end --if (checkCollision(col_x,col_y) == false) then -- x = col_x @@ -76,8 +76,45 @@ function _update() end end -function checkCollision(x,y) - return fget(mget(x/tile_width,y/tile_height),0) +function drawCollision(o) + local right = o.x+o.w+o.speed + local left = o.x-o.speed + local bottom = o.y+o.h+o.speed + local top = o.y-o.speed + + rect(left,top,right,bottom,2) +end + +function checkCollision(o) + -- check right + -- devo controllare la collisione prima di calcolare il dove, per ogni input direzionale + local right = o.x+o.w+o.speed + local left = o.x-o.speed + local bottom = o.y+o.h+o.speed + local top = o.y-o.speed + + if (not is_tile(1,top,left) + and not is_tile(1,top,right) + ) + + -- check left + -- check top + -- check bottom + return is_tile(0,x,y) + --return fget(mget(x/tile_width,y/tile_height),0) +end + +function is_tile(tile_type,x,y) + local tile = mget(x/tile_width,y/tile_height) + local has_flag = fget(tile,tile_type) + return has_flag +end + +function can_move(x,y) + + + + return not is_tile(1,x,y) end function debug_mouse()