This repository was archived by the owner on Feb 11, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.py
116 lines (93 loc) · 3.82 KB
/
main.py
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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
import pygame
from sys import exit
import scripts.pieces as pieces
import scripts.board as board
import scripts.config_manager as config_manager
import scripts.fullscreen_manager as fullscreen_manager
import scripts.mouse as mouse_util
import scripts.pieces_queue as pieces_queue
from scripts.ability import Ability
from scripts.game_over import GameOverManager
from scripts.label import Label
from scripts.meter import MeterWithBubbles
from scripts.score import ScoreManager
from scripts.vfx import ParticleHandler
from scripts.time import Time
print("Loading the game...\nPlease wait. :)")
pygame.init()
config_manager.load()
if config_manager.config["screen"]["fullscreen"]:
if config_manager.config["screen"]["exclusive"]:
final_screen = fullscreen_manager.exclusive_fullscreen()
else:
final_screen = fullscreen_manager.maximized_window()
else:
final_screen = fullscreen_manager.windowed()
screen = pygame.Surface((160, 90))
pygame.display.set_caption("Endless Fusion")
clock = pygame.time.Clock()
FPS = 60
background = pygame.image.load("sprites/playing board.png")
order = pygame.image.load("sprites/order.png")
order_activated = pygame.image.load("sprites/order activated.png")
game_icon = pygame.image.load('sprites/icon.png')
pygame.display.set_icon(game_icon)
font = pygame.font.Font('fonts/smallest_pixel-7.ttf', 10)
ParticleHandler().font = font
ScoreManager().label = Label(font, pygame.Color("0xbf3fb3"), (155, 2), "topright")
ScoreManager().score = 0
ability = Ability(20)
game_board = board.Board(ability)
p_queue = pieces_queue.PiecesQueue()
meter = MeterWithBubbles(pygame.mask.from_surface(pygame.image.load("sprites/meter/mask.png")),
pygame.image.load("sprites/meter/fluid.png"),
pygame.image.load("sprites/meter/bubble.png"), 5)
game_over_manager = GameOverManager()
def restart():
print("Restart")
ScoreManager().score = 0
ability.energy = 0
global game_board
del game_board.pieces
game_board = board.Board(ability)
game_over_manager.is_game_over = False
global p_queue
del p_queue
p_queue = pieces_queue.PiecesQueue()
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
exit()
if event.type == pygame.MOUSEBUTTONUP:
if not game_over_manager.is_game_over:
pos = mouse_util.screen_to_game_pos(pygame.mouse.get_pos(), final_screen.get_size(), screen.get_size())
grid_pos = mouse_util.game_to_board_pos(pos, (16, 16), (5, 5))
if mouse_util.check_if_in_bound(grid_pos, (4, 4)):
if not game_board.piece_exists_at_pos(grid_pos):
spawned_piece_type = p_queue.pop()
game_board.append_piece(pieces.Piece(spawned_piece_type, grid_pos[0], grid_pos[1]))
if 100 < pos[0] < 160:
if 31 < pos[1] < 91:
if ability.can_be_activated():
ability.reset()
game_board.upgrade_all()
print("ABILITY USED!!!!")
elif game_over_manager.animation_complete():
restart()
screen.fill("Black")
screen.blit(background, (0, 0))
meter.update(ability.get_coefficient())
meter.render(screen, (94, 25))
if not ability.can_be_activated():
screen.blit(order, (100, 31))
else:
screen.blit(order_activated, (100, 31))
ScoreManager().render(screen)
ParticleHandler().update_and_render(screen)
game_board.render(screen)
p_queue.render(screen, (90, 3), 3)
game_over_manager.render(screen)
final_screen.blit(pygame.transform.scale(screen, final_screen.get_size()), (0, 0))
pygame.display.update()
Time.delta_time = clock.tick(FPS) / 1000