Add item deck.

This commit is contained in:
shru 2018-12-14 15:38:35 -05:00
parent ea1d0720fc
commit 768895badc
3 changed files with 71 additions and 20 deletions

21
src/database/items.lua Normal file
View file

@ -0,0 +1,21 @@
return {
-- Weapons
wPolar = {
name = "Polar Star",
map = "Pole",
getText = "Got the =Polar Star=!",
command = "<AM+0002:0000",
displayCmd = "<GIT0002",
kind = "weapon",
},
-- Items
iPanties = {
name = "Curly's Panties",
map = "CurlyS",
-- getText = "Found =Curly's Underwear=.",
getText = "Found =Curly's Panties=.",
command = "<IT+0035",
displayCmd = "<GIT1035",
kind = "item",
},
}

45
src/item_deck.lua Normal file
View file

@ -0,0 +1,45 @@
local C = Class:extend()
local ITEM_DATA = require 'database.items'
function C:new()
self._left = {}
self._indexMap = {}
for k, v in pairs(ITEM_DATA) do
local item = _.clone(v)
table.insert(self._left, item)
self._indexMap[item] = #self._left
end
end
local function _filterAny(item) return true end
local function _filterWeapon(item) return item.kind == "weapon" end
function C:getAny()
return self:_getItem(_filterAny)
end
function C:getWeapon()
return self:_getItem(_filterWeapon)
end
function C:_getItem(filterFn)
-- Filter down to only applicable items.
local applicable = {}
for _, item in ipairs(self._left) do
if filterFn(item) then
table.insert(applicable, item)
end
end
assert(#applicable >= 1, 'No applicable items!')
-- Select an item.
local selected = _.sample(applicable)
local index = self._indexMap[selected]
table.remove(self._left, index)
self._indexMap[selected] = nil
return selected
end
return C

View file

@ -20,26 +20,6 @@ function logNotice(...) _log(3, 'NOTICE: ', ...) end
function logInfo(...) _log(4, 'INFO: ', ...) end function logInfo(...) _log(4, 'INFO: ', ...) end
function logDebug(...) _log(5, 'DEBUG: ', ...) end function logDebug(...) _log(5, 'DEBUG: ', ...) end
local ITEM_DATA = {
-- Weapons
wPolar = {
name = "Polar Star",
map = "Pole",
getText = "Got the =Polar Star=!",
command = "<AM+0002:0000",
displayCmd = "<GIT0002",
},
-- Items
iPanties = {
name = "Curly's Panties",
map = "CurlyS",
-- getText = "Found =Curly's Underwear=.",
getText = "Found =Curly's Panties=.",
command = "<IT+0035",
displayCmd = "<GIT1035",
},
}
local TSC_FILES = { local TSC_FILES = {
'Pole.tsc', 'Pole.tsc',
} }
@ -70,6 +50,11 @@ function love.directorydropped(path)
-- decoded = stringReplace(decoded, ITEM_DATA.wPolar.displayCmd, ITEM_DATA.iPanties.displayCmd) -- decoded = stringReplace(decoded, ITEM_DATA.wPolar.displayCmd, ITEM_DATA.iPanties.displayCmd)
end end
local ItemDeck = require 'item_deck'
local itemDeck = ItemDeck()
print(Serpent.line(itemDeck:getWeapon()))
print(Serpent.line(itemDeck:getAny()))
tscFiles['Pole.tsc']:writeTo('Testing.tsc') tscFiles['Pole.tsc']:writeTo('Testing.tsc')
-- Unmount -- Unmount