summary refs log tree commit diff stats
path: root/src/com/fourisland
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/fourisland')
-rw-r--r--src/com/fourisland/fourpuzzle/database/Transitions.java10
-rwxr-xr-xsrc/com/fourisland/fourpuzzle/gamestate/GameOverGameState.java9
-rwxr-xr-xsrc/com/fourisland/fourpuzzle/gamestate/TitleScreenGameState.java9
-rwxr-xr-xsrc/com/fourisland/fourpuzzle/gamestate/mapview/event/SpecialEvent.java24
-rw-r--r--src/com/fourisland/fourpuzzle/transition/FadeTransition.java92
-rwxr-xr-xsrc/com/fourisland/fourpuzzle/util/ObjectLoader.java4
-rw-r--r--src/com/fourisland/fourpuzzle/util/PauseTimer.java13
7 files changed, 148 insertions, 13 deletions
diff --git a/src/com/fourisland/fourpuzzle/database/Transitions.java b/src/com/fourisland/fourpuzzle/database/Transitions.java index e45ad6d..98345a9 100644 --- a/src/com/fourisland/fourpuzzle/database/Transitions.java +++ b/src/com/fourisland/fourpuzzle/database/Transitions.java
@@ -5,6 +5,7 @@
5 5
6package com.fourisland.fourpuzzle.database; 6package com.fourisland.fourpuzzle.database;
7 7
8import com.fourisland.fourpuzzle.transition.FadeTransition;
8import com.fourisland.fourpuzzle.transition.InTransition; 9import com.fourisland.fourpuzzle.transition.InTransition;
9import com.fourisland.fourpuzzle.transition.MultidirectionalTransition; 10import com.fourisland.fourpuzzle.transition.MultidirectionalTransition;
10import com.fourisland.fourpuzzle.transition.OutTransition; 11import com.fourisland.fourpuzzle.transition.OutTransition;
@@ -18,8 +19,15 @@ import com.fourisland.fourpuzzle.transition.TransitionUnsupportedException;
18 * @author hatkirby 19 * @author hatkirby
19 */ 20 */
20public enum Transitions { 21public enum Transitions {
22 TitleExit(TransitionDirection.Out, new FadeTransition(TransitionDirection.Out)),
23 TitleToMap(TransitionDirection.In, new FadeTransition(TransitionDirection.In)),
21 MapExit(TransitionDirection.Out, new SquareTransition(TransitionDirection.Out)), 24 MapExit(TransitionDirection.Out, new SquareTransition(TransitionDirection.Out)),
22 MapEnter(TransitionDirection.In, new SquareTransition(TransitionDirection.In)); 25 MapEnter(TransitionDirection.In, new SquareTransition(TransitionDirection.In)),
26 MapToTitle(TransitionDirection.Out, new FadeTransition(TransitionDirection.Out)),
27 TitleEnter(TransitionDirection.In, new FadeTransition(TransitionDirection.In)),
28 MapToGameOver(TransitionDirection.Out, new FadeTransition(TransitionDirection.Out)),
29 GameOverEnter(TransitionDirection.In, new FadeTransition(TransitionDirection.In)),
30 GameOverToTitle(TransitionDirection.Out, new FadeTransition(TransitionDirection.Out));
23 31
24 private final TransitionDirection dir; 32 private final TransitionDirection dir;
25 private Transition trans; 33 private Transition trans;
diff --git a/src/com/fourisland/fourpuzzle/gamestate/GameOverGameState.java b/src/com/fourisland/fourpuzzle/gamestate/GameOverGameState.java index 459f730..ab1b9bb 100755 --- a/src/com/fourisland/fourpuzzle/gamestate/GameOverGameState.java +++ b/src/com/fourisland/fourpuzzle/gamestate/GameOverGameState.java
@@ -11,6 +11,7 @@ import com.fourisland.fourpuzzle.Display;
11import com.fourisland.fourpuzzle.Game; 11import com.fourisland.fourpuzzle.Game;
12import com.fourisland.fourpuzzle.SaveFile; 12import com.fourisland.fourpuzzle.SaveFile;
13import com.fourisland.fourpuzzle.database.Music; 13import com.fourisland.fourpuzzle.database.Music;
14import com.fourisland.fourpuzzle.database.Transitions;
14import com.fourisland.fourpuzzle.transition.SquareTransition; 15import com.fourisland.fourpuzzle.transition.SquareTransition;
15import com.fourisland.fourpuzzle.transition.TransitionDirection; 16import com.fourisland.fourpuzzle.transition.TransitionDirection;
16import com.fourisland.fourpuzzle.util.ObjectLoader; 17import com.fourisland.fourpuzzle.util.ObjectLoader;
@@ -42,12 +43,18 @@ public class GameOverGameState implements GameState {
42 new Thread(new Runnable() { 43 new Thread(new Runnable() {
43 public void run() { 44 public void run() {
44 try { 45 try {
45 Display.transition(new SquareTransition(TransitionDirection.Out)); 46 Display.transition(Database.getTransition(Transitions.GameOverToTitle));
46 } catch (InterruptedException ex) { 47 } catch (InterruptedException ex) {
47 Thread.currentThread().interrupt(); 48 Thread.currentThread().interrupt();
48 } 49 }
49 50
50 Game.setGameState(new TitleScreenGameState()); 51 Game.setGameState(new TitleScreenGameState());
52
53 try {
54 Display.transition(Database.getTransition(Transitions.TitleEnter));
55 } catch (InterruptedException ex) {
56 Thread.currentThread().interrupt();
57 }
51 } 58 }
52 }).start(); 59 }).start();
53 } 60 }
diff --git a/src/com/fourisland/fourpuzzle/gamestate/TitleScreenGameState.java b/src/com/fourisland/fourpuzzle/gamestate/TitleScreenGameState.java index d5b4f90..fe8b1ed 100755 --- a/src/com/fourisland/fourpuzzle/gamestate/TitleScreenGameState.java +++ b/src/com/fourisland/fourpuzzle/gamestate/TitleScreenGameState.java
@@ -9,10 +9,9 @@ import com.fourisland.fourpuzzle.database.Database;
9import com.fourisland.fourpuzzle.*; 9import com.fourisland.fourpuzzle.*;
10import com.fourisland.fourpuzzle.database.Music; 10import com.fourisland.fourpuzzle.database.Music;
11import com.fourisland.fourpuzzle.database.Sound; 11import com.fourisland.fourpuzzle.database.Sound;
12import com.fourisland.fourpuzzle.database.Transitions;
12import com.fourisland.fourpuzzle.database.Vocabulary; 13import com.fourisland.fourpuzzle.database.Vocabulary;
13import com.fourisland.fourpuzzle.gamestate.mapview.MapViewGameState; 14import com.fourisland.fourpuzzle.gamestate.mapview.MapViewGameState;
14import com.fourisland.fourpuzzle.transition.SquareTransition;
15import com.fourisland.fourpuzzle.transition.TransitionDirection;
16import com.fourisland.fourpuzzle.util.ObjectLoader; 15import com.fourisland.fourpuzzle.util.ObjectLoader;
17import com.fourisland.fourpuzzle.util.PauseTimer; 16import com.fourisland.fourpuzzle.util.PauseTimer;
18import com.fourisland.fourpuzzle.window.ChoiceWindow; 17import com.fourisland.fourpuzzle.window.ChoiceWindow;
@@ -59,7 +58,7 @@ public class TitleScreenGameState implements GameState {
59 new Thread(new Runnable() { 58 new Thread(new Runnable() {
60 public void run() { 59 public void run() {
61 try { 60 try {
62 Display.transition(new SquareTransition(TransitionDirection.Out)); 61 Display.transition(Database.getTransition(Transitions.TitleExit));
63 } catch (InterruptedException ex) { 62 } catch (InterruptedException ex) {
64 Thread.currentThread().interrupt(); 63 Thread.currentThread().interrupt();
65 } 64 }
@@ -67,7 +66,7 @@ public class TitleScreenGameState implements GameState {
67 Game.setGameState(new MapViewGameState("TestMap", 1, 2)); 66 Game.setGameState(new MapViewGameState("TestMap", 1, 2));
68 67
69 try { 68 try {
70 Display.transition(new SquareTransition(TransitionDirection.In)); 69 Display.transition(Database.getTransition(Transitions.TitleToMap));
71 } catch (InterruptedException ex) { 70 } catch (InterruptedException ex) {
72 Thread.currentThread().interrupt(); 71 Thread.currentThread().interrupt();
73 } 72 }
@@ -81,7 +80,7 @@ public class TitleScreenGameState implements GameState {
81 new Thread(new Runnable() { 80 new Thread(new Runnable() {
82 public void run() { 81 public void run() {
83 try { 82 try {
84 Display.transition(new SquareTransition(TransitionDirection.Out)); 83 Display.transition(Database.getTransition(Transitions.TitleExit));
85 } catch (InterruptedException ex) { 84 } catch (InterruptedException ex) {
86 Thread.currentThread().interrupt(); 85 Thread.currentThread().interrupt();
87 } 86 }
diff --git a/src/com/fourisland/fourpuzzle/gamestate/mapview/event/SpecialEvent.java b/src/com/fourisland/fourpuzzle/gamestate/mapview/event/SpecialEvent.java index 94d2b16..9336616 100755 --- a/src/com/fourisland/fourpuzzle/gamestate/mapview/event/SpecialEvent.java +++ b/src/com/fourisland/fourpuzzle/gamestate/mapview/event/SpecialEvent.java
@@ -8,6 +8,8 @@ package com.fourisland.fourpuzzle.gamestate.mapview.event;
8import com.fourisland.fourpuzzle.database.Database; 8import com.fourisland.fourpuzzle.database.Database;
9import com.fourisland.fourpuzzle.*; 9import com.fourisland.fourpuzzle.*;
10import com.fourisland.fourpuzzle.database.Transitions; 10import com.fourisland.fourpuzzle.database.Transitions;
11import com.fourisland.fourpuzzle.gamestate.GameOverGameState;
12import com.fourisland.fourpuzzle.gamestate.TitleScreenGameState;
11import com.fourisland.fourpuzzle.gamestate.mapview.MapViewGameState; 13import com.fourisland.fourpuzzle.gamestate.mapview.MapViewGameState;
12import com.fourisland.fourpuzzle.gamestate.mapview.event.specialmove.MoveEvent; 14import com.fourisland.fourpuzzle.gamestate.mapview.event.specialmove.MoveEvent;
13import com.fourisland.fourpuzzle.gamestate.mapview.event.specialmove.MoveEventThread; 15import com.fourisland.fourpuzzle.gamestate.mapview.event.specialmove.MoveEventThread;
@@ -148,18 +150,32 @@ public class SpecialEvent {
148 150
149 /** 151 /**
150 * Triggers the Game Over sequence 152 * Triggers the Game Over sequence
153 *
154 * @throws InterruptedException
151 */ 155 */
152 public void GameOver() 156 public void GameOver() throws InterruptedException
153 { 157 {
154 throw new UnsupportedOperationException("Not yet implemented"); 158 Display.transition(Database.getTransition(Transitions.MapToGameOver));
159
160 Audio.stopMusic();
161 Game.setGameState(new GameOverGameState());
162
163 Display.transition(Database.getTransition(Transitions.GameOverEnter));
155 } 164 }
156 165
157 /** 166 /**
158 * Returns the player to the Title Screen 167 * Returns the player to the Title Screen
168 *
169 * @throws InterruptedException
159 */ 170 */
160 public void TitleScreen() 171 public void TitleScreen() throws InterruptedException
161 { 172 {
162 throw new UnsupportedOperationException("Not yet implemented"); 173 Display.transition(Database.getTransition(Transitions.MapToTitle));
174
175 Audio.stopMusic();
176 Game.setGameState(new TitleScreenGameState());
177
178 Display.transition(Database.getTransition(Transitions.TitleEnter));
163 } 179 }
164 180
165 private boolean startedTransition = false; 181 private boolean startedTransition = false;
diff --git a/src/com/fourisland/fourpuzzle/transition/FadeTransition.java b/src/com/fourisland/fourpuzzle/transition/FadeTransition.java new file mode 100644 index 0000000..a571791 --- /dev/null +++ b/src/com/fourisland/fourpuzzle/transition/FadeTransition.java
@@ -0,0 +1,92 @@
1/*
2 * To change this template, choose Tools | Templates
3 * and open the template in the editor.
4 */
5
6package com.fourisland.fourpuzzle.transition;
7
8import com.fourisland.fourpuzzle.Display;
9import com.fourisland.fourpuzzle.Game;
10import com.fourisland.fourpuzzle.util.PauseTimer;
11import java.awt.Color;
12import java.awt.Graphics2D;
13import java.awt.image.BufferedImage;
14
15/**
16 *
17 * @author hatkirby
18 */
19public class FadeTransition implements MultidirectionalTransition {
20
21 private TransitionDirection direction;
22 public FadeTransition(TransitionDirection direction)
23 {
24 this.direction = direction;
25 }
26
27 public TransitionDirection getDirection()
28 {
29 return direction;
30 }
31
32 private int ticks = 750 / Game.FPS;
33 private PauseTimer pt = new PauseTimer(ticks);
34 public boolean render(Graphics2D g)
35 {
36 BufferedImage temp = Display.createCanvas(Game.WIDTH, Game.HEIGHT);
37 double alpha = 1.0 * pt.getTimer() / ticks * 0.75;
38
39 for (int i=0;i<Game.WIDTH;i++)
40 {
41 for (int j=0;j<Game.HEIGHT;j++)
42 {
43 if (direction == TransitionDirection.Out)
44 {
45 temp.setRGB(i, j, combine(preTransition.getRGB(i, j), Color.BLACK.getRGB(), alpha));
46 } else if (direction == TransitionDirection.In)
47 {
48 temp.setRGB(i, j, combine(preTransition.getRGB(i, j), postTransition.getRGB(i, j), alpha));
49 }
50 }
51 }
52
53 g.drawImage(temp, 0, 0, null);
54
55 if (pt.isElapsed())
56 {
57 return true;
58 }
59
60 return false;
61 }
62
63 public static int combine(int c1, int c2, double alpha)
64 {
65 Color co1 = new Color(c1);
66 Color co2 = new Color(c2);
67
68 int r = (int) (alpha * co1.getRed() + (1 - alpha) * co2.getRed());
69 int g = (int) (alpha * co1.getGreen() + (1 - alpha) * co2.getGreen());
70 int b = (int) (alpha * co1.getBlue() + (1 - alpha) * co2.getBlue());
71
72 return new Color(r, g, b).getRGB();
73 }
74
75 private BufferedImage preTransition;
76 public void setPreTransition(BufferedImage preTransition)
77 {
78 this.preTransition = preTransition;
79 }
80
81 public Transition copy()
82 {
83 return new FadeTransition(direction);
84 }
85
86 private BufferedImage postTransition;
87 public void setPostTransition(BufferedImage postTransition)
88 {
89 this.postTransition = postTransition;
90 }
91
92}
diff --git a/src/com/fourisland/fourpuzzle/util/ObjectLoader.java b/src/com/fourisland/fourpuzzle/util/ObjectLoader.java index 6df3796..f1cb157 100755 --- a/src/com/fourisland/fourpuzzle/util/ObjectLoader.java +++ b/src/com/fourisland/fourpuzzle/util/ObjectLoader.java
@@ -86,14 +86,14 @@ public class ObjectLoader {
86 } 86 }
87 87
88 bImg.createGraphics().drawImage(bImg, 0, 0, new Color(transparencyColor, true), null); 88 bImg.createGraphics().drawImage(bImg, 0, 0, new Color(transparencyColor, true), null);
89 89
90 addToObjectCache(imageCache, type + "/" + name, bImg); 90 addToObjectCache(imageCache, type + "/" + name, bImg);
91 } 91 }
92 92
93 return imageCache.get(type + "/" + name); 93 return imageCache.get(type + "/" + name);
94 } 94 }
95 95
96 public static void addToObjectCache(Map cacheMap, String name, Object object) 96 public static <T> void addToObjectCache(Map<String, T> cacheMap, String name, T object)
97 { 97 {
98 if (cacheMap.size() >= 100) 98 if (cacheMap.size() >= 100)
99 { 99 {
diff --git a/src/com/fourisland/fourpuzzle/util/PauseTimer.java b/src/com/fourisland/fourpuzzle/util/PauseTimer.java index 0e52b0f..8ae7330 100644 --- a/src/com/fourisland/fourpuzzle/util/PauseTimer.java +++ b/src/com/fourisland/fourpuzzle/util/PauseTimer.java
@@ -37,5 +37,18 @@ public class PauseTimer {
37 { 37 {
38 this.ticks = ticks; 38 this.ticks = ticks;
39 } 39 }
40
41 public int getTimer()
42 {
43 if (in.isElapsed())
44 {
45 if (ticks > 0)
46 {
47 ticks--;
48 }
49 }
50
51 return ticks;
52 }
40 53
41} 54}