From 9b579b16ebee76e6151ba27e329c9be7a303db07 Mon Sep 17 00:00:00 2001 From: Sabvente <sabvente@mail.com> Date: Fri, 9 May 2014 19:43:44 +0200 Subject: [PATCH] =?UTF-8?q?hangok=20meg=C3=A1ll=C3=ADt=C3=A1sa=20kil=C3=A9?= =?UTF-8?q?p=C3=A9sn=C3=A9l;=20Tower=20range=20fix=20#2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/engine/Engine.java | 12 ++++++++++++ src/view/Sounds.java | 11 +++++++++++ src/world/Tower.java | 11 ++++++++--- 3 files changed, 31 insertions(+), 3 deletions(-) diff --git a/src/engine/Engine.java b/src/engine/Engine.java index 013d0a1..a5bea63 100644 --- a/src/engine/Engine.java +++ b/src/engine/Engine.java @@ -4,6 +4,8 @@ import interfaces.ITickable; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import java.awt.event.WindowAdapter; +import java.awt.event.WindowEvent; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; @@ -81,6 +83,16 @@ public class Engine gameWindow.setSize(1000, 750); gameWindow.setResizable(false); gameWindow.setContentPane(new GamePanel(world)); + gameWindow.addWindowListener(new WindowAdapter() + { + @Override + public void windowClosing(WindowEvent e) + { + isGameRunning = false; + Sounds.StopAllSound(); + } + + }); isGameRunning = true; } diff --git a/src/view/Sounds.java b/src/view/Sounds.java index 537964e..e6fdadc 100644 --- a/src/view/Sounds.java +++ b/src/view/Sounds.java @@ -2,6 +2,7 @@ package view; import java.io.File; import java.io.IOException; +import java.util.ArrayList; import javax.sound.sampled.AudioInputStream; import javax.sound.sampled.AudioSystem; @@ -10,6 +11,7 @@ import javax.sound.sampled.LineUnavailableException; import javax.sound.sampled.UnsupportedAudioFileException; public class Sounds { + private static ArrayList<Clip> clips = new ArrayList<Clip>(); public static void LoopSound(String file) { AudioInputStream aStream = null; try { @@ -44,8 +46,17 @@ public class Sounds { clip.open(aStream); clip.setFramePosition(0); clip.start(); + clips.add(clip); } catch (LineUnavailableException | IOException e1) { e1.printStackTrace(); } } + + public static void StopAllSound() + { + for (Clip c : clips) { + c.stop(); + } + clips.clear(); + } } diff --git a/src/world/Tower.java b/src/world/Tower.java index 538bd11..1a33f39 100644 --- a/src/world/Tower.java +++ b/src/world/Tower.java @@ -76,9 +76,15 @@ public class Tower extends Placeable implements ITickable, IEnemyObserver, for (Field field : visibleFields) { if (field == null) continue; - newVisible.addAll(field.getNeighbours()); + for (Field neigh : field.getNeighbours()) { + if(!newVisible.contains(neigh)) + newVisible.add(neigh); + } + } + for (Field neigh : newVisible) { + if(!visibleFields.contains(neigh)) + visibleFields.add(neigh); } - visibleFields.addAll(newVisible); getVisibleFields(visibleFields, iterations - 1); } @@ -86,7 +92,6 @@ public class Tower extends Placeable implements ITickable, IEnemyObserver, enemiesInRange.clear(); ArrayList<Field> visibleFields = new ArrayList<Field>(); visibleFields.add(field); - getVisibleFields(visibleFields, range); if (fogDescends) getVisibleFields(visibleFields, range - 1); -- GitLab