Server & Game refactor basics
This commit is contained in:
37
items/inventory.py
Normal file
37
items/inventory.py
Normal file
@@ -0,0 +1,37 @@
|
||||
from serializable import Serializable
|
||||
from items.item import Item
|
||||
|
||||
class Inventory(Serializable):
|
||||
def __init__(self, max_capacity:int = 5):
|
||||
super().__init__()
|
||||
self.items:list[Item] = []
|
||||
self.max_capacity = max_capacity # Maximum umber of items
|
||||
|
||||
def current_capacity(self):
|
||||
return len(self.items)
|
||||
|
||||
def list_items(self):
|
||||
s_items = ''
|
||||
for item in self.items:
|
||||
s_items += item.__str__() + '; '
|
||||
return s_items
|
||||
|
||||
def add_item(self, added_item:Item):
|
||||
if self.current_capacity() == self.max_capacity:
|
||||
return f'The inventory is full!'
|
||||
else:
|
||||
self.items.append(added_item)
|
||||
return f'{added_item.name} added to inventory. Current number of items: {self.current_capacity()}/{self.max_capacity}'
|
||||
|
||||
def remove_item(self, item_id:str):
|
||||
searched_item = self.get_item(item_id=item_id)
|
||||
if searched_item:
|
||||
return f'{searched_item.name} was removed from the inventory.'
|
||||
raise ValueError(f'Item #{item_id} is not present within the inventory!')
|
||||
|
||||
def get_item(self, item_id:str):
|
||||
for item in self.items:
|
||||
if item.id == item_id:
|
||||
return item
|
||||
# The item was not found
|
||||
return None
|
||||
35
items/item.py
Normal file
35
items/item.py
Normal file
@@ -0,0 +1,35 @@
|
||||
from serializable import Serializable
|
||||
|
||||
import uuid
|
||||
|
||||
class Item(Serializable):
|
||||
def __init__(self,name:str, description:str, stat_modifier:str):
|
||||
super().__init__()
|
||||
self.id = str(uuid.uuid4())
|
||||
self.name = name
|
||||
self.description = description
|
||||
self.stat_modifier = stat_modifier
|
||||
|
||||
def __str__(self):
|
||||
return f"{self.name}: {self.description}"
|
||||
|
||||
class Equippable(Item):
|
||||
def __init__(self, name, description, stat_modifier, equipped:bool):
|
||||
super().__init__(name, description, stat_modifier)
|
||||
self.equipped = equipped
|
||||
|
||||
def equip(self):
|
||||
self.equipped = True
|
||||
|
||||
def unequip(self):
|
||||
self.equipped = False
|
||||
|
||||
class Consummable(Item):
|
||||
def __init__(self, name, description, stat_modifier, nb_of_uses:int):
|
||||
super().__init__(name, description, stat_modifier)
|
||||
self.nb_of_uses = nb_of_uses
|
||||
|
||||
def consumme(self):
|
||||
if self.nb_of_uses > 0:
|
||||
self.nb_of_uses -= 1
|
||||
|
||||
Reference in New Issue
Block a user