From eb1a82d1f394fd8a5fb8491c306f877539161df8 Mon Sep 17 00:00:00 2001 From: Juan Date: Thu, 7 Aug 2025 01:26:48 -0400 Subject: [PATCH] meat tables + factory creation --- assets/images/env/butcher_table.png | Bin 0 -> 732 bytes assets/images/env/new_table.png | Bin 0 -> 565 bytes assets/images/env/newer_table.png | Bin 0 -> 665 bytes assets/images/tiles/tiles.png | Bin 0 -> 1295 bytes assets/images/tiles/tiles_bigger.png | Bin 0 -> 1812 bytes assets/images/tiles/tiles_bigger_new.png | Bin 0 -> 1574 bytes assets/images/ui/cursor.png | Bin 0 -> 378 bytes cleaver.lua | 37 ++++++++++------ main.lua | 41 ++++++++++++++++-- meat.lua | 21 +++++++++ meat_factory.lua | 52 +++++++++++++++++++++++ meat_tables.lua | 26 ++++++++++++ 12 files changed, 161 insertions(+), 16 deletions(-) create mode 100644 assets/images/env/butcher_table.png create mode 100644 assets/images/env/new_table.png create mode 100644 assets/images/env/newer_table.png create mode 100644 assets/images/tiles/tiles.png create mode 100644 assets/images/tiles/tiles_bigger.png create mode 100644 assets/images/tiles/tiles_bigger_new.png create mode 100644 assets/images/ui/cursor.png create mode 100644 meat.lua create mode 100644 meat_factory.lua create mode 100644 meat_tables.lua diff --git a/assets/images/env/butcher_table.png b/assets/images/env/butcher_table.png new file mode 100644 index 0000000000000000000000000000000000000000..55ffe13c3ae912f8dfc9e3309e55c04ffcf9d078 GIT binary patch literal 732 zcmeAS@N?(olHy`uVBq!ia0y~yU`SwKU@+rgV_;yg@Sk&ufq{XsILO_JVcj{ImkbO{ z(>z@qLn`LHoo(&S>?qKnKFO?gY11N&2v4q!f^RNqbh%2gYHtFI zj0_BMdGCc@#=p;JP+;2-EGHr5r;>1f#h0ift5>`|pT$xdf0QBZ)E!X`sdeGrNesp- z*}j~*(Ld35>-EwnkMC%+83g~ZZ0Pd2?eT4|vD*=bv{P4piFis&@AT-tut!iv>yw~i zgXCjNhu)qWJshmtZeJ6zZty7B#&6Ke6CJ#1-S67T z-=~B;Yw+OMCv4W65dXUH`p;X>)Y%M#??wg$mTib!IM1ew@l1(igRL>wWk>BK>4OWO zP1tk7_@PIk8T*6Z`d6x5_Hpd}cl;BdUo-3 zUq63!Md;w4t0&w)3(7EF`4!N?ct%2cft!u#v-M`*Wka;Bv;O)h$LF?7UF^8!_iER> z-=99_|4d>qUb?cg@b7=-vh7aSmrj^7KUU37|Els$Hyx4ukbFg{k?km>)N^>g{$ z_4+Ya!+8?gOcZn<`Su#@<+~g^`@!v)=pzhiURT6-SV_r9e+(*^Ww^}k=CtYJtK=g1 z)>Rdl?%cREjA(+gpv0`3t@6n&P_P_Ov zei|EdH{*6@_533YX^X104~d7c{Qqee5-QZecqT$R!HSKm>Ig&H66P5b`4Wy*@oAj0 qJ0QNTc!9)$o)QM*ON?j!Fnx0UYt9+GVlM*&1B0ilpUXO@geCx5S4IW^ literal 0 HcmV?d00001 diff --git a/assets/images/env/new_table.png b/assets/images/env/new_table.png new file mode 100644 index 0000000000000000000000000000000000000000..d650581ef98d972c93d88f13dfa779d1b44afcca GIT binary patch literal 565 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 N@O1TaS?83{1OWcEXL0}l literal 0 HcmV?d00001 diff --git a/assets/images/tiles/tiles_bigger.png b/assets/images/tiles/tiles_bigger.png new file mode 100644 index 0000000000000000000000000000000000000000..cd8ad2cb3aa885ae48689229263b993616225c3b GIT binary patch literal 1812 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 literal 0 HcmV?d00001 diff --git a/cleaver.lua b/cleaver.lua index cf812f3..0ca5333 100644 --- a/cleaver.lua +++ b/cleaver.lua @@ -44,8 +44,12 @@ function Cleaver:update(dt) end function Cleaver:draw() - local x, y = love.mouse.getPosition() - love.graphics.draw(self.currentImage, x - self.currentImage:getWidth() / 2, y - self.currentImage:getHeight() / 2) + local x, y = love.mouse.getPosition() + for _, meatTable in ipairs(instances.meat_tables) do + if meatTable:isHovering(x,y) then + love.graphics.draw(self.currentImage, x - self.currentImage:getWidth() / 2, y - self.currentImage:getHeight() / 2) + end + end end function Cleaver:mousepressed(button) @@ -58,18 +62,27 @@ function Cleaver:mousepressed(button) end function Cleaver:mousereleased(button) - if button == 1 then -- Left mouse button - if self.state == "charged" then - self.state = "chop" - self.currentImage = self.images.chop - self.timer = 0 - self.scorePending = true - elseif self.state == "windup" then - self.state = "idle" - self.currentImage = self.images.idle - self.timer = 0 + if button == 1 then -- Left mouse button + if self.state == "charged" then + self.state = "chop" + self.currentImage = self.images.chop + self.timer = 0 + self.scorePending = true + -- Check if the cleaver is hovering over a meat instance + local x, y = love.mouse.getPosition() + for i, meat in ipairs(instances.meats) do + if x >= meat.x and x <= meat.x + meat.currentImage:getWidth() and y >= meat.y and y <= meat.y + meat.currentImage:getHeight() then + -- Remove the meat instance from the table + table.remove(instances.meats, i) + break end + end + elseif self.state == "windup" then + self.state = "idle" + self.currentImage = self.images.idle + self.timer = 0 end + end end function Cleaver:getScore() diff --git a/main.lua b/main.lua index ab945c0..f1cf0bd 100644 --- a/main.lua +++ b/main.lua @@ -1,5 +1,7 @@ -- imports local Cleaver = require("cleaver") +local MeatFactory = require("meat_factory") +local MeatTable = require("meat_tables") -- main.lua local font @@ -7,6 +9,7 @@ local cleaver local tileImage local bottomBar local profitLossBar +local meatFactory function love.load() font = love.graphics.newFont("assets/fonts/Born2bSportyFS.otf", 32) @@ -17,27 +20,52 @@ function love.load() cleaver:loadImages() -- Load tile image - tileImage = love.graphics.newImage("assets/images/tiles/chop-floor-tile.png") + tileImage = love.graphics.newImage("assets/images/tiles/tiles_bigger_new.png") -- Load UI images for bottom bar and profit/loss bar bottomBar = love.graphics.newImage("assets/images/ui/chopping-bottom-bar.png") profitLossBar = love.graphics.newImage("assets/images/ui/chopping-profitloss-bar.png") + + -- Load basic cursor + cursor = love.graphics.newImage("assets/images/ui/cursor.png") + + -- Load MeatTable + meatTable = MeatTable:new() + + -- Create a MeatFactory instance + meatFactory = MeatFactory:new(5, {"chicken", "cow", "pig"}, meatTable) + + instances = {} + instances.meats = {} + instances.meat_tables = {} + table.insert(instances.meat_tables, meatTable) + end function love.update(dt) cleaver:update(dt) + meatFactory:update(dt) end function love.draw() -- Draw tile background local tileWidth = tileImage:getWidth() local tileHeight = tileImage:getHeight() - local scale = 4 -- Adjust this value to change the tile size + local scale = 1 -- Adjust this value to change the tile size for x = 0, love.graphics.getWidth(), tileWidth * scale do for y = 0, love.graphics.getHeight(), tileHeight * scale do love.graphics.draw(tileImage, x, y, 0, scale, scale) end end - + + -- Draw butcher table + meatTable:draw() + + -- Draw meat + for _, meat in ipairs(instances.meats) do + love.graphics.draw(meat.currentImage, meat.x, meat.y) + end + + -- Draw bottom bar and score local bottomBarX = (love.graphics.getWidth() - bottomBar:getWidth()) / 2 local bottomBarY = love.graphics.getHeight() - bottomBar:getHeight() @@ -56,8 +84,13 @@ function love.draw() -- Draw profit/loss bar at top right love.graphics.draw(profitLossBar, love.graphics.getWidth() - profitLossBar:getWidth() - 10, 10) + local mouse_x, mouse_y = love.mouse.getPosition() + love.graphics.draw(cursor, mouse_x - cursor:getWidth() / 2, mouse_y - cursor:getHeight() / 2) + -- Draw cleaver cleaver:draw() + + end function love.mousepressed(x, y, button) @@ -66,4 +99,4 @@ end function love.mousereleased(x, y, button) cleaver:mousereleased(button) -end \ No newline at end of file +end diff --git a/meat.lua b/meat.lua new file mode 100644 index 0000000..3fa12c7 --- /dev/null +++ b/meat.lua @@ -0,0 +1,21 @@ +-- meat.lua +Meat = {} +Meat.__index = Meat + +function Meat:new() + local instance = setmetatable({}, Meat) + instance.meatType = "" + instance.images = {} + instance.scorePending = false + instance.value = 1 + return instance +end + +function Meat:loadImages() + self.images.chicken = love.graphics.newImage("assets/images/meats/chicken.png") + self.images.pig = love.graphics.newImage("assets/images/meats/pig.png") + self.images.cow = love.graphics.newImage("assets/images/meats/cow.png") + self.currentImage = self.images.chicken +end + +return Meat \ No newline at end of file diff --git a/meat_factory.lua b/meat_factory.lua new file mode 100644 index 0000000..7e90866 --- /dev/null +++ b/meat_factory.lua @@ -0,0 +1,52 @@ +-- meat-factory.lua +MeatFactory = {} +MeatFactory.__index = MeatFactory +local Meat = require("meat") + + +function MeatFactory:new(spawnRate, meatTypes, meatTable) + local instance = setmetatable({}, MeatFactory) + instance.spawnRate = spawnRate + instance.meatTypes = meatTypes + instance.meatTable = meatTable + instance.spawnTimer = 0 + return instance +end + +function MeatFactory:update(dt) + self.spawnTimer = self.spawnTimer + dt + if self.spawnTimer >= self.spawnRate then + self:spawnMeat() + self.spawnTimer = 0 + end +end + +function MeatFactory:spawnMeat() + local meatType = self.meatTypes[math.random(#self.meatTypes)] + local meat = Meat:new() + meat:loadImages() -- Load images for the meat + meat.meatType = meatType + meat.currentImage = meat.images[meatType] + meat.value = self:getMeatValue(meatType) + -- Set the x and y coordinates to be within the bounds of the meat table + local meatTableX = (love.graphics.getWidth() - self.meatTable.image:getWidth()) / 2 + local meatTableY = (love.graphics.getHeight() - self.meatTable.image:getHeight()) / 2 + meat.x = meatTableX + (self.meatTable.image:getWidth() - meat.currentImage:getWidth()) - 15 + meat.y = meatTableY + (self.meatTable.image:getHeight() - meat.currentImage:getHeight()) - 30 + table.insert(instances.meats, meat) + +end + +function MeatFactory:getMeatValue(meatType) + -- You can implement a logic to determine the value of the meat based on its type + -- For example: + if meatType == "chicken" then + return 10 + elseif meatType == "cow" then + return 20 + elseif meatType == "pig" then + return 15 + end +end + +return MeatFactory \ No newline at end of file diff --git a/meat_tables.lua b/meat_tables.lua new file mode 100644 index 0000000..b17153f --- /dev/null +++ b/meat_tables.lua @@ -0,0 +1,26 @@ +MeatTable = {} +MeatTable.__index = MeatTable + +function MeatTable:new() + local instance = setmetatable({}, MeatTable) + instance.image = love.graphics.newImage("assets/images/env/newer_table.png") + instance.x = (love.graphics.getWidth() - instance.image:getWidth()) / 2; + instance.y = (love.graphics.getHeight() - instance.image:getHeight()) / 2; + return instance +end + +function MeatTable:draw() + local x = self.x + local image = self.image + local y = self.y + love.graphics.draw(image, x, y); +end + +function MeatTable:isHovering(x, y) + return x >= self.x and x <= self.x + self.image:getWidth() and y >= self.y and y <= self.y + self.image:getHeight() +end + + + + +return MeatTable \ No newline at end of file