diff --git a/cirnofarm.p64 b/cirnofarm.p64 index 6557f13..eedd489 100644 --- a/cirnofarm.p64 +++ b/cirnofarm.p64 @@ -6,23 +6,52 @@ version 2 :: sfx/ :: gfx/0.gfx b64$LS1bW3BvZCxjcmVhdGVkPSIyMDI0LTA0LTA0IDA3OjE5OjM0Iixtb2RpZmllZD0iMjAyNC0w -NC0xNSAyMToxMjowNyIscmV2aXNpb249MTkzXV1sejQAVQIAAG8zAADzFHtbMF09e2JtcD1weHUA +NC0xNiAyMjowODowMyIscmV2aXNpb249MjY2XV1sejQAgwIAAKwzAADzFHtbMF09e2JtcD1weHUA QyAQEATw8CxmbGFncz0wLHBhbl94CADKeT0wLHpvb209N30sMQDxCK8bI94DfgPeI94D-gkTbgNO E24jTgN_EwD-A44DPgNOAy4jfiMuA54D-hQDLl0AHPAJ8EVNgC0mLVAdZh0FIB2GDRUAHZYdFQ2m BADDDRUADZYdBRC9BfATVwAfMVcAFP8VUESAFE8fFFAPFI8fBEAvFE8fJEAPFB8fRB4EQA8UXg0e -BEANBgAPn1AUPg0UgETwFX4ADg9jAQUPMQCn388TLxEPE18RDxM-EQ8MABRzfxM-ET8THxAAAAQA -H08MABB1LxEvEz8RjzgAP28RDwwAFC-fE9UAHNn0DA8fNB50HjQeJB4kBgDxAEQOJB7UHoQeJA6U -HoQONAQABh4AEIQEAD8O9AkIAiYPMQD-CvEUQF8UcB4PFT8fLkAeDxUOPx8PFQ4NDiAeDQ4NPx8O -DQ4NDhAGAGE8DQ4NHgALADENDhwHABE_BgAhHA4HABEeBgAnDhQaACUUDhoA4CwNDixeTA4NTA0O -AA48FgBSPA4QDixaAEEOIA4MCgBhDQ4cDkAuCgBPHnBeQPsAHg8xAP----------8v9DUDWgBT8c -FXAFbgVQBR48HgVgFUwFgAUMBwwHHAVQJUwFUAU8BwwHFVAFTAcsBVAVTBVwBUwFcAUsBSwFYAUc -BQAFHAVgBQwFIAUMBXAFQAXwBbIAHg8xAP------------------------------------------ ------4tQbT03fX0= +BEANBgAPn1AUPg0UgETwFX4AHPAI8BWcQAx-EBwwDH4MDgwgnB4MIAx-HAwHAB99BgAGrw4MMAx9 +HECc8BRuAA4P0QEFDzEAdt-PEy8RDxNfEQ8TPxEPDAAUc38TPxE-Ex8QAAAEAB9PDAAQdS8RLxM- +EY84AD9vEQ8MABQv3xPVABzZ9AwPHzQedB40HiQeJAYA8QBEDiQe1B6EHiQOlB6EDjQEAAYeABCE +BAA-DvQJ1wEmDzEA-wrxFEBfFHAeDxU-Hy5AHg8VDj8fDxUODQ4gHg0ODT8fDg0ODQ4QBgBhPA0O +DR4ACwAxDQ4cBwARPgYAIRwOBwARHgYAJw4UGgAlFA4aAOAsDQ4sXkwODUwNDgAOPBYAUjwOEA4s +WgBBDiAODAoAYQ0OHA5ALgoATx5wXkD7AB4PMQD-----------L-Q1A1oAU-HBVwBW4FUAUePB4F +YBVMBYAFDAcMBxwFUCVMBVAFPAcMBxVQBUwHLAVQFUwVcAVMBXAFLAUsBWAFHAUABRwFYAUMBSAF +DAVwBUAF8AWyAB4PMQD-----------------------------------------------_LUG09N319 :: gfx/.info.pod -b64$LS1bW3BvZCxjcmVhdGVkPSIyMDI0LTA0LTA0IDA3OjE5OjMzIixzdG9yZWQ9IjIwMjQtMDQt -MDQgMDc6MTk6MzMiXV1sejQABAAAAAMAAAAwbmls +b64$LS1bW3BvZCxjcmVhdGVkPSIyMDI0LTA0LTA0IDA3OjE5OjMzIixtb2RpZmllZD0iMjAyNC0w +NC0xNiAyMjowODowMyIsc3RvcmVkPSIyMDI0LTA0LTA0IDA3OjE5OjMzIl1dbHo0AAQAAAADAAAA +MG5pbA== +:: map/0.map +b64$LS1bW3BvZCxjcmVhdGVkPSIyMDI0LTA0LTA0IDA3OjE5OjMzIixtb2RpZmllZD0iMjAyNC0w +NC0xNiAyMjowODowMyIscmV2aXNpb249Mjc5XV1sejQAzgEAANggAADwCHt7Ym1wPXVzZXJkYXRh +KCJpMTYiLDMyAwAvIjABAPsfOQQAHg8BADsDVAAfMQwABA8QAAEPAQA6HzkEAB4PAQCHLzIwAQAD +LzMwTAAhDwEAYx8zsAAEDhQADhgADwEAIRM0BAAPAQAmD4AAMg8BAK8PMAI1LzMw4ACXHzJcAEQP +BAEhD4wAMg-EAZQP7ABVHjJsAA8wAaIPlAA9DBwADyQBNQ9IAAEvMjABAGgPkADQD_gBCR8wXAAu +DwEArx8y3AARDxQCrB8yvAECDwEA8w9MAQ0vMzABAP_d8RciKSxoaWRkZW49ZmFsc2UsbmFtZT0i +c29saWQiLHBhbl94PS05MAoA8gF5PS0xMzksdGlsZV9oPTE2CgAQdwoAj3pvb209MX0saRALHzEE +APgPAQAhHzEEADgEAQAfOQwABA8QAAEfMQQAOA8BACEfMQQAOB84BAAcHzEEADwfOAQAHBc5PAAP +BAAxHziAAJwfMQQAPB84BAAcHzEEADwfOAQAHB8xBAA8HzgEABwfMQQAPB84BAAcHzEEADwfOAQA +HB8xBAA8HzgEABwfMQQA----------_1D2kQA59iYWNrZ3JvdW5uEBxQbT0xfX0= +:: map/.info.pod +b64$LS1bW3BvZCxjcmVhdGVkPSIyMDI0LTA0LTA0IDA3OjE5OjMzIixtb2RpZmllZD0iMjAyNC0w +NC0xNiAyMjowODowMyIsc3RvcmVkPSIyMDI0LTA0LTA0IDA3OjE5OjMzIl1dbHo0AAQAAAADAAAA +MG5pbA== +:: sfx/0.sfx +b64$LS1bW3BvZCxjcmVhdGVkPSIyMDI0LTA0LTA0IDA3OjE5OjM0Iixtb2RpZmllZD0iMjAyNC0w +NC0xNiAyMjowODowMyIscmV2aXNpb249MjM2XV1sejQARgEAAGYIAADwJ3B4dQADKAAAAwAED0AQ +Ag4AAaABIAKgDgAPEAAN8MoBAgMEBQYHAA--kAgJCgsPDA8NDw4PDxAA8AANDxEPEg8TDxQPFQ8W +DxcTAPEBDxgPGQ8aDxsPHA8dDx4PHxQA8QAgDyEPIg8jDyQPJQ8mDycUAPEAKA8pDyoPKw8sDy0P +Lg8vFADxADAPMQ8yDzMPNA81DzYPNxQA-wU4DzkPOg87DzwPPQ8_Dz8AD--w-wEA6-InWgEQBg8g +EAEgASAB8AACEAIMEAEgDyEgATAPQPDDDygP--DGD-gKD-8PgA-3Dw0B8AkBEAYMMAA-Dw-gMQAb +L-AAMAD--4If-wEAzPEd6A9AAA1ADxcACxoIBggQAgMQBQAGAAgASRcAJggJUP--CfEX-gn8F-4J +8HArAF-_sPBwBAgA-9wf-wEAl1D-----Hw== +:: sfx/.info.pod +b64$LS1bW3BvZCxjcmVhdGVkPSIyMDI0LTA0LTA0IDA3OjE5OjMzIixtb2RpZmllZD0iMjAyNC0w +NC0xNiAyMjowODowMyIsc3RvcmVkPSIyMDI0LTA0LTA0IDA3OjE5OjMzIl1dbHo0AAQAAAADAAAA +MG5pbA== :: main.lua ---[[pod_format="raw",created="2024-04-04 07:19:33",modified="2024-04-15 21:12:07",revision=257]] +--[[pod_format="raw",created="2024-04-04 07:19:33",modified="2024-04-16 22:08:03",revision=334]] --cd("/cirnofarm/src") include("/cirnofarm/src/cirno.lua") --function _init() @@ -51,36 +80,11 @@ include("/cirnofarm/src/cirno.lua") -- if (btn(2)) y -= 2 -- if (btn(3)) y += 2 --end -:: map/0.map -b64$LS1bW3BvZCxjcmVhdGVkPSIyMDI0LTA0LTA0IDA3OjE5OjMzIixtb2RpZmllZD0iMjAyNC0w -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 -NC0xNSAyMToxMjowNyIscmV2aXNpb249MTY2XV1sejQARgEAAGYIAADwJ3B4dQADKAAAAwAED0AQ -Ag4AAaABIAKgDgAPEAAN8MoBAgMEBQYHAA--kAgJCgsPDA8NDw4PDxAA8AANDxEPEg8TDxQPFQ8W -DxcTAPEBDxgPGQ8aDxsPHA8dDx4PHxQA8QAgDyEPIg8jDyQPJQ8mDycUAPEAKA8pDyoPKw8sDy0P -Lg8vFADxADAPMQ8yDzMPNA81DzYPNxQA-wU4DzkPOg87DzwPPQ8_Dz8AD--w-wEA6-InWgEQBg8g -EAEgASAB8AACEAIMEAEgDyEgATAPQPDDDygP--DGD-gKD-8PgA-3Dw0B8AkBEAYMMAA-Dw-gMQAb -L-AAMAD--4If-wEAzPEd6A9AAA1ADxcACxoIBggQAgMQBQAGAAgASRcAJggJUP--CfEX-gn8F-4J -8HArAF-_sPBwBAgA-9wf-wEAl1D-----Hw== -:: sfx/.info.pod -b64$LS1bW3BvZCxjcmVhdGVkPSIyMDI0LTA0LTA0IDA3OjE5OjMzIixzdG9yZWQ9IjIwMjQtMDQt -MDQgMDc6MTk6MzMiXV1sejQABAAAAAMAAAAwbmls :: .info.pod -b64$LS1bW3BvZCxydW50aW1lPTUsc3RvcmVkPSIyMDI0LTA0LTE1IDIxOjEyOjA3Iix3b3Jrc3Bh -Y2VzPXt7bG9jYXRpb249Im1haW4ubHVhIzIiLHdvcmtzcGFjZV9pbmRleD0xfSx7bG9jYXRpb249 -ImdmeC8wLmdmeCIsd29ya3NwYWNlX2luZGV4PTJ9LHtsb2NhdGlvbj0ibWFwLzAubWFwIix3b3Jr -c3BhY2VfaW5kZXg9M30se2xvY2F0aW9uPSJzZngvMC5zZngiLHdvcmtzcGFjZV9pbmRleD00fX1d -XWx6NAAEAAAAAwAAADBuaWw= +b64$LS1bW3BvZCxjcmVhdGVkPSIyMDI0LTA0LTE2IDE5OjQyOjIyIixtb2RpZmllZD0iMjAyNC0w +NC0xNiAyMjowODowMyIscnVudGltZT02LHN0b3JlZD0iMjAyNC0wNC0xNiAxOTo0MDowNSIsd29y +a3NwYWNlcz17e2xvY2F0aW9uPSJtYWluLmx1YSMyIix3b3Jrc3BhY2VfaW5kZXg9MX0se2xvY2F0 +aW9uPSJnZngvMC5nZngiLHdvcmtzcGFjZV9pbmRleD0yfSx7bG9jYXRpb249Im1hcC8wLm1hcCIs +d29ya3NwYWNlX2luZGV4PTN9LHtsb2NhdGlvbj0ic2Z4LzAuc2Z4Iix3b3Jrc3BhY2VfaW5kZXg9 +NH19XV1sejQABAAAAAMAAAAwbmls :: [eoc] diff --git a/src/cirno.lua b/src/cirno.lua index f95dd72..ee73e9b 100644 --- a/src/cirno.lua +++ b/src/cirno.lua @@ -1,9 +1,11 @@ ---[[pod_format="raw",created="2024-04-14 14:05:11",modified="2024-04-15 22:01:12",revision=116]] +--[[pod_format="raw",created="2024-04-14 14:05:11",modified="2024-04-16 22:07:51",revision=191]] --include("/cirnofarm/src/actor.lua") - +last_coll=0 mouse_debug = true w=480 h=300 +tile_width = 16 +tile_height = 16 asdf = {top=0, side=1} function _init() @@ -13,33 +15,47 @@ function _init() y=128, w=16, h=16, - speed=1.2, + speed=0.05, hflip=false, spriteIndex=64, 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) - drawCollision(self) + drawCollision(self.x+self.move_x,self.y,self.w-1,self.h-1) + drawCollision(self.x,self.y+self.move_y,self.w-1,self.h-1) + print(string.format("x:%.2f y:%.2f mx:%.2f my:%.2f coll:%d",self.x,self.y, + self.move_x,self.move_y,last_coll),0,0,1) end, update=function(self) - self.move_x = self.x - self.move_y = self.y + --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 (checkCollision(self.x+self.move_x,self.y,self.w-1,self.h-1)) then --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 + + if (not self.noclip) then self.move_x = 0 end --else - -- sfx(0) - --end + -- sfx(0) + end + + if (not self.noclip and checkCollision(self.x,self.y+self.move_y,self.w-1,self.h-1)) 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 --if (checkCollision(col_x,col_y) == false) then -- x = col_x -- y = col_y @@ -47,8 +63,7 @@ function _init() end }) - tile_width = 16 - tile_height = 16 + end function _draw() @@ -76,45 +91,62 @@ function _update() end end -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 +function drawCollision(x,y,w,h) + for i=x,x+w,w do + + pset(i,y,8) + --pset(i,y+h,18) + + end - rect(left,top,right,bottom,2) + --[[for i=y,y+h,w do + pset(x,i,8) + pset(x+w,i,8) + end]] + + --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 +function checkCollision(x,y,w,h) + local collide = false + last_coll = 0 + for i=x,x+w,w do - if (not is_tile(1,top,left) - and not is_tile(1,top,right) - ) + local sprite = mget(i,y) + local flag = fget(sprite) + if (flag == 1) then + collide = true + last_coll = 1 + end - -- check left - -- check top - -- check bottom - return is_tile(0,x,y) - --return fget(mget(x/tile_width,y/tile_height),0) + --if (is_tile_solid(i,y) --[[or is_tile_solid(i,y+h)]]) then + -- collide = true + -- last_coll = 1 + --end + end + + --for i=y,y+h do + -- if (is_tile_solid(x,i) or is_tile_solid(x+w,i)) then + -- collide = true + -- end + --end + + return collide end function is_tile(tile_type,x,y) local tile = mget(x/tile_width,y/tile_height) local has_flag = fget(tile,tile_type) + --last_coll = fget(tile) return has_flag end +function is_tile_solid(x,y) + return is_tile(1,x,y) +end + function can_move(x,y) - - - - return not is_tile(1,x,y) + return is_tile(0,x,y) end function debug_mouse() @@ -123,8 +155,8 @@ function debug_mouse() local y_offset = 5 -- tile size - local tw=16 - local th=16 + local tw=tile_width + local th=tile_height -- window width and height local w=480