diff --git a/cirnofarm.p64 b/cirnofarm.p64 index 10a777c..235f75c 100644 --- a/cirnofarm.p64 +++ b/cirnofarm.p64 @@ -6,7 +6,7 @@ version 2 :: sfx/ :: gfx/0.gfx b64$LS1bW3BvZCxjcmVhdGVkPSIyMDI0LTA0LTA0IDA3OjE5OjM0Iixtb2RpZmllZD0iMjAyNC0w -NC0yOCAxMDozODoyMiIscmV2aXNpb249MTIxNV1dbHo0AP0LAABfQwAA8xR7WzBdPXtibXA9cHh1 +NC0yOCAxMzowNDo1MCIscmV2aXNpb249MTIyMl1dbHo0AD0MAACaQwAA8xR7WzBdPXtibXA9cHh1 AEMgEBAE8PAsZmxhZ3M9MCxwYW5feAgA2nk9MCx6b29tPTExfSwyAPEIrxsj3gN_A94j3gP_CRNu A04TbiNOA34TAP8DjgM_A04DLiN_Iy4DngP_FAMuXgAd8AnwRU2ALSYtUB1mHQUgHYYNFQAdlh0V DaYEAMMNFQANlh0FEL0F8BNYAB8zWAAV8CpQRIAUTx8UUA8Ujx8EQC8UTx8kQA8UHx9EDg8ZBEAP @@ -59,15 +59,16 @@ MAgGAIEQCAAYUBhQGAoABBYAPzgACDcBHw8yAOXwFBC-GCAOtA4ADtQeRDxEHiQcPxwcJB4kDF0M JB4UDA1cDQwUCAAyDD0MCgARHQIACAoA0SQMHRwdDCQeJBw9HCRFAJ-UDgAOtA4gvhC-AB8PMgD- S7cTnxBQDhwOLA4MDggAIy4MEAAACAAIGgAqPC4YACIMHgoAMWAODCIAj3AeTA6AXvAUiAAe_Q8V VYAFVgVwBV8QBXAFXgVwBQY_BgVwBRYeFgVwBVYEAE_AVfAlTAEfDzIA-xnwCCHBEAGMDxEbDA8c -IQx-EBwPHAEQES8QhwnyBTE-EBGAAS4BoAEeDxwBkAEeDQGQDwAQDQUAXwGwMfAKogAfDzIA---- -----------------------------------9zUD0xMX19 +IQx-EBwPHAEQES8QhwnyBTE-EBGAAS4BoAEeDxwBkAEeDQGQDwAQDQUAXwGwMfAKcAAe8B82KcAa +GRAqUCoZAAoZUEo5QAYZChYJBhoWMAkKKQoZCgYZBhBqCSoJFiAWChYKCQCvMDYZRlCGkCbwBkEB +Hw8yAP--------------------------------------QVA9MTF9fQ== :: gfx/.info.pod b64$LS1bW3BvZCxjcmVhdGVkPSIyMDI0LTA0LTA0IDA3OjE5OjMzIixtb2RpZmllZD0iMjAyNC0w -NC0yOCAxMDozODoyMyIsc3RvcmVkPSIyMDI0LTA0LTA0IDA3OjE5OjMzIl1dbHo0AAQAAAADAAAA +NC0yOCAxMzowNDo1MCIsc3RvcmVkPSIyMDI0LTA0LTA0IDA3OjE5OjMzIl1dbHo0AAQAAAADAAAA MG5pbA== :: map/0.map b64$LS1bW3BvZCxjcmVhdGVkPSIyMDI0LTA0LTA0IDA3OjE5OjMzIixtb2RpZmllZD0iMjAyNC0w -NC0yOCAxMDozODoyMiIscmV2aXNpb249MTI0OV1dbHo0ALgFAAAUQgAA8Ah7e2JtcD11c2VyZGF0 +NC0yOCAxMzowNDo1MCIscmV2aXNpb249MTI1NV1dbHo0ALgFAAAUQgAA8Ah7e2JtcD11c2VyZGF0 YSgiaTE2IiwzMgMALyIwAQD-gy4xMAwADwEAoiozMAEAHjQUAAwBADU1ODABAD80ODABACsvNDAz ACYfNnwABD8xMzCAAEoPXAAaBAQADwEANQ9QACEvMzCAAG0PAQC6KjQ4CAEPBAMHDiAADwEANgSA AB8zYAEALzMwAQBOLzQ4GAAPDiQADwEAOQ5oAA8BAHIeM4ABD4AAYA8BAP_EBLQDDhAADwEAUwxw @@ -96,11 +97,11 @@ AQABL2UwAQAuLzE4BAATD4AA-0YvMDgEABQfZQQAIA8BABEfOAQAFB9lBAAeDwkhkkpiYWNrCSFk MTM3LjE2AQAVN4YQLzEyhhARUG09MX19 :: map/.info.pod b64$LS1bW3BvZCxjcmVhdGVkPSIyMDI0LTA0LTA0IDA3OjE5OjMzIixtb2RpZmllZD0iMjAyNC0w -NC0yOCAxMDozODoyMyIsc3RvcmVkPSIyMDI0LTA0LTA0IDA3OjE5OjMzIl1dbHo0AAQAAAADAAAA +NC0yOCAxMzowNDo1MCIsc3RvcmVkPSIyMDI0LTA0LTA0IDA3OjE5OjMzIl1dbHo0AAQAAAADAAAA MG5pbA== :: sfx/0.sfx b64$LS1bW3BvZCxjcmVhdGVkPSIyMDI0LTA0LTA0IDA3OjE5OjM0Iixtb2RpZmllZD0iMjAyNC0w -NC0yOCAxMDozODoyMiIscmV2aXNpb249OTcyXV1sejQARgEAAGYIAADwJ3B4dQADKAAAAwAED0AQ +NC0yOCAxMzowNDo1MCIscmV2aXNpb249OTc4XV1sejQARgEAAGYIAADwJ3B4dQADKAAAAwAED0AQ Ag4AAaABIAKgDgAPEAAN8MoBAgMEBQYHAA--kAgJCgsPDA8NDw4PDxAA8AANDxEPEg8TDxQPFQ8W DxcTAPEBDxgPGQ8aDxsPHA8dDx4PHxQA8QAgDyEPIg8jDyQPJQ8mDycUAPEAKA8pDyoPKw8sDy0P Lg8vFADxADAPMQ8yDzMPNA81DzYPNxQA-wU4DzkPOg87DzwPPQ8_Dz8AD--w-wEA6-InWgEQBg8g @@ -109,14 +110,14 @@ L-AAMAD--4If-wEAzPEd6A9AAA1ADxcACxoIBggQAgMQBQAGAAgASRcAJggJUP--CfEX-gn8F-4J 8HArAF-_sPBwBAgA-9wf-wEAl1D-----Hw== :: sfx/.info.pod b64$LS1bW3BvZCxjcmVhdGVkPSIyMDI0LTA0LTA0IDA3OjE5OjMzIixtb2RpZmllZD0iMjAyNC0w -NC0yOCAxMDozODoyMyIsc3RvcmVkPSIyMDI0LTA0LTA0IDA3OjE5OjMzIl1dbHo0AAQAAAADAAAA +NC0yOCAxMzowNDo1MCIsc3RvcmVkPSIyMDI0LTA0LTA0IDA3OjE5OjMzIl1dbHo0AAQAAAADAAAA MG5pbA== :: main.lua ---[[pod_format="raw",created="2024-04-04 07:19:33",modified="2024-04-28 10:38:22",revision=1259]] +--[[pod_format="raw",created="2024-04-04 07:19:33",modified="2024-04-28 13:04:50",revision=1265]] include("/cirnofarm/src/game.lua") :: .info.pod b64$LS1bW3BvZCxjcmVhdGVkPSIyMDI0LTA0LTE2IDE5OjQyOjIyIixtb2RpZmllZD0iMjAyNC0w -NC0yOCAxMDozODoyMyIscnVudGltZT02LHN0b3JlZD0iMjAyNC0wNC0xNiAxOTo0MDowNSIsd29y +NC0yOCAxMzowNDo1MCIscnVudGltZT02LHN0b3JlZD0iMjAyNC0wNC0xNiAxOTo0MDowNSIsd29y a3NwYWNlcz17e2xvY2F0aW9uPSJtYWluLmx1YSMxIix3b3Jrc3BhY2VfaW5kZXg9MX0se2xvY2F0 aW9uPSJnZngvMC5nZngiLHdvcmtzcGFjZV9pbmRleD0yfSx7bG9jYXRpb249Im1hcC8wLm1hcCIs d29ya3NwYWNlX2luZGV4PTN9LHtsb2NhdGlvbj0ic2Z4LzAuc2Z4Iix3b3Jrc3BhY2VfaW5kZXg9 diff --git a/src/cirno.lua b/src/cirno.lua index 3c06d8a..f92e222 100644 --- a/src/cirno.lua +++ b/src/cirno.lua @@ -20,6 +20,10 @@ Cirno.weapon=nil function Cirno:new(x,y) local obj = Actor:new(x,y) + local weapon = weapons_manager.make_weapon(weapons_manager.get_weapons().ICE_BLASTER) + + obj.weapon = weapon + return setmetatable(obj, {__index=self}) end @@ -32,8 +36,7 @@ function Cirno:update() self:move() if (btn(4)) then - --create_bullet(self.x,self.y,self.move_x,self.move_Y) - weapons_manager.shoot(self.weapon,self.x+8,self.y+8,self.move_x,self.move_y) + self.weapon:shoot(self.x+8,self.y+8,self.move_x,self.move_y) end end @@ -60,8 +63,8 @@ M = {} function M.init() --return cirno_init() local c = Cirno:new(128,128) - local weapon = weapons_manager.get_weapons().ICE_BLASTER - c.weapon = weapon + --local weapon = weapons_manager.get_default_weapon() + return c end diff --git a/src/game.lua b/src/game.lua index d7d65f2..419c6ad 100644 --- a/src/game.lua +++ b/src/game.lua @@ -99,8 +99,8 @@ function _update() {"text_box",{text=string.format("Actors: %d", count(actors)),margin=2,stroke=true,active=false,hover=false}}, {"text_box",{text=string.format("%.4f %dfps",stat(1),stat(7)),margin=2,stroke=true,active=false,hover=false}}, {"text_box",{text=string.format("Bullets: %d", count(bullets)),margin=2,stroke=true,active=false,hover=false}}, - {"text_box",{text=string.format("Weapon: %s", cirnoInstance.weapon.name),margin=2,stroke=true,active=false,hover=false}}, - {"sprite_box",{sprite=cirnoInstance.weapon.spriteIndex,margin=2,stroke=true,active=false,hover=false}}, + {"text_box",{text=string.format("Weapon: %s", cirnoInstance.weapon.data.name),margin=2,stroke=true,active=false,hover=false}}, + {"sprite_box",{sprite=cirnoInstance.weapon.data.spriteIndex,margin=2,stroke=true,active=false,hover=false}}, }}) --pgui:component("text_box",{text=string.format("Actors: %d", count(actors)),margin=2,stroke=true,active=false,hover=false}) diff --git a/src/weapons.lua b/src/weapons.lua index f8bf937..820b154 100644 --- a/src/weapons.lua +++ b/src/weapons.lua @@ -23,6 +23,12 @@ local weapons_list = { --shoot=function(self,x,y,dir_x,dir_y) -- create_bullet(self.bullet, x, y, dir_x, dir_y) --end + }, + SPAGHETTI={ + name = "Spaghetti", + rate_of_fire = 0.2, + bullet=bullets_list.BASIC, + spriteIndex=105, } } @@ -31,7 +37,25 @@ function shoot(weapon, x, y, dir_x, dir_y) create_bullet(weapon.bullet, x, y, dir_x, dir_y) end --- local particles = {} +-- Weapon + +Weapon = {} + +function Weapon:new(data) + local we = { + data = data, + timer = 0 + } + + return setmetatable(we, {__index=self}) +end + +function Weapon:shoot(x,y,dir_x,dir_y) + + create_bullet(self.data.bullet, x, y, dir_x, dir_y) +end + +-- Particle Particle = Actor:new() Particle.life=4 @@ -125,9 +149,9 @@ function create_bullet(bullet, new_x, new_y, dir_x, dir_y) end -function M.shoot(weapon, new_x, new_y, dir_x, dir_y) - return shoot(weapon, new_x,new_y,dir_x,dir_y) -end +--function M.shoot(weapon, new_x, new_y, dir_x, dir_y) +-- return shoot(weapon, new_x,new_y,dir_x,dir_y) +--end function M.get_weapons() return weapons_list @@ -165,4 +189,10 @@ function M.debug_draw() --print(string.format("Bullets: %d", count(bullets)), 0,32,1) end +function M.make_weapon(bullet_type) + return Weapon:new(bullet_type) + --local w = Weapon:new(weapons_list.SPAGHETTI) + --return w +end + return M \ No newline at end of file