summary refs log tree commit diff stats
path: root/src/com/fourisland/fourpuzzle/database/Transitions.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/fourisland/fourpuzzle/database/Transitions.java')
-rw-r--r--src/com/fourisland/fourpuzzle/database/Transitions.java68
1 files changed, 68 insertions, 0 deletions
diff --git a/src/com/fourisland/fourpuzzle/database/Transitions.java b/src/com/fourisland/fourpuzzle/database/Transitions.java new file mode 100644 index 0000000..e45ad6d --- /dev/null +++ b/src/com/fourisland/fourpuzzle/database/Transitions.java
@@ -0,0 +1,68 @@
1/*
2 * To change this template, choose Tools | Templates
3 * and open the template in the editor.
4 */
5
6package com.fourisland.fourpuzzle.database;
7
8import com.fourisland.fourpuzzle.transition.InTransition;
9import com.fourisland.fourpuzzle.transition.MultidirectionalTransition;
10import com.fourisland.fourpuzzle.transition.OutTransition;
11import com.fourisland.fourpuzzle.transition.SquareTransition;
12import com.fourisland.fourpuzzle.transition.Transition;
13import com.fourisland.fourpuzzle.transition.TransitionDirection;
14import com.fourisland.fourpuzzle.transition.TransitionUnsupportedException;
15
16/**
17 *
18 * @author hatkirby
19 */
20public enum Transitions {
21 MapExit(TransitionDirection.Out, new SquareTransition(TransitionDirection.Out)),
22 MapEnter(TransitionDirection.In, new SquareTransition(TransitionDirection.In));
23
24 private final TransitionDirection dir;
25 private Transition trans;
26 private Transitions(TransitionDirection dir, Transition trans)
27 {
28 this.dir = dir;
29
30 if (isTransitionSupported(dir, trans))
31 {
32 this.trans = trans;
33 } else {
34 throw new TransitionUnsupportedException(trans.getClass().getName(), dir);
35 }
36 }
37
38 Transition getValue()
39 {
40 return trans;
41 }
42
43 void setValue(Transition trans)
44 {
45 if (isTransitionSupported(dir, trans))
46 {
47 this.trans = trans;
48 } else {
49 throw new TransitionUnsupportedException(trans.getClass().getName(), dir);
50 }
51 }
52
53 private boolean isTransitionSupported(TransitionDirection dir, Transition trans)
54 {
55 if (trans instanceof MultidirectionalTransition)
56 {
57 return (((MultidirectionalTransition) trans).getDirection() == dir);
58 } else if (trans instanceof OutTransition)
59 {
60 return (dir == TransitionDirection.Out);
61 } else if (trans instanceof InTransition)
62 {
63 return (dir == TransitionDirection.In);
64 }
65
66 return false;
67 }
68}