Refactor code structure for improved readability and maintainability
This commit is contained in:
+51
-10
@@ -24,24 +24,43 @@ class Marine(Entity):
|
||||
self.selected = True
|
||||
# Play a random voice response when selected
|
||||
sound_file = f"marine/tmawht0{random.randint(0, 3)}.wav"
|
||||
print(f"Playing sound: {sound_file}")
|
||||
self.graphics.play_sound(sound_file)
|
||||
if not self.engine.cmd_sound_effects:
|
||||
self.graphics.play_sound(sound_file)
|
||||
self.engine.cmd_sound_effects = True
|
||||
|
||||
def move(self):
|
||||
# Aquisisci la posizione dell'unità
|
||||
self.iso_x, self.iso_y = self.graphics.iso_transform(self.x, self.y)
|
||||
self.position = (self.x, self.y)
|
||||
|
||||
if self.target_cell != (self.x, self.y) and self.selected:
|
||||
# Controlla se l'unità èha raggiunto la cella di destinazione
|
||||
if self.target_cell != (self.x, self.y):
|
||||
# Contolla che la cella target non sia occupata da una unità che abbia quella cella come target
|
||||
if self.engine.entities_positions.get(self.target_cell):
|
||||
if self.engine.entities_positions.get(self.target_cell).target_cell == self.target_cell and self.engine.entities_positions.get(self.target_cell) != self:
|
||||
#calcola un nuovo target
|
||||
self.target_cell = self.graphics.get_next_cell(self.target_cell, self.position, ignore_units=True)
|
||||
if not self.target_cell:
|
||||
self.target_cell = self.position
|
||||
# Se non ci sono celle disponibili, ferma l'unità
|
||||
return
|
||||
# Aquisisci la posizione a schermo della cella di destinazione e disegna lì un quadrato rosso
|
||||
target_iso_x, target_iso_y = self.graphics.iso_transform(self.target_cell[0], self.target_cell[1])
|
||||
self.graphics.draw_square(target_iso_x, target_iso_y, color=(255, 0, 0, 255), margin=6)
|
||||
if self.position != self.target_cell:
|
||||
if self.position == self.next_cell:
|
||||
self.next_cell = self.graphics.get_next_cell(self.next_cell, self.target_cell)
|
||||
|
||||
# Se la cella successiva è la stessa posizione dell'unità, calcola la prossima cella
|
||||
# (in caso contrario sarebbe ancora in movimento parziale)
|
||||
if self.position == self.next_cell:
|
||||
self.next_cell = self.graphics.get_next_cell(self.next_cell, self.target_cell)
|
||||
# Se l'algoritmo ha efettivamente trovato una cella, occupa la posizione
|
||||
if self.next_cell:
|
||||
self.engine.entities_positions[self.next_cell] = self
|
||||
if self.engine.entities_positions.get(self.target_cell) is not None:
|
||||
if self.engine.entities_positions.get(self.target_cell) != self:
|
||||
self.target_cell = self.graphics.find_neighbors(self.target_cell)[0] or self.position
|
||||
# Se la cella di destinazione è occupata da un'altra entità, fermati
|
||||
else:
|
||||
self.action = "idle"
|
||||
self.next_cell = self.position
|
||||
return
|
||||
|
||||
# Set walking animation and direction
|
||||
self.action = "walk"
|
||||
self.direction = self.graphics.get_direction((self.x, self.y), self.next_cell)
|
||||
@@ -67,5 +86,27 @@ class Marine(Entity):
|
||||
self.action = "idle"
|
||||
|
||||
def set_target_cell(self, target_cell):
|
||||
# Prima verifica che le coordinate siano all'interno dei limiti della mappa
|
||||
map_height = len(self.engine.map)
|
||||
map_width = len(self.engine.map[0])
|
||||
|
||||
x, y = target_cell
|
||||
|
||||
# Verifica che le coordinate siano valide
|
||||
if not (0 <= y < map_height and 0 <= x < map_width):
|
||||
if not self.engine.cmd_sound_effects:
|
||||
self.engine.graphics.play_sound("sounds/perror.wav")
|
||||
self.engine.cmd_sound_effects = True
|
||||
return
|
||||
|
||||
# Ora puoi controllare il contenuto della cella in sicurezza
|
||||
if self.engine.map[y][x]["wall"]:
|
||||
if not self.engine.cmd_sound_effects:
|
||||
self.engine.graphics.play_sound("sounds/perror.wav")
|
||||
self.engine.cmd_sound_effects = True
|
||||
return
|
||||
|
||||
self.target_cell = target_cell
|
||||
self.graphics.play_sound(f"marine/tmayes0{random.randint(0, 3)}.wav")
|
||||
if not self.engine.cmd_sound_effects:
|
||||
self.graphics.play_sound(f"marine/tmayes0{random.randint(0, 3)}.wav")
|
||||
self.engine.cmd_sound_effects = True
|
||||
Reference in New Issue
Block a user