From 6a7e938a39cfb1ed3fcffc30a1cdfbb40194ab98 Mon Sep 17 00:00:00 2001 From: MaddoScientisto Date: Fri, 26 Apr 2024 11:22:51 +0200 Subject: [PATCH] Proper actors implementation --- cirnofarm.p64 | 86 ++++++++++++++++++++++++++++---------------------- src/actor2.lua | 27 +++++++++------- src/barrel.lua | 25 ++++++--------- src/cirno.lua | 3 +- src/game.lua | 15 ++++++++- 5 files changed, 88 insertions(+), 68 deletions(-) diff --git a/cirnofarm.p64 b/cirnofarm.p64 index 0055fa8..bf67a29 100644 --- a/cirnofarm.p64 +++ b/cirnofarm.p64 @@ -6,7 +6,7 @@ version 2 :: sfx/ :: gfx/0.gfx b64$LS1bW3BvZCxjcmVhdGVkPSIyMDI0LTA0LTA0IDA3OjE5OjM0Iixtb2RpZmllZD0iMjAyNC0w -NC0yNSAyMTowNzoxNyIscmV2aXNpb249NzY0XV1sejQAiwYAAN86AADzFHtbMF09e2JtcD1weHUA +NC0yNiAwNzo1OTowMiIscmV2aXNpb249ODA5XV1sejQALQgAAG49AADzFHtbMF09e2JtcD1weHUA QyAQEATw8CxmbGFncz0wLHBhbl94CADaeT0wLHpvb209MTF9LDIA8QivGyPeA34D3iPeA-4JE24D ThNuI04DfhMA-wOOAz4DTgMuI34jLgOeA-4UAy5eAB3wCfBFTYAtJi1QHWYdBSAdhg0VAB2WHRUN pgQAww0VAA2WHQUQvQXwE1gAHzNYABXwKlBEgBRPHxRQDxSPHwRALxRPHyRADxQfH0QODxkEQA8U @@ -19,51 +19,61 @@ BAA-DvQJZgId-0H-FgA2DoYOFgUWDgUmBTYONgUOZgUGDkYOFgVWDgb_AFYORg42BTYOJgUGDoYO BgUmDgYFZg5GDib_AIYOlgU2DhYFtg52BSYFFg42BZYOVoAAHvIAFQMMDxAMDhwODA4MbxUOCgBR HQwdDC0LALEdDgwdDA4tDhwOLQoAUgwtHC0MCgA0Dl0OCgA-DD0MDAACBSIABTYABUoAAl8AMy0M TXMAI20MCQA-DP0DxQAd0B8V1B6UDx8kHgQNZB0GAD8UHSQIAAQwdB40BABQDYQelA0SACZ0DSAA -FzQGAH4EDRQNhB7UigAPawMVDzIAefEUQF8UcB4PFT8fLkAeDxUOPx8PFQ4NDiAeDQ4NPx8ODQ4N -DhAGAGE8DQ4NHgALADENDhwHABE_BgAhHA4HABEeBgAnDhQaACUUDhoA4CwNDixeTA4NTA0OAA48 -FgBSPA4QDixaAEEOIA4MCgBhDQ4cDkAuCgBPHnBeQMsAJAA-AFEuQA4PH0kAYw4NLiAOLAsAMRwO -EMkAYA4NPAAOTAgAUUwuTC5MogAgFEy2ADccFBzOACwcHucANQ4AHhkACBoBEiDUAG4NHkAuPC68 -AA-rAUHQE51QDX8QDVANDl8YDgcAQgw-HgwJAD8LHAsKABISOwgAEFwGAE5_DVCdnQcPuAAXDzIA -q5AGBwYHHxYGBx4JALEGBw4WHhYeZgcGHgMAAQIAdRYelh4WBwYCAHIeBgemHhYODgADKABSVh4W -HlYcAAZJABKmHAAfBkgAAAIoADxmHhZJAF8WDiYehsQAHfYA9QHfGBXeFd8VFd4V3hXdBgB-9QLd -Fd31AVAAHU-2AA0GAgDKL-YBYwEfRw8WDQ4CADgVDQ4CACb1AdwIVy8RfxM-vggXP6MIDwwACXUv -ES8TPxGPOAA-bxEPDAAUL98TWwMfDzIA--9FX-8UEtAeAgAGD2UGHU--FBDwNQAhL9AeAgAHDk8A -DzYBFQ8yAN0iHxQyAQ-PATg-EsAuAgACL-4RTAAdHtCeAA-oAf9DL-4QSQEeT9D-FBDPATku-hKD -AA82ARUPMgDdYTA8DxwsYDMPkQcMDhwwHA4MR4ESkA4MZwwOMB4XDgIAMgxADgkA8CEgHiBXAA4w -HiA3MB5ALAgcEB5ABywIHAdAHgAHXAcAHgAeEHwQHiAHDAcMB0xwFwAIAJ8McBcQF5AYEBjsDB7y -BDAsPxxwHG5gDA4RDhEHDmAMBw4DAGBgDAccBxwIAP8xDxdHDQ5QHCcNJx6ADAcOoAcMBwgHDgdw -BwwOCA4IHgdQBxxuBzAXLF4XIBd8ABdABwAXAAcQB5AHAAewHAAcUJQBHw8yAP8Y-yeADxvQHoBP -GA49QD0CbTC9MB0CbQIdIF0CXSDNMB0CTQItME0IXTA9Am1AXQItYH1wbZBNsC2TAf9LDzIAHP8A -BAQEAB8cAA4XHhcOAB4APAAa-wYICASABzAHIAcQB-AEBxAHIAcwB4BCAB2QCAA4AAgACDAIBgCB -EAgAGFAYUBgKAAQWAD84AAg3AR8PMgD--------------------------------------------D -UD0xMX19 +FzQGAH8EDRQNhB7UigAd4NQfFLQPHwQfFAQfH3QeCAABHgIsBB0IAJAUDiQeVB1UHlQSAIUOZB0E +HoQOBAYACiwAElQGAF4OZB3UHdACD-wDb-EUQF8UcB4PFT8fLkAeDxUOPx8PFQ4NDiAeDQ4NPx8O +DQ4NDhAGAGE8DQ4NHgALADENDhwHABE_BgAhHA4HABEeBgAnDhQaACUUDhoA4CwNDixeTA4NTA0O +AA48FgBSPA4QDixaAEEOIA4MCgBhDQ4cDkAuCgBPHnBeQMsAJAA-AFEuQA4PH0kAYw4NLiAOLAsA +MRwOEMkAYA4NPAAOTAgAUUwuTC5MogAgFEy2ADccFBzOACwcHucANQ4AHhkACBoBEiDUAG4NHkAu +PC68AA-rAUHQE51QDX8QDVANDl8YDgcAQgw-HgwJAD8LHAsKABISOwgAEFwGAE5_DVCd-AcPuAAX +DzIAq5AGBwYHHxYGBx4JALEGBw4WHhYeZgcGHgMAAQIAdRYelh4WBwYCAHIeBgemHhYODgADKABS +Vh4WHlYcAAZJABKmHAAfBkgAAAIoADxmHhZJAF8WDiYehsQAHfYA9QHfGBXeFd8VFd4V3hXdBgB- +9QLdFd31AVAAHU-2AA0GAgDKL-YBYwEfRw8WDQ4CADgVDQ4CAHP1AQ8TLwwv6AggHwwiCRkPIwkZ +DwoJDw4ACXE-DA8TLxEvFgA1jxMfIAA3bxEPDgA-DwxfEAAEAUAAIQw-DgAv3xN1Ax8PMgD--0Vf +-xQS0B4CAAYPfwYdT-8UEPA1ACEv0B4CAAcPTwAd4PBIKLCIYIhgGNAY0AjgAgAQGAYAH2BMAR7D +ERSQFAAPFA8fBA4PPAmVDg0OBB4NBA0OAgDHBA0eBK4EDh0ErQQtBAAbDQIAQx0kDQQCADk0DQQC +AG8AFJAU8BHmAB47ERTAnAAoMA6aAIAgHgSeIB0EbQsAWh0EbR4NDQAiBA0OAFINJA0EPRAAMA0E +TUYAMcRABBMAIQRQEAAeIJoAD7YCbyIfFBwCD7kCOD8SwC4CAAIf-psBHh7QngAP0gIrmXAI4Ahw +FEAIMI8CGgiPAhUIjwIwTghOkQJdTQhNBC0GABQNAgAYCJkCGAiZAgMaACENAHMAX4AY0BhQ0gFP +mGAI4AiAFDAIQOQAGghzAxUY4wAhPhjjACA9GNcADAYAA78AJwQY4gAXGOEAAxgAzw0AFDAYMBRw +GNAYYJIBHS-w8OQCbC-_ELMAHk-Q-xQQywI5L-4STgAdWFA4sCjAAgBvmHB4oEjwnQ0fj1AYAGhQ +_BDw1AUeAO0BAgIArrA4kFhQiGB48Gh_AA-8AW9hMDwPHCxgwhGRBwwOHDAcDgxHEBWQDgxnDA4w +HhcOAgAyDEAOCQDwISAeIFcADjAeIDcwHkAsCBwQHkAHLAgcB0AeAAdcBwAeAB4QfBAeIAcMBwwH +THAXAAgAnwxwFxAXkBgQGH8BHvIEMCw-HHAcbmAMDhEOEQcOYAwHDgMAYGAMBxwHHAgA-zAPF0cN +DlAcJw0nHoAMBw6gBwwHCAcOB3AHDA4IDggeB1AHHG4HMBcsXhcgF3wAF0AHABcABxAHkAcAB7Ac +ABxwBCAPMgD-GP8ngA8b0B6ATxgOPUA9Am0wvTAdAm0CHSBdAl0gzTAdAk0CLTBNCF0wPQJtQF0C +LWB9cG2QTbAtkwH-Sw8yABz-AAQEBAAfHAAOFx4XDgAeADwAGv8GCAgEgAcwByAHEAfwBAcQByAH +MAeAQgAdkAgAOAAIAAgwCAYAgRAIABhQGFAYCgAEFgA-OAAINwEfDzIA-------------------- +------------------------w1A9MTF9fQ== :: gfx/.info.pod b64$LS1bW3BvZCxjcmVhdGVkPSIyMDI0LTA0LTA0IDA3OjE5OjMzIixtb2RpZmllZD0iMjAyNC0w -NC0yNSAyMTowNzoxNyIsc3RvcmVkPSIyMDI0LTA0LTA0IDA3OjE5OjMzIl1dbHo0AAQAAAADAAAA +NC0yNiAwNzo1OTowMyIsc3RvcmVkPSIyMDI0LTA0LTA0IDA3OjE5OjMzIl1dbHo0AAQAAAADAAAA MG5pbA== :: map/0.map b64$LS1bW3BvZCxjcmVhdGVkPSIyMDI0LTA0LTA0IDA3OjE5OjMzIixtb2RpZmllZD0iMjAyNC0w -NC0yNSAyMTowNzoxNyIscmV2aXNpb249Nzg5XV1sejQA6AIAAKtBAADwCHt7Ym1wPXVzZXJkYXRh +NC0yNiAwNzo1OTowMiIscmV2aXNpb249ODM0XV1sejQAewMAAPlBAADwCHt7Ym1wPXVzZXJkYXRh KCJpMTYiLDMyAwAvIjABAP--jD80ODABAF4vNDABAAs-MTMw9AL--1wOBAMOIAAPAQBGEzMEAAgB -AC8zMAEATi80OBgADw4kAA8BADkOaAAPAQD----------8vxGSIpLGhpZGRlbj1mYWxzZSxuYW1l -PSJvYmplY3RzIixwYW5feD0tNjEKAOJ5PTIzLHRpbGVfaD0xNgoAEHcKAI96b29tPTF9LGkQ-58u -MTAMAA8BAP-vL2EwgADtDwEA--------------9LD2kQA6Vmb3JlZ3JvdW5kbBAjOTRsEE8tMTEw -bhCzLzM5BAADDwEAUWMzMjAwMDkEABpiDAAPyhtQCoAAGjAMAB8zAAFtFjiMAQ8EAAEPgAA2DwEA -BR5jlAAICAAfM4AAWRcwDAAPgAA9FzUEAAgBAAwQABozBAAvMzCAADQeNNghDzwADw_AAGgfM4AA -PB81BAAMBAEAGjUEAA_AADYPAQAiD4AAPB8zgABsHzCAAP--gh8zHAALCR8AHzKAADQOSAAPFAAD -AoMADwABSw8BAAUfMoAAbAwAAS8yMIAAKx8zgAAsDyUACg8AAVAPAQAKD4AAMB8ygAAFDwEAiC8y -MDAALy8zMAEA8w9MAQ0vMzBuEP_zX3NvbGlk1SD-0AHDDg4MAA-NIc8fYQQAAw8BAFUvMWEEAAMv -MDCQAVMnMWIEABY5BAAvMDgEAAoPAQA3HzgEACIPAQA3HzgEACIPgAE3HzgEACMPAQA1LzE4BAAj -DwEANS8xOAQAIw8BADUvMTgEACMPAQA1LzE4BAAjDwEANS8xYgQAAAQIBB9iBAAHDwEANh84BAAi -DwEANx84BAAiDwEANx84BAAiDwEANx44BAAQMgQAFzkEABZhHAAFBAAPAQA1HjgEAB8zjw4BHjgE -AA8BADIfOIAAIg8BADcfOIAA-yMP1SD----BS2JhY2vVIA9sEBBQbT0xfX0= +AC8zMAEATi80OBgADw4kAA8BADkOaAAPAQD----------8v3GyIpLGhpZGRlbj1mYWxzZSxuYW1l +PSJvYmplY3RzIixwYW5feD0tOTMuMwEAARcAdXk9MTUzLjYBALI3LHRpbGVfaD0xNgoAEHcKAI96 +b29tPTF9LIMQ-58uMTAMAA8BAP-vL2EwgADtDwEA--------------9LD4MQA6Zmb3JlZ3JvdW5k +hhATNHkQTy0xMTBuELMvMzkEAAMPAQBRYzMyMDAwOQQAGmIMAA-kG1AKgAAaMAwAHzMAAW0WOIwB +DwQAAQ_AADYPAQAFHmOUAAgIAB8zgABZFzAMAA_AAD0XNQQACAEALzUwAQAID4AAOB808iEFD4AA +1B81BAAMBAEAGjUEAA_AADYPAQAiD4AA-zhqMmIwMDJjBAAEAQAvMmMEAAQfZIAANz8zNTABAB4v +M2KAAGsvMDCAAPwfMoAAO2cyODAwMjkEAB9hAAFIL2QwXAAOACgADiQADwEALw5YAA9cAAMvMzIk +AAEPAQAvD4AABgz8CA_AASUfM4AAIwF8CBc5BAAPpAECDwEALwGAABc1BAAPgAARAywALzMwAQAz +DuACDzAADAMcAw4BAA_QAycPiAEDDxwCEw8BAAMPgABHDZwBD4AA3Q4BAA_AAK4FCAMPBAAkD24Q +MV9zb2xpZO8g-_oJzQMvOTABANYvMWEEAAMPAQBVLzFhBAADLzAwkAFTJzFiBAAWOQQALzA4BAAK +DwEANx84BAAiDwEANx84BAAiD4ABNx84BAAjDwEANS8xOAQAIw8BADUvMTgEACMPAQA1LzE4BAAj +DwEANS8xOAQAIw8BADUvMWIEAAAECAQfYgQABw8BADYfOAQAIg8BADcfOAQAIg8BADcfOAQAIg8B +ADceOAQAD4EQAhs4BAAPAQA1HjgEAB8zoQsBGzgEAA8BADUfOIAA-2wuMWJ4BA_AAAEEHAAOgAQP +AQA0HzgEABIPAQBGLzE4BAATDwEARS8xOAQAEw8BAEUvMTgEABMPAQBGHzgEACIPAQA3HzgEACIP +7yC2TGJhY2vvIA_GEClQbT0xfX0= :: map/.info.pod b64$LS1bW3BvZCxjcmVhdGVkPSIyMDI0LTA0LTA0IDA3OjE5OjMzIixtb2RpZmllZD0iMjAyNC0w -NC0yNSAyMTowNzoxNyIsc3RvcmVkPSIyMDI0LTA0LTA0IDA3OjE5OjMzIl1dbHo0AAQAAAADAAAA +NC0yNiAwNzo1OTowMyIsc3RvcmVkPSIyMDI0LTA0LTA0IDA3OjE5OjMzIl1dbHo0AAQAAAADAAAA MG5pbA== :: sfx/0.sfx b64$LS1bW3BvZCxjcmVhdGVkPSIyMDI0LTA0LTA0IDA3OjE5OjM0Iixtb2RpZmllZD0iMjAyNC0w -NC0yNSAyMTowNzoxNyIscmV2aXNpb249NjU2XV1sejQARgEAAGYIAADwJ3B4dQADKAAAAwAED0AQ +NC0yNiAwNzo1OTowMiIscmV2aXNpb249NjkxXV1sejQARgEAAGYIAADwJ3B4dQADKAAAAwAED0AQ Ag4AAaABIAKgDgAPEAAN8MoBAgMEBQYHAA--kAgJCgsPDA8NDw4PDxAA8AANDxEPEg8TDxQPFQ8W DxcTAPEBDxgPGQ8aDxsPHA8dDx4PHxQA8QAgDyEPIg8jDyQPJQ8mDycUAPEAKA8pDyoPKw8sDy0P Lg8vFADxADAPMQ8yDzMPNA81DzYPNxQA-wU4DzkPOg87DzwPPQ8_Dz8AD--w-wEA6-InWgEQBg8g @@ -72,14 +82,14 @@ L-AAMAD--4If-wEAzPEd6A9AAA1ADxcACxoIBggQAgMQBQAGAAgASRcAJggJUP--CfEX-gn8F-4J 8HArAF-_sPBwBAgA-9wf-wEAl1D-----Hw== :: sfx/.info.pod b64$LS1bW3BvZCxjcmVhdGVkPSIyMDI0LTA0LTA0IDA3OjE5OjMzIixtb2RpZmllZD0iMjAyNC0w -NC0yNSAyMTowNzoxNyIsc3RvcmVkPSIyMDI0LTA0LTA0IDA3OjE5OjMzIl1dbHo0AAQAAAADAAAA +NC0yNiAwNzo1OTowMyIsc3RvcmVkPSIyMDI0LTA0LTA0IDA3OjE5OjMzIl1dbHo0AAQAAAADAAAA MG5pbA== :: main.lua ---[[pod_format="raw",created="2024-04-04 07:19:33",modified="2024-04-25 21:07:17",revision=904]] +--[[pod_format="raw",created="2024-04-04 07:19:33",modified="2024-04-26 07:59:02",revision=941]] include("/cirnofarm/src/game.lua") :: .info.pod b64$LS1bW3BvZCxjcmVhdGVkPSIyMDI0LTA0LTE2IDE5OjQyOjIyIixtb2RpZmllZD0iMjAyNC0w -NC0yNSAyMTowNzoxNyIscnVudGltZT02LHN0b3JlZD0iMjAyNC0wNC0xNiAxOTo0MDowNSIsd29y +NC0yNiAwNzo1OTowMyIscnVudGltZT02LHN0b3JlZD0iMjAyNC0wNC0xNiAxOTo0MDowNSIsd29y a3NwYWNlcz17e2xvY2F0aW9uPSJtYWluLmx1YSMxIix3b3Jrc3BhY2VfaW5kZXg9MX0se2xvY2F0 aW9uPSJnZngvMC5nZngiLHdvcmtzcGFjZV9pbmRleD0yfSx7bG9jYXRpb249Im1hcC8wLm1hcCIs d29ya3NwYWNlX2luZGV4PTN9LHtsb2NhdGlvbj0ic2Z4LzAuc2Z4Iix3b3Jrc3BhY2VfaW5kZXg9 diff --git a/src/actor2.lua b/src/actor2.lua index 11a7f63..a5e164d 100644 --- a/src/actor2.lua +++ b/src/actor2.lua @@ -1,24 +1,27 @@ --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 +Actor = { + life=100, + spriteIndex=0, +} +--actor.__index = actor +function Actor:new(new_x,new_y) + local o = { + x=new_x, + y=new_y, + } + + return setmetatable(o, {__index=self}) end -function actor:update() +function Actor:update() end -function actor:draw() +function Actor:draw() spr(self.spriteIndex,self.x,self.y) end --M.actor = actor -return actor \ No newline at end of file +return Actor \ No newline at end of file diff --git a/src/barrel.lua b/src/barrel.lua index 8653789..413a2af 100644 --- a/src/barrel.lua +++ b/src/barrel.lua @@ -1,4 +1,4 @@ ---local actor = require("actor2") +local Actor = require(make_path("actor2")) -- barrel = setmetatable({}, {__index = actor}) -- function barrel:new(actor) @@ -9,25 +9,18 @@ -- 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 +Barrel = Actor:new() +Barrel.spriteIndex = 3 -function barrel:update() + +function Barrel:update() end -function barrel:draw() - spr(self.spriteIndex,self.x,self.y) -end +--function Barrel:draw() +-- spr(self.spriteIndex,self.x,self.y) +--end --M.actor = actor -return barrel \ No newline at end of file +return Barrel \ No newline at end of file diff --git a/src/cirno.lua b/src/cirno.lua index c0b2be0..3a7b1bd 100644 --- a/src/cirno.lua +++ b/src/cirno.lua @@ -44,6 +44,7 @@ function cirno_init() cm=true, -- Collide with map tiles cb=true, -- Collide with world bounds draw=function(self) + camera(self.x - 240, self.y - 135) 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) @@ -101,7 +102,7 @@ end function cirno_draw() --cls(0) - --camera(x - 240, y - 135) + --drawMap() diff --git a/src/game.lua b/src/game.lua index 13401b3..2cb3762 100644 --- a/src/game.lua +++ b/src/game.lua @@ -55,11 +55,13 @@ 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")) +local Barrel = require(make_path("barrel")) tile_width = 16 tile_height = 16 function _init() + spawn_objects() cirno.init() end @@ -76,6 +78,8 @@ LAYERS = { {index=1, name="objects", render=false, render_objects=false, spawn_objects=true} } +actors = {} + function _draw() cls(0) @@ -85,6 +89,11 @@ function _draw() weapons_manager.debug_draw() end +function spawn_objects() + local b = Barrel:new(32,32) + add(actors,b) +end + function render_layer(layer) if (layer.render) then -- todo move function in map manager @@ -96,7 +105,11 @@ function render_layer(layer) cirno.draw() weapons_manager.draw() - + + for b in all(actors) do + b:draw() + end + -- for b in all(bullets) do -- b:draw() -- end