From cd9ec6cc013a3618cc3023bbf8a85b81d6a5eaa8 Mon Sep 17 00:00:00 2001 From: MaddoScientisto Date: Wed, 24 Apr 2024 22:53:04 +0200 Subject: [PATCH] Bullet particles --- cirnofarm.p64 | 87 +++++++++++++++++++++++++------------------------ src/game.lua | 2 +- src/map.lua | 17 +++++++--- src/weapons.lua | 87 +++++++++++++++++++++++++++++++------------------ 4 files changed, 113 insertions(+), 80 deletions(-) diff --git a/cirnofarm.p64 b/cirnofarm.p64 index 910eeb3..d3302e8 100644 --- a/cirnofarm.p64 +++ b/cirnofarm.p64 @@ -6,61 +6,62 @@ version 2 :: sfx/ :: gfx/0.gfx b64$LS1bW3BvZCxjcmVhdGVkPSIyMDI0LTA0LTA0IDA3OjE5OjM0Iixtb2RpZmllZD0iMjAyNC0w -NC0yNCAxNTowNjoxMiIscmV2aXNpb249NjcxXV1sejQAbgYAAOA6AADzFHtbMF09e2JtcD1weHUA +NC0yNCAyMDo1Mjo0MiIscmV2aXNpb249NzE5XV1sejQAiwYAAN86AADzFHtbMF09e2JtcD1weHUA QyAQEATw8CxmbGFncz0wLHBhbl94CADaeT0wLHpvb209MTF9LDIA8QivGyPeA34D3iPeA-4JE24D ThNuI04DfhMA-wOOAz4DTgMuI34jLgOeA-4UAy5eAB3wCfBFTYAtJi1QHWYdBSAdhg0VAB2WHRUN -pgQAww0VAA2WHQUQvQXwE1gAHzFYABXwKlBEgBRPHxRQDxSPHwRALxRPHyRADxQfH0QODxkEQA8U +pgQAww0VAA2WHQUQvQXwE1gAHzNYABXwKlBEgBRPHxRQDxSPHwRALxRPHyRADxQfH0QODxkEQA8U PhoNDxkOBEANLgoACg0ODARADR4aAAoJDBQAQA5KCQoSAEEOKgAKJQASXiIA714NDA4EUBQ_DRSA -RPAVkwAd8AjwFZxADH8QHDAMfgwODCCcHgwgDH8cDAcAH30GAAavDgwwDH0cQJzwFG8AHvcEBj8Z -UGkuWU4ZDhleWR55UB4ZsAMAIcAOAwBfKcAZ8BdbAA8PRQIFDzIAR-wBzxMvEQ8TXxEPEz8RDxMM -Hw0AKAxPDgAjLC8OALQcDxF-EwwvET8THyAAABsAH08NAA7xADwOLxEuDC2OHQ4MLQ5tDgcAJwxd -CAB-PA4sPQ4d3sgAHdn0DA8fNB50HjQeJB4kBgDxAEQOJB7UHoQeJA6UHoQONAQABh4AEIQEAD8O -9AmcAR3-Qf8WADYOhg4WBRYOBSYFNg42BQ5mBQYORg4WBVYOBv4AVg5GDjYFNg4mBQYOhg4GBSYO -BgVmDkYOJv4Ahg6WBTYOFgW2DnYFJgUWDjYFlg5WgAAe8gAVAwwPEAwOHA4MDgxvFQ4KAFEdDB0M -LQsAsR0ODB0MDi0OHA4tCgBSDC0cLQwKADQOXQ4KAD8MPQwMAAIFIgAFNgAFSgACXwAzLQxNcwAj -bQwJAD8M-QPFAB3QHxXUHpQPHyQeBA1kHQYAPxQdJAgABDB0HjQEAFANhB6UDRIAJnQNIAAXNAYA -fwQNFA2EHtRrA4EPMgAf8RRAXxRwHg8VPx8uQB4PFQ4-Hw8VDg0OIB4NDg0-Hw4NDg0OEAYAYTwN -Dg0eAAsAMQ0OHAcAET4GACEcDgcAER4GACcOFBoAJRQOGgDgLA0OLF5MDg1MDQ4ADjwWAFI8DhAO -LFoAQQ4gDgwKAGENDhwOQC4KAE8ecF5AywAkAD8AUS5ADg8fSQBjDg0uIA4sCwAxHA4QyQBgDg08 -AA5MCABRTC5MLkyiACAUTLYANxwUHM4ALBwe5wA1DgAeGQAIGgESINQAbg0eQC48LrwAD_sBQdAT -nVANfxANUA0OXxgOBwBCDD8eDAkAPwscCwoAEhI7CAAQXAYARX4NUJ2dBx8zuAAfDzIAqyoGBQIA -egcWB5YHBgUCAFm2B0YFBgIASfYABQYCAFlmB5YFBgIAWYYHVgUGAgA9VgeGWwBZxgcWBQYCAD9G -B6bFAB32APUB3xgV3hXfFRXeFd4V3QYAf-UC3RXd9QFQAB1P9gANBgIAyi-2AWMBH0cPFg0OAgA4 -FQ0OAgAm9QHdCFcvEX8TP78IFz_kCA8MAAl1LxEvEz8RjzgAP28RDwwAFC-fE1wDHw8yAP--RV-- -FBLQHgIABg87CR1P-xQQ8DUAIS-QHgIABw5PAA82ARUPMgDdIh8UMgEPzwE4PxLALgIAAi-_EUwA -HR7QngAP6AH-Qy-_EEkBHk-Q-xQQzwE5Lv4SgwAPNgEVDzIA3WEwPA8cLGA0D5EHDA4cMBwODEeC -EpAODGcMDjAeFw4CADIMQA4JAPAhIB4gVwAOMB4gNzAeQCwIHBAeQAcsCBwHQB4AB1wHAB4AHhB8 -EB4gBwwHDAdMcBcACACfDHAXEBeQGBAY7Qwe8gQwLD8ccBxuYAwOEQ4RBw5gDAcOAwBgYAwHHAcc -CAD-MQ8XRw0OUBwnDScegAwHDqAHDAcIBw4HcAcMDggOCB4HUAccbgcwFyxeFyAXfAAXQAcAFwAH -EAeQBwAHsBwAHFCUAR8PMgD-GP8ngA8b0B6ATxgOPUA9Am0wvTAdAm0CHSBdAl0gzTAdAk0CLTBN -CF0wPQJtQF0CLWB9cG2QTbAtkwH-Sw8yABz-AAQEBAAfHAAOFx4XDgAeADwAGv8GCAgEgAcwByAH -EAfwBAcQByAHMAeAQgAdkAgAOAAIAAgwCAYAgRAIABhQGFAYCgAEFgA-OAAINwEfDzIA-------- -------------------------------------w1A9MTF9fQ== +RPAVkwAd8AjwFZxADH8QHDAMfgwODCCcHgwgDH8cDAcAH30GAAajDgwwDH0cQJzwFG8AHzFvABb3 +BAY-GVBpLllOGQ4ZXlkeeVAeGbADACHADgMAXynAGfAXWwAPD0UCBQ8yAEf8Ac8TLxEPE18RDxM- +EQ8TDB8NACgMTw4AIywvDgC0HA8RfxMMLxE-Ex8gAAAbAB9PDQAO8QA8Di8RLgwtjh0ODC0ObQ4H +ACcMXQgAfzwOLD0OHd7IAB3Z9AwPHzQedB40HiQeJAYA8QBEDiQe1B6EHiQOlB6EDjQEAAYeABCE +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 :: gfx/.info.pod b64$LS1bW3BvZCxjcmVhdGVkPSIyMDI0LTA0LTA0IDA3OjE5OjMzIixtb2RpZmllZD0iMjAyNC0w -NC0yNCAxNTowNjoxMiIsc3RvcmVkPSIyMDI0LTA0LTA0IDA3OjE5OjMzIl1dbHo0AAQAAAADAAAA +NC0yNCAyMDo1Mjo0MyIsc3RvcmVkPSIyMDI0LTA0LTA0IDA3OjE5OjMzIl1dbHo0AAQAAAADAAAA MG5pbA== :: map/0.map b64$LS1bW3BvZCxjcmVhdGVkPSIyMDI0LTA0LTA0IDA3OjE5OjMzIixtb2RpZmllZD0iMjAyNC0w -NC0yNCAxNTowNjoxMiIscmV2aXNpb249NjgxXV1sejQAagIAALFBAADwCHt7Ym1wPXVzZXJkYXRh +NC0yNCAyMDo1Mjo0MiIscmV2aXNpb249NzM2XV1sejQAawIAALFBAADwCHt7Ym1wPXVzZXJkYXRh KCJpMTYiLDMyAwAvIjABAP--jD80ODABAF4vNDABAAs-MTMw9AL--1wOBAMOIAAPAQBGEzMEAAgB AC8zMAEATi80OBgADw4kAA8BADkOaAAPAQD----------8vxGSIpLGhpZGRlbj1mYWxzZSxuYW1l -PSJvYmplY3RzIixwYW5feD0tOTAKAPIBeT0tMTEwLHRpbGVfaD0xNgoAEHcKAI96b29tPTF9LGsQ --58uMTAMAA8BAP-vL2EwgADtDwEA--------------9LD2sQA6Zmb3JlZ3JvdW5kbhAfNG4Qvi8z -OQQAAw8BAFFjMzIwMDA5BAAaYgwAD8wbUAqAABowDAAfMwABbRY4jAEPBAABD4AANg8BAAUeY5QA -CAgAHzOAAFkXMAwAD4AAPRc1BAAIAQAMEAAaMwQALzMwgAA0HjTaIQ88AA8PgABoHzOAADwfNQQA -DAQBABo1BAAPgAA2DwEAIg_AADwfM4AAbB8wgAChDwEA-80fMxwAGC8yMAEAMw9IAAEvMjABAGgP -kADQD_gBCR8wXAAuDwEArx8y3AARDxQCrB8yvAECDwEA8w9MAQ0vMzBuEP_zR3NvbGlpEB84aRAx -DwEA-4QuOTAMAA-PIdEfYQQAAw8BAFUvMWEEAAMvMDCQAVMnMWIEABY5BAAvMDgEAAoPAQA3HzgE -ACIPAQA3HzgEACIPgAE3HzgEACMPAQA1LzE4BAAjDwEANS8xOAQAIw8BADUvMTgEACMPAQA1LzE4 -BAAjD9cg-----------FTGJhY2vXIA9uEBFQbT0xfX0= +PSJvYmplY3RzIixwYW5feD0tODYKAPIBeT0tMTEwLHRpbGVfaD0xNgoAEHcKAI96b29tPTF9LGsQ +-58uMTAMAA8BAP-vL2EwgADtDwEA--------------9LD2sQA6Vmb3JlZ3JvdW5kbhAvOTRuEL4v +MzkEAAMPAQBRYzMyMDAwOQQAGmIMAA-MG1AKgAAaMAwAHzMAAW0WOIwBDwQAAQ_AADYPAQAFHmOU +AAgIAB8zgABZFzAMAA_AAD0XNQQACAEADBAAGjMEAC8zMIAANB402iEPPAAPD4AAaB8zgAA8HzUE +AAwEAQAaNQQAD4AANg8BACIPgAA8HzOAAGwfMIAAoQ8BAP-NHzMcABgvMjABADMPSAABLzIwAQBo +D5AA0A-oAQkfMFwALg8BAK8fMtwAEQ8UAqwfMrwBAg8BAPMPTAENLzMwbhD-s0dzb2xpaRAfOGkQ +MQ8BAP_ELjkwDAAPzyHRH2EEAAMPAQBVLzFhBAADLzAwkAFTJzFiBAAWOQQALzA4BAAKDwEANx84 +BAAiDwEANx84BAAiD4ABNx84BAAjDwEANS8xOAQAIw8BADUvMTgEACMPAQA1LzE4BAAjDwEANS8x +OAQAIw-XIP----------xUxiYWNr1yAPbhARUG09MX19 :: map/.info.pod b64$LS1bW3BvZCxjcmVhdGVkPSIyMDI0LTA0LTA0IDA3OjE5OjMzIixtb2RpZmllZD0iMjAyNC0w -NC0yNCAxNTowNjoxMiIsc3RvcmVkPSIyMDI0LTA0LTA0IDA3OjE5OjMzIl1dbHo0AAQAAAADAAAA +NC0yNCAyMDo1Mjo0MyIsc3RvcmVkPSIyMDI0LTA0LTA0IDA3OjE5OjMzIl1dbHo0AAQAAAADAAAA MG5pbA== :: sfx/0.sfx b64$LS1bW3BvZCxjcmVhdGVkPSIyMDI0LTA0LTA0IDA3OjE5OjM0Iixtb2RpZmllZD0iMjAyNC0w -NC0yNCAxNTowNjoxMiIscmV2aXNpb249NTgwXV1sejQARgEAAGYIAADwJ3B4dQADKAAAAwAED0AQ +NC0yNCAyMDo1Mjo0MiIscmV2aXNpb249NjEzXV1sejQARgEAAGYIAADwJ3B4dQADKAAAAwAED0AQ Ag4AAaABIAKgDgAPEAAN8MoBAgMEBQYHAA--kAgJCgsPDA8NDw4PDxAA8AANDxEPEg8TDxQPFQ8W DxcTAPEBDxgPGQ8aDxsPHA8dDx4PHxQA8QAgDyEPIg8jDyQPJQ8mDycUAPEAKA8pDyoPKw8sDy0P Lg8vFADxADAPMQ8yDzMPNA81DzYPNxQA-wU4DzkPOg87DzwPPQ8_Dz8AD--w-wEA6-InWgEQBg8g @@ -69,14 +70,14 @@ L-AAMAD--4If-wEAzPEd6A9AAA1ADxcACxoIBggQAgMQBQAGAAgASRcAJggJUP--CfEX-gn8F-4J 8HArAF-_sPBwBAgA-9wf-wEAl1D-----Hw== :: sfx/.info.pod b64$LS1bW3BvZCxjcmVhdGVkPSIyMDI0LTA0LTA0IDA3OjE5OjMzIixtb2RpZmllZD0iMjAyNC0w -NC0yNCAxNTowNjoxMiIsc3RvcmVkPSIyMDI0LTA0LTA0IDA3OjE5OjMzIl1dbHo0AAQAAAADAAAA +NC0yNCAyMDo1Mjo0MyIsc3RvcmVkPSIyMDI0LTA0LTA0IDA3OjE5OjMzIl1dbHo0AAQAAAADAAAA MG5pbA== :: main.lua ---[[pod_format="raw",created="2024-04-04 07:19:33",modified="2024-04-24 15:06:12",revision=800]] +--[[pod_format="raw",created="2024-04-04 07:19:33",modified="2024-04-24 20:52:42",revision=840]] include("/cirnofarm/src/game.lua") :: .info.pod b64$LS1bW3BvZCxjcmVhdGVkPSIyMDI0LTA0LTE2IDE5OjQyOjIyIixtb2RpZmllZD0iMjAyNC0w -NC0yNCAxNTowNjoxMiIscnVudGltZT02LHN0b3JlZD0iMjAyNC0wNC0xNiAxOTo0MDowNSIsd29y +NC0yNCAyMDo1Mjo0MyIscnVudGltZT02LHN0b3JlZD0iMjAyNC0wNC0xNiAxOTo0MDowNSIsd29y a3NwYWNlcz17e2xvY2F0aW9uPSJtYWluLmx1YSMxIix3b3Jrc3BhY2VfaW5kZXg9MX0se2xvY2F0 aW9uPSJnZngvMC5nZngiLHdvcmtzcGFjZV9pbmRleD0yfSx7bG9jYXRpb249Im1hcC8wLm1hcCIs d29ya3NwYWNlX2luZGV4PTN9LHtsb2NhdGlvbj0ic2Z4LzAuc2Z4Iix3b3Jrc3BhY2VfaW5kZXg9 diff --git a/src/game.lua b/src/game.lua index fa94fbd..8fec0bc 100644 --- a/src/game.lua +++ b/src/game.lua @@ -67,5 +67,5 @@ end function _draw() cirno.draw() - mouse_debug.draw(3, tile_width, tile_height) + mouse_debug.draw(4, tile_width, tile_height) end \ No newline at end of file diff --git a/src/map.lua b/src/map.lua index 14858bb..0233302 100644 --- a/src/map.lua +++ b/src/map.lua @@ -9,20 +9,27 @@ function get_layer_tile(x,y,layer) return get(fetch("map/".. current_map .. ".map")[layer].bmp,x,y) end -function is_tile(tile_type,x,y) +function get_tile_flags(x,y) --local tile = mget(x/tile_width,y/tile_height) local tile = get_layer_tile(x/tile_width,y/tile_height,3) - local has_flag = fget(tile,tile_type) + local has_flag = fget(tile) --last_coll = fget(tile) return has_flag end function M.is_tile_solid(x,y) - return is_tile(1,x,y) == 1 + local tile_flags = get_tile_flags(x,y) + + return (tile_flags & 1) ~= 0 or (tile_flags & 2) ~=0 end -function M.can_move(x,y) - return is_tile(0,x,y) +function M.is_tile_shoot_solid(x,y) + local tile_flags = get_tile_flags(x,y) + return (tile_flags & 2) ~= 0 end +-- function M.can_move(x,y) +-- return is_tile(0,x,y) +-- end + return M \ No newline at end of file diff --git a/src/weapons.lua b/src/weapons.lua index 2dc990e..0bb47dd 100644 --- a/src/weapons.lua +++ b/src/weapons.lua @@ -1,8 +1,11 @@ ---[[pod_format="raw",created="2024-04-24 07:17:14",modified="2024-04-24 08:16:10",revision=9]] +--[[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")) + M = {} local weapons = {} local bullets = {} +local particles = {} weapon = { name = "Ice Blaster", @@ -13,6 +16,31 @@ weapon = { } +particle = { + x=0, + y=0, + life=4, + spriteIndex=81 +} +particle.__index = particle +function particle:new(x,y) + local o = setmetatable({}, particle) + o.x=x + o.y=y + return o +end + +function particle:update() + self.life-=1 + if self.life<0 then + del(particles,self) + end +end + +function particle:draw() + spr(self.spriteIndex,self.x,self.y) +end + bullet = { x=0, y=0, @@ -22,26 +50,6 @@ bullet = { destroy_sprite_index=66, life=100, damage=1, - -- 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 } bullet.__index = bullet function bullet:new(x, y, dx, dy) @@ -50,15 +58,25 @@ function bullet:new(x, y, dx, dy) o.y = y o.dx = dx o.dy = dy - --o.life = 100 - --o.spriteIndex = 80 - --o.destroy_sprite_index = 66 - --o.damage = 1 return o end +function bullet:destroy() + + -- Create particle + local p = particle:new(self.x, self.y) + + add(particles, p) + + del(bullets,self) +end + function bullet:check_collision() - -- + + if (map_manager.is_tile_shoot_solid(self.x,self.y)) then + self:destroy() + end + end function bullet:update() @@ -67,11 +85,10 @@ function bullet:update() self.life-=1 if self.life<0 then - del(bullets,self) - -- TODO: Create particle - end + self:destroy() + end - self.check_collision() + self:check_collision() end function bullet:draw() @@ -131,16 +148,24 @@ function M.draw() for b in all(bullets) do b:draw() end + + for p in all(particles) do + p:draw() + end end function M.update() for b in all(bullets) do b:update() end + + for p in all(particles) do + p:update() + end end function M.debug_draw() - print(string.format("Bullets: %d", count(bullets)), 0,32,1) + print(string.format("Bullets: %d Particles: %d", count(bullets), count(particles)), 0,32,1) end return M \ No newline at end of file