From ffa35aec8980ce1ca5b0eab830efb7eb97bdbb0a Mon Sep 17 00:00:00 2001 From: 0x81c Date: Sun, 15 Mar 2015 08:00:59 -0400 Subject: [PATCH] player ca Player.static.sounds = { switchFail = love.audio.newSource(sounds/switch_fail.wav), switchSuccess = love.audio.newSource(sounds/switch_success.wav) } --- TODO | 13 +++++++++---- door.lua | 1 - player.lua | 16 ++++++++++++++++ room.lua | 38 +++++++++++++++++++++----------------- sounds/switch_fail.wav | Bin 0 -> 14612 bytes sounds/switch_success.wav | Bin 0 -> 5202 bytes 6 files changed, 46 insertions(+), 22 deletions(-) create mode 100644 sounds/switch_fail.wav create mode 100644 sounds/switch_success.wav diff --git a/TODO b/TODO index 584f410..07ef9ab 100644 --- a/TODO +++ b/TODO @@ -1,8 +1,13 @@ --write ruby script to output json table for processed art --fix collision + +FAILED -write ruby script to output json table for processed art + +DOnE -fix collision -flesh out full mythos, i.e.: where is the player, why is the player here, what is the player trying to get, who is here, what do they thin_ of the player's presence (are they happy? is the player an old face to them?) -decide on dialog trees --should puzzles be sort of secondary to exploration? li_e should most of the game be weird fun and interaction, and then the 'off the rails' parts should be puzzles??? + +YES -should puzzles be sort of secondary to exploration? li_e should most of the game be weird fun and interaction, and then the 'off the rails' parts should be puzzles??? -all of the npcs should be stuc_ in a cycle of whatever they're doing, focused on it, hav always been focused on it, maybe it has to do w/ the fact that they are always doing 'night activities' \ No newline at end of file +all of the npcs should be stuc_ in a cycle of whatever they're doing, focused on it, hav always been focused on it, maybe it has to do w/ the fact that they are always doing 'night activities' + +ma_e sprites static class vars instead of globals \ No newline at end of file diff --git a/door.lua b/door.lua index 6e664de..df0e35a 100644 --- a/door.lua +++ b/door.lua @@ -42,7 +42,6 @@ end function Door:setColors(colors) local offColors = {} for color, off in pairs(colors) do - print(color, active) if off then if self.colors[color] then self.colors[color] = false end table.insert(offColors, color) diff --git a/player.lua b/player.lua index 9f355fd..2537b52 100644 --- a/player.lua +++ b/player.lua @@ -2,6 +2,11 @@ require "entity" Player = class("Player", Entity) +Player.static.sounds = { + switchFail = love.audio.newSource("sounds/switch_fail.wav"), + switchSuccess = love.audio.newSource("sounds/switch_success.wav") +} + function Player:initialize(x, y, activeColors) Entity.initialize(self, { x = x, @@ -25,6 +30,17 @@ function Player:update() end +function Player:playSwitchSound(success) + local sound + if success then + sound = Player.sounds.switchSuccess + else + sound = Player.sounds.switchFail + end + sound:stop() + sound:play() +end + function Player:draw() for _, color in ipairs(self.activeColors) do love.graphics.setColor(gColor[color]:set()) diff --git a/room.lua b/room.lua index 40979c5..9e635c5 100644 --- a/room.lua +++ b/room.lua @@ -25,13 +25,12 @@ function Room:initialize(t) red = true, green = true, blue = true } - -- for color, coords in pairs(t.player) do -- self.player[color] = Player:new(coords.x, coords.y, color) -- self.activeColors[color] = true -- end - for i=1, 3 do + for i=1, 5 do local x, y = randomPosition() local door = Door:new(x, y, self.colorsPlayerHas) table.insert(self.doors, door) @@ -41,12 +40,12 @@ function Room:initialize(t) end end - -- for i=0, 5 do - -- local x, y = math.random(1, gridWidth), math.random(1, gridHeight) - -- for color, active in pairs(self.activeColors) do - -- self.collideables[color]["w: " .. x .. ", " .. y] = Wall:new(x, y, color) - -- end - -- end + for i=0, 5 do + local x, y = randomPosition() + for color, active in pairs(self.activeColors) do + self.collideables[color]["w: " .. x .. ", " .. y] = Box:new(x, y, color) + end + end for i = 0, 5 do local x, y = randomPosition() @@ -301,17 +300,22 @@ function Room:movePlayer(key) end end -function Room:attemptPush(dirVector) - -- should return array of things to push or nil/falsey value -end - - function Room:switchPlayerColor(color) - if color == "white" then - self.player:setActiveColors({"red", "green", "blue"}) - else - self.player:setActiveColors({color}) + local colors + if color == "white" then colors = {"red", "green", "blue"} else colors = {color} end + + local canSwitch = true + local playerPos = self.player:getGridPos() + + for _, color in ipairs(colors) do + if self:getCellInMatrix(self.collidableMatrices[color], playerPos) then + canSwitch = false + end end + if canSwitch then + self.player:setActiveColors(colors) + end + self.player:playSwitchSound(canSwitch) end function Room:setActiveColor(color, bool) diff --git a/sounds/switch_fail.wav b/sounds/switch_fail.wav new file mode 100644 index 0000000000000000000000000000000000000000..a5c8717c898d7c350657ed9d1335e1ee289e4527 GIT binary patch literal 14612 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 literal 0 HcmV?d00001