47 lines
832 B
Go
47 lines
832 B
Go
package pncdsl
|
|
|
|
type Inventory struct {
|
|
items []string
|
|
selected string
|
|
}
|
|
|
|
func NewInventory() *Inventory { return &Inventory{} }
|
|
|
|
func (i *Inventory) Add(name string) {
|
|
if i.Has(name) {
|
|
return
|
|
}
|
|
i.items = append(i.items, name)
|
|
}
|
|
|
|
func (i *Inventory) Remove(name string) {
|
|
for k, n := range i.items {
|
|
if n == name {
|
|
i.items = append(i.items[:k], i.items[k+1:]...)
|
|
if i.selected == name {
|
|
i.selected = ""
|
|
}
|
|
return
|
|
}
|
|
}
|
|
}
|
|
|
|
func (i *Inventory) Has(name string) bool {
|
|
for _, n := range i.items {
|
|
if n == name {
|
|
return true
|
|
}
|
|
}
|
|
return false
|
|
}
|
|
|
|
func (i *Inventory) Select(name string) {
|
|
if name != "" && !i.Has(name) {
|
|
return
|
|
}
|
|
i.selected = name
|
|
}
|
|
|
|
func (i *Inventory) Selected() string { return i.selected }
|
|
func (i *Inventory) Items() []string { return append([]string(nil), i.items...) }
|