-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathSpell.py
More file actions
61 lines (50 loc) · 1.98 KB
/
Spell.py
File metadata and controls
61 lines (50 loc) · 1.98 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#TODO! Сделать AOE = TRUE/FALSE
# Aoe true false
# Баффы должны действовать опр кол-во ходов, так что в бою нужно проверять не нужно ли снять их действие
class Spell:
def __init__(self,name,mpCost):
self.name = name
self.mpCost = mpCost
## Применяет spell на target
#TODO! Target может быть списком если это AOE spell
## Переопределяется в наследниках (Зависит от типа заклинания)
def use(self, target):
pass
##todo! Проверяет можно ли использовать спелл основываясь на requirements (Мана кост )
def canUse(self, hero):
pass
#def isMultiTarget(self):
# return
#Переопределяется в наследниках (Зависит от типа заклинания)
def __str__(self):
pass
##
class SpellBook:#TODO сделать ограничение в количество которое можно носить с собой
def __init__(self):
self.book = []
## Добавлет spell в книгу
def addSpell(self, spell):
self.book.append(spell)
self.__sort()
## Уберает spell из книги
#Question нужно ли?
def removeSpell(self, spell):
pass
## Возвращает список всех заклинаний в книге
def items(self):
return self.book
## Возвращает True если книга заклинаний пуста
def isEmpty(self):
return not len(self.book)
##Question Может сделать сортировку по типу или стоимости маны?
def __sort(self):
def name(spell):
return spell.name
self.book.sort(key = name)
## Возвращает список всех заклинаний в виде
def __str__(self):
if self.book:
result = "\n".join(map(str, self.book))
else: #Spell book is empty
result = "empty"
return result