summaryrefslogtreecommitdiff
path: root/src/sliceitoff/stats/stats.py
blob: 79da2c9b8f23fac06d56e077a4dc5aad9293374a (plain)
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
class Stats:
    score = 0
    level = 0
    bonus = 0
    lives = 0
    enemies = 0
    percent = 0
    field_count = 0
    bgcolor = (64,0,0,255)
    bordercolor = (0,0,0,255)
        
    @staticmethod
    def new_game():
        __class__.score = 0
        __class__.level = 1
        __class__.bonus = 20_000
        __class__.lives = 3
        __class__.percent = 100
        __class__.field_count = 1
        __class__.enemies = 3

    @staticmethod
    def level_up():
        __class__.score += __class__.calc_bonus()[0]
        __class__.bonus = 20_000
        __class__.percent = 100
        __class__.field_count = 1
        __class__.level += 1
        __class__.enemies = 3 + (__class__.level - 1) * 2
    
    @staticmethod
    def lose_life():
        __class__.lives -= 1
        return not __class__.lives
        
    @staticmethod
    def add_score(score_to_add):
        __class__.score += score_to_add
        __class__.score = max(0, __class__.score)

    @staticmethod
    def calc_bonus():
        level = __class__.level * 3_000
        life = __class__.lives * 1_000
        time = __class__.level * __class__.bonus
        area = __class__.level * int(max(20-__class__.percent,0) * 1_000)
        herd = (__class__.enemies - __class__.field_count) * 1_000
        total = level + area + time + life + herd
        return total, level, life, time, area, herd

    @staticmethod
    def update_bonus(dt):
        __class__.bonus = max(0, __class__.bonus - dt)