annotate game/Piece.java @ 138:9eb791e2fa17

Optimize board updating logic, so that the old placed tiles need not to be redrawn from scratch on each screen update, as they do not change usually.
author Matti Hamalainen <ccr@tnsp.org>
date Fri, 25 Nov 2011 11:04:09 +0200
parents 4c0dec72e2f0
children 35374be74fdc
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
44f1e7b47fcf Preliminary work ... puuh.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1 /*
44f1e7b47fcf Preliminary work ... puuh.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2 * Ristipolku
44f1e7b47fcf Preliminary work ... puuh.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3 * (C) Copyright 2011 Matti 'ccr' Hämäläinen <ccr@tnsp.org>
44f1e7b47fcf Preliminary work ... puuh.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
4 */
44f1e7b47fcf Preliminary work ... puuh.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
5 package game;
44f1e7b47fcf Preliminary work ... puuh.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
6
44f1e7b47fcf Preliminary work ... puuh.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
7 import java.awt.*;
7
70714c229e23 More work.
Matti Hamalainen <ccr@tnsp.org>
parents: 6
diff changeset
8 import java.awt.geom.*;
1
44f1e7b47fcf Preliminary work ... puuh.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
9 import java.util.*;
6
be0bf7544069 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 5
diff changeset
10 import java.math.*;
1
44f1e7b47fcf Preliminary work ... puuh.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
11
44f1e7b47fcf Preliminary work ... puuh.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
12
44f1e7b47fcf Preliminary work ... puuh.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
13 public class Piece
44f1e7b47fcf Preliminary work ... puuh.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
14 {
32
e480579cc460 More work on debugging the path resolving.
Matti Hamalainen <ccr@tnsp.org>
parents: 30
diff changeset
15 public enum RotateDir { LEFT, RIGHT }
134
4c0dec72e2f0 Whitespace cosmetic cleanup.
Matti Hamalainen <ccr@tnsp.org>
parents: 106
diff changeset
16
3
b8fd19e2d879 Indentation.
Matti Hamalainen <ccr@tnsp.org>
parents: 2
diff changeset
17 static final int numConnections = 8;
104
eb2e72dd8cae Change how piece rotation works.
Matti Hamalainen <ccr@tnsp.org>
parents: 92
diff changeset
18 static final float maxTime = 50.0f;
9
a7751971c2a3 More work.
Matti Hamalainen <ccr@tnsp.org>
parents: 7
diff changeset
19
3
b8fd19e2d879 Indentation.
Matti Hamalainen <ccr@tnsp.org>
parents: 2
diff changeset
20 int currRotation;
b8fd19e2d879 Indentation.
Matti Hamalainen <ccr@tnsp.org>
parents: 2
diff changeset
21 int[] connections;
40
a69103644bf6 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 39
diff changeset
22 boolean[] states;
32
e480579cc460 More work on debugging the path resolving.
Matti Hamalainen <ccr@tnsp.org>
parents: 30
diff changeset
23 PieceType type, prevType;
1
44f1e7b47fcf Preliminary work ... puuh.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
24
3
b8fd19e2d879 Indentation.
Matti Hamalainen <ccr@tnsp.org>
parents: 2
diff changeset
25 boolean rotationChanged, rotationActive,
9
a7751971c2a3 More work.
Matti Hamalainen <ccr@tnsp.org>
parents: 7
diff changeset
26 typeChanged, typeActive,
138
9eb791e2fa17 Optimize board updating logic, so that the old placed tiles need not to be
Matti Hamalainen <ccr@tnsp.org>
parents: 134
diff changeset
27 stateChanged, stateActive,
9eb791e2fa17 Optimize board updating logic, so that the old placed tiles need not to be
Matti Hamalainen <ccr@tnsp.org>
parents: 134
diff changeset
28 active;
6
be0bf7544069 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 5
diff changeset
29
106
41c6cca69d60 Make new pieces appear gradually, and same effect for swapping.
Matti Hamalainen <ccr@tnsp.org>
parents: 104
diff changeset
30 float currAngle, rotationTime, rotationSpeed,
41c6cca69d60 Make new pieces appear gradually, and same effect for swapping.
Matti Hamalainen <ccr@tnsp.org>
parents: 104
diff changeset
31 typeTime, typeValue, throbTime;
91
cc96bc955db6 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 85
diff changeset
32
106
41c6cca69d60 Make new pieces appear gradually, and same effect for swapping.
Matti Hamalainen <ccr@tnsp.org>
parents: 104
diff changeset
33 Interpolate lerpRotation,
41c6cca69d60 Make new pieces appear gradually, and same effect for swapping.
Matti Hamalainen <ccr@tnsp.org>
parents: 104
diff changeset
34 lerpType;
1
44f1e7b47fcf Preliminary work ... puuh.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
35
32
e480579cc460 More work on debugging the path resolving.
Matti Hamalainen <ccr@tnsp.org>
parents: 30
diff changeset
36
3
b8fd19e2d879 Indentation.
Matti Hamalainen <ccr@tnsp.org>
parents: 2
diff changeset
37 public Piece(PieceType ptype)
b8fd19e2d879 Indentation.
Matti Hamalainen <ccr@tnsp.org>
parents: 2
diff changeset
38 {
b8fd19e2d879 Indentation.
Matti Hamalainen <ccr@tnsp.org>
parents: 2
diff changeset
39 // Initialize
b8fd19e2d879 Indentation.
Matti Hamalainen <ccr@tnsp.org>
parents: 2
diff changeset
40 connections = new int[numConnections];
40
a69103644bf6 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 39
diff changeset
41 states = new boolean[numConnections];
3
b8fd19e2d879 Indentation.
Matti Hamalainen <ccr@tnsp.org>
parents: 2
diff changeset
42 type = ptype;
1
44f1e7b47fcf Preliminary work ... puuh.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
43
3
b8fd19e2d879 Indentation.
Matti Hamalainen <ccr@tnsp.org>
parents: 2
diff changeset
44 rotationChanged = false;
6
be0bf7544069 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 5
diff changeset
45 rotationActive = false;
104
eb2e72dd8cae Change how piece rotation works.
Matti Hamalainen <ccr@tnsp.org>
parents: 92
diff changeset
46 currRotation = 4 * 5000;
eb2e72dd8cae Change how piece rotation works.
Matti Hamalainen <ccr@tnsp.org>
parents: 92
diff changeset
47 currAngle = getAngle(currRotation);
6
be0bf7544069 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 5
diff changeset
48
3
b8fd19e2d879 Indentation.
Matti Hamalainen <ccr@tnsp.org>
parents: 2
diff changeset
49 typeChanged = false;
b8fd19e2d879 Indentation.
Matti Hamalainen <ccr@tnsp.org>
parents: 2
diff changeset
50 typeActive = false;
134
4c0dec72e2f0 Whitespace cosmetic cleanup.
Matti Hamalainen <ccr@tnsp.org>
parents: 106
diff changeset
51
32
e480579cc460 More work on debugging the path resolving.
Matti Hamalainen <ccr@tnsp.org>
parents: 30
diff changeset
52 throbTime = 0;
1
44f1e7b47fcf Preliminary work ... puuh.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
53
106
41c6cca69d60 Make new pieces appear gradually, and same effect for swapping.
Matti Hamalainen <ccr@tnsp.org>
parents: 104
diff changeset
54 lerpType = new Interpolate(1.0f, 0.0f, maxTime);
1
44f1e7b47fcf Preliminary work ... puuh.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
55
3
b8fd19e2d879 Indentation.
Matti Hamalainen <ccr@tnsp.org>
parents: 2
diff changeset
56 // Initialize connections between endpoints of the paths inside the piece
b8fd19e2d879 Indentation.
Matti Hamalainen <ccr@tnsp.org>
parents: 2
diff changeset
57 for (int i = 0; i < numConnections; i++)
b8fd19e2d879 Indentation.
Matti Hamalainen <ccr@tnsp.org>
parents: 2
diff changeset
58 connections[i] = -1;
1
44f1e7b47fcf Preliminary work ... puuh.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
59
26
3d4cc47df31a Cleanups, fix piece rendering and rotation.
Matti Hamalainen <ccr@tnsp.org>
parents: 21
diff changeset
60
6
be0bf7544069 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 5
diff changeset
61 // Randomize connections in the piece
3
b8fd19e2d879 Indentation.
Matti Hamalainen <ccr@tnsp.org>
parents: 2
diff changeset
62 Random rnd = new Random();
b8fd19e2d879 Indentation.
Matti Hamalainen <ccr@tnsp.org>
parents: 2
diff changeset
63 for (int i = 0; i < numConnections; i++)
b8fd19e2d879 Indentation.
Matti Hamalainen <ccr@tnsp.org>
parents: 2
diff changeset
64 {
b8fd19e2d879 Indentation.
Matti Hamalainen <ccr@tnsp.org>
parents: 2
diff changeset
65 while (connections[i] < 0)
b8fd19e2d879 Indentation.
Matti Hamalainen <ccr@tnsp.org>
parents: 2
diff changeset
66 {
b8fd19e2d879 Indentation.
Matti Hamalainen <ccr@tnsp.org>
parents: 2
diff changeset
67 int tmp = rnd.nextInt(numConnections);
26
3d4cc47df31a Cleanups, fix piece rendering and rotation.
Matti Hamalainen <ccr@tnsp.org>
parents: 21
diff changeset
68 if (tmp != i && connections[tmp] < 0)
3
b8fd19e2d879 Indentation.
Matti Hamalainen <ccr@tnsp.org>
parents: 2
diff changeset
69 {
b8fd19e2d879 Indentation.
Matti Hamalainen <ccr@tnsp.org>
parents: 2
diff changeset
70 connections[i] = tmp;
b8fd19e2d879 Indentation.
Matti Hamalainen <ccr@tnsp.org>
parents: 2
diff changeset
71 connections[tmp] = i;
b8fd19e2d879 Indentation.
Matti Hamalainen <ccr@tnsp.org>
parents: 2
diff changeset
72 }
b8fd19e2d879 Indentation.
Matti Hamalainen <ccr@tnsp.org>
parents: 2
diff changeset
73 }
b8fd19e2d879 Indentation.
Matti Hamalainen <ccr@tnsp.org>
parents: 2
diff changeset
74 }
b8fd19e2d879 Indentation.
Matti Hamalainen <ccr@tnsp.org>
parents: 2
diff changeset
75 }
b8fd19e2d879 Indentation.
Matti Hamalainen <ccr@tnsp.org>
parents: 2
diff changeset
76
b8fd19e2d879 Indentation.
Matti Hamalainen <ccr@tnsp.org>
parents: 2
diff changeset
77 public Piece()
b8fd19e2d879 Indentation.
Matti Hamalainen <ccr@tnsp.org>
parents: 2
diff changeset
78 {
b8fd19e2d879 Indentation.
Matti Hamalainen <ccr@tnsp.org>
parents: 2
diff changeset
79 this(PieceType.NONE);
b8fd19e2d879 Indentation.
Matti Hamalainen <ccr@tnsp.org>
parents: 2
diff changeset
80 }
1
44f1e7b47fcf Preliminary work ... puuh.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
81
106
41c6cca69d60 Make new pieces appear gradually, and same effect for swapping.
Matti Hamalainen <ccr@tnsp.org>
parents: 104
diff changeset
82
41c6cca69d60 Make new pieces appear gradually, and same effect for swapping.
Matti Hamalainen <ccr@tnsp.org>
parents: 104
diff changeset
83 public void changed()
41c6cca69d60 Make new pieces appear gradually, and same effect for swapping.
Matti Hamalainen <ccr@tnsp.org>
parents: 104
diff changeset
84 {
41c6cca69d60 Make new pieces appear gradually, and same effect for swapping.
Matti Hamalainen <ccr@tnsp.org>
parents: 104
diff changeset
85 typeChanged = true;
41c6cca69d60 Make new pieces appear gradually, and same effect for swapping.
Matti Hamalainen <ccr@tnsp.org>
parents: 104
diff changeset
86 }
134
4c0dec72e2f0 Whitespace cosmetic cleanup.
Matti Hamalainen <ccr@tnsp.org>
parents: 106
diff changeset
87
3
b8fd19e2d879 Indentation.
Matti Hamalainen <ccr@tnsp.org>
parents: 2
diff changeset
88 public void setType(PieceType ptype)
b8fd19e2d879 Indentation.
Matti Hamalainen <ccr@tnsp.org>
parents: 2
diff changeset
89 {
106
41c6cca69d60 Make new pieces appear gradually, and same effect for swapping.
Matti Hamalainen <ccr@tnsp.org>
parents: 104
diff changeset
90 // typeChanged = (prevType != ptype) && (ptype == PieceType.LOCKED);
32
e480579cc460 More work on debugging the path resolving.
Matti Hamalainen <ccr@tnsp.org>
parents: 30
diff changeset
91 prevType = type;
3
b8fd19e2d879 Indentation.
Matti Hamalainen <ccr@tnsp.org>
parents: 2
diff changeset
92 type = ptype;
b8fd19e2d879 Indentation.
Matti Hamalainen <ccr@tnsp.org>
parents: 2
diff changeset
93 }
1
44f1e7b47fcf Preliminary work ... puuh.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
94
40
a69103644bf6 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 39
diff changeset
95 public void clearStates()
a69103644bf6 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 39
diff changeset
96 {
a69103644bf6 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 39
diff changeset
97 for (int i = 0; i < numConnections; i++)
a69103644bf6 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 39
diff changeset
98 states[i] = false;
a69103644bf6 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 39
diff changeset
99 stateChanged = true;
a69103644bf6 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 39
diff changeset
100 }
a69103644bf6 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 39
diff changeset
101
104
eb2e72dd8cae Change how piece rotation works.
Matti Hamalainen <ccr@tnsp.org>
parents: 92
diff changeset
102 public int getRotation()
eb2e72dd8cae Change how piece rotation works.
Matti Hamalainen <ccr@tnsp.org>
parents: 92
diff changeset
103 {
eb2e72dd8cae Change how piece rotation works.
Matti Hamalainen <ccr@tnsp.org>
parents: 92
diff changeset
104 return currRotation % 4;
eb2e72dd8cae Change how piece rotation works.
Matti Hamalainen <ccr@tnsp.org>
parents: 92
diff changeset
105 }
eb2e72dd8cae Change how piece rotation works.
Matti Hamalainen <ccr@tnsp.org>
parents: 92
diff changeset
106
40
a69103644bf6 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 39
diff changeset
107 public int getRotatedPoint(int in)
3
b8fd19e2d879 Indentation.
Matti Hamalainen <ccr@tnsp.org>
parents: 2
diff changeset
108 {
104
eb2e72dd8cae Change how piece rotation works.
Matti Hamalainen <ccr@tnsp.org>
parents: 92
diff changeset
109 int point = (in - (getRotation() * 2)) % 8;
42
951a4d669af0 Initially working path solving algorithm.
Matti Hamalainen <ccr@tnsp.org>
parents: 40
diff changeset
110 if (point < 0) point = 8 + point;
951a4d669af0 Initially working path solving algorithm.
Matti Hamalainen <ccr@tnsp.org>
parents: 40
diff changeset
111 return point;
951a4d669af0 Initially working path solving algorithm.
Matti Hamalainen <ccr@tnsp.org>
parents: 40
diff changeset
112 }
951a4d669af0 Initially working path solving algorithm.
Matti Hamalainen <ccr@tnsp.org>
parents: 40
diff changeset
113
951a4d669af0 Initially working path solving algorithm.
Matti Hamalainen <ccr@tnsp.org>
parents: 40
diff changeset
114 public int getAntiRotatedPoint(int in)
951a4d669af0 Initially working path solving algorithm.
Matti Hamalainen <ccr@tnsp.org>
parents: 40
diff changeset
115 {
104
eb2e72dd8cae Change how piece rotation works.
Matti Hamalainen <ccr@tnsp.org>
parents: 92
diff changeset
116 int point = (in + (getRotation() * 2)) % 8;
40
a69103644bf6 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 39
diff changeset
117 if (point < 0) point = 8 + point;
a69103644bf6 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 39
diff changeset
118 return point;
a69103644bf6 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 39
diff changeset
119 }
134
4c0dec72e2f0 Whitespace cosmetic cleanup.
Matti Hamalainen <ccr@tnsp.org>
parents: 106
diff changeset
120
42
951a4d669af0 Initially working path solving algorithm.
Matti Hamalainen <ccr@tnsp.org>
parents: 40
diff changeset
121 public int getMatchingPoint(int point)
951a4d669af0 Initially working path solving algorithm.
Matti Hamalainen <ccr@tnsp.org>
parents: 40
diff changeset
122 {
951a4d669af0 Initially working path solving algorithm.
Matti Hamalainen <ccr@tnsp.org>
parents: 40
diff changeset
123 switch (point)
951a4d669af0 Initially working path solving algorithm.
Matti Hamalainen <ccr@tnsp.org>
parents: 40
diff changeset
124 {
951a4d669af0 Initially working path solving algorithm.
Matti Hamalainen <ccr@tnsp.org>
parents: 40
diff changeset
125 case 0: return 5;
951a4d669af0 Initially working path solving algorithm.
Matti Hamalainen <ccr@tnsp.org>
parents: 40
diff changeset
126 case 1: return 4;
951a4d669af0 Initially working path solving algorithm.
Matti Hamalainen <ccr@tnsp.org>
parents: 40
diff changeset
127
951a4d669af0 Initially working path solving algorithm.
Matti Hamalainen <ccr@tnsp.org>
parents: 40
diff changeset
128 case 2: return 7;
951a4d669af0 Initially working path solving algorithm.
Matti Hamalainen <ccr@tnsp.org>
parents: 40
diff changeset
129 case 3: return 6;
951a4d669af0 Initially working path solving algorithm.
Matti Hamalainen <ccr@tnsp.org>
parents: 40
diff changeset
130
951a4d669af0 Initially working path solving algorithm.
Matti Hamalainen <ccr@tnsp.org>
parents: 40
diff changeset
131 case 4: return 1;
951a4d669af0 Initially working path solving algorithm.
Matti Hamalainen <ccr@tnsp.org>
parents: 40
diff changeset
132 case 5: return 0;
951a4d669af0 Initially working path solving algorithm.
Matti Hamalainen <ccr@tnsp.org>
parents: 40
diff changeset
133
951a4d669af0 Initially working path solving algorithm.
Matti Hamalainen <ccr@tnsp.org>
parents: 40
diff changeset
134 case 6: return 3;
951a4d669af0 Initially working path solving algorithm.
Matti Hamalainen <ccr@tnsp.org>
parents: 40
diff changeset
135 case 7: return 2;
951a4d669af0 Initially working path solving algorithm.
Matti Hamalainen <ccr@tnsp.org>
parents: 40
diff changeset
136 }
951a4d669af0 Initially working path solving algorithm.
Matti Hamalainen <ccr@tnsp.org>
parents: 40
diff changeset
137 return -1;
951a4d669af0 Initially working path solving algorithm.
Matti Hamalainen <ccr@tnsp.org>
parents: 40
diff changeset
138 }
37
3dc5ae9f1c80 Work on game logic.
Matti Hamalainen <ccr@tnsp.org>
parents: 34
diff changeset
139
40
a69103644bf6 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 39
diff changeset
140 public void setConnectionState(int point, boolean state)
a69103644bf6 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 39
diff changeset
141 {
a69103644bf6 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 39
diff changeset
142 states[point] = state;
a69103644bf6 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 39
diff changeset
143 states[connections[point]] = state;
a69103644bf6 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 39
diff changeset
144 stateChanged = true;
a69103644bf6 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 39
diff changeset
145 }
a69103644bf6 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 39
diff changeset
146
a69103644bf6 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 39
diff changeset
147 public int getConnection(int point)
a69103644bf6 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 39
diff changeset
148 {
a69103644bf6 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 39
diff changeset
149 return connections[point];
3
b8fd19e2d879 Indentation.
Matti Hamalainen <ccr@tnsp.org>
parents: 2
diff changeset
150 }
104
eb2e72dd8cae Change how piece rotation works.
Matti Hamalainen <ccr@tnsp.org>
parents: 92
diff changeset
151
eb2e72dd8cae Change how piece rotation works.
Matti Hamalainen <ccr@tnsp.org>
parents: 92
diff changeset
152 private float getAngle(float rotation)
eb2e72dd8cae Change how piece rotation works.
Matti Hamalainen <ccr@tnsp.org>
parents: 92
diff changeset
153 {
eb2e72dd8cae Change how piece rotation works.
Matti Hamalainen <ccr@tnsp.org>
parents: 92
diff changeset
154 return (float) ((rotation * Math.PI) / 2.0f);
eb2e72dd8cae Change how piece rotation works.
Matti Hamalainen <ccr@tnsp.org>
parents: 92
diff changeset
155 }
134
4c0dec72e2f0 Whitespace cosmetic cleanup.
Matti Hamalainen <ccr@tnsp.org>
parents: 106
diff changeset
156
32
e480579cc460 More work on debugging the path resolving.
Matti Hamalainen <ccr@tnsp.org>
parents: 30
diff changeset
157 public void rotate(RotateDir dir)
3
b8fd19e2d879 Indentation.
Matti Hamalainen <ccr@tnsp.org>
parents: 2
diff changeset
158 {
134
4c0dec72e2f0 Whitespace cosmetic cleanup.
Matti Hamalainen <ccr@tnsp.org>
parents: 106
diff changeset
159 // Only normal
6
be0bf7544069 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 5
diff changeset
160 if (type != PieceType.LOCKED && type != PieceType.ACTIVE)
3
b8fd19e2d879 Indentation.
Matti Hamalainen <ccr@tnsp.org>
parents: 2
diff changeset
161 return;
1
44f1e7b47fcf Preliminary work ... puuh.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
162
104
eb2e72dd8cae Change how piece rotation works.
Matti Hamalainen <ccr@tnsp.org>
parents: 92
diff changeset
163 currRotation = (currRotation + (dir == RotateDir.RIGHT ? 1 : -1));
106
41c6cca69d60 Make new pieces appear gradually, and same effect for swapping.
Matti Hamalainen <ccr@tnsp.org>
parents: 104
diff changeset
164 lerpRotation = new Interpolate(getAngle(currRotation), currAngle, maxTime);
3
b8fd19e2d879 Indentation.
Matti Hamalainen <ccr@tnsp.org>
parents: 2
diff changeset
165 rotationChanged = true;
5
4890020bf856 Cleanups, etc.
Matti Hamalainen <ccr@tnsp.org>
parents: 3
diff changeset
166 }
1
44f1e7b47fcf Preliminary work ... puuh.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
167
7
70714c229e23 More work.
Matti Hamalainen <ccr@tnsp.org>
parents: 6
diff changeset
168 public Point2D getPointCoords(float x, float y, float dim, int index)
5
4890020bf856 Cleanups, etc.
Matti Hamalainen <ccr@tnsp.org>
parents: 3
diff changeset
169 {
7
70714c229e23 More work.
Matti Hamalainen <ccr@tnsp.org>
parents: 6
diff changeset
170 float ox = 0, oy = 0;
70714c229e23 More work.
Matti Hamalainen <ccr@tnsp.org>
parents: 6
diff changeset
171 float step = dim / 10;
134
4c0dec72e2f0 Whitespace cosmetic cleanup.
Matti Hamalainen <ccr@tnsp.org>
parents: 106
diff changeset
172
5
4890020bf856 Cleanups, etc.
Matti Hamalainen <ccr@tnsp.org>
parents: 3
diff changeset
173 switch (index) {
34
6f6c551cc14c Fix piece connections rendering.
Matti Hamalainen <ccr@tnsp.org>
parents: 32
diff changeset
174 // Normal line starting and ending points
32
e480579cc460 More work on debugging the path resolving.
Matti Hamalainen <ccr@tnsp.org>
parents: 30
diff changeset
175 case 0: ox = 3.0f; oy = 0.4f; break;
e480579cc460 More work on debugging the path resolving.
Matti Hamalainen <ccr@tnsp.org>
parents: 30
diff changeset
176 case 1: ox = 7.0f; oy = 0.4f; break;
39
e682b623aea9 Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 37
diff changeset
177
32
e480579cc460 More work on debugging the path resolving.
Matti Hamalainen <ccr@tnsp.org>
parents: 30
diff changeset
178 case 2: ox = 9.6f; oy = 3.0f; break;
e480579cc460 More work on debugging the path resolving.
Matti Hamalainen <ccr@tnsp.org>
parents: 30
diff changeset
179 case 3: ox = 9.6f; oy = 7.0f; break;
39
e682b623aea9 Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 37
diff changeset
180
32
e480579cc460 More work on debugging the path resolving.
Matti Hamalainen <ccr@tnsp.org>
parents: 30
diff changeset
181 case 4: ox = 7.0f; oy = 9.6f; break;
e480579cc460 More work on debugging the path resolving.
Matti Hamalainen <ccr@tnsp.org>
parents: 30
diff changeset
182 case 5: ox = 3.0f; oy = 9.6f; break;
39
e682b623aea9 Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 37
diff changeset
183
32
e480579cc460 More work on debugging the path resolving.
Matti Hamalainen <ccr@tnsp.org>
parents: 30
diff changeset
184 case 6: ox = 0.4f; oy = 7.0f; break;
e480579cc460 More work on debugging the path resolving.
Matti Hamalainen <ccr@tnsp.org>
parents: 30
diff changeset
185 case 7: ox = 0.4f; oy = 3.0f; break;
1
44f1e7b47fcf Preliminary work ... puuh.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
186
39
e682b623aea9 Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 37
diff changeset
187
34
6f6c551cc14c Fix piece connections rendering.
Matti Hamalainen <ccr@tnsp.org>
parents: 32
diff changeset
188 // Matching control points for each point above (+8)
39
e682b623aea9 Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 37
diff changeset
189 case 8: ox = 3.0f; oy = 2.5f; break;
e682b623aea9 Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 37
diff changeset
190 case 9: ox = 7.0f; oy = 2.5f; break;
e682b623aea9 Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 37
diff changeset
191
e682b623aea9 Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 37
diff changeset
192 case 10: ox = 7.5f; oy = 3.0f; break;
e682b623aea9 Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 37
diff changeset
193 case 11: ox = 7.5f; oy = 7.0f; break;
e682b623aea9 Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 37
diff changeset
194
e682b623aea9 Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 37
diff changeset
195 case 12: ox = 7.0f; oy = 7.5f; break;
e682b623aea9 Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 37
diff changeset
196 case 13: ox = 3.0f; oy = 7.5f; break;
e682b623aea9 Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 37
diff changeset
197
e682b623aea9 Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 37
diff changeset
198 case 14: ox = 2.5f; oy = 7.0f; break;
e682b623aea9 Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 37
diff changeset
199 case 15: ox = 2.5f; oy = 3.0f; break;
5
4890020bf856 Cleanups, etc.
Matti Hamalainen <ccr@tnsp.org>
parents: 3
diff changeset
200 }
1
44f1e7b47fcf Preliminary work ... puuh.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
201
7
70714c229e23 More work.
Matti Hamalainen <ccr@tnsp.org>
parents: 6
diff changeset
202 return new Point2D.Float(x + ox * step, y + oy * step);
5
4890020bf856 Cleanups, etc.
Matti Hamalainen <ccr@tnsp.org>
parents: 3
diff changeset
203 }
134
4c0dec72e2f0 Whitespace cosmetic cleanup.
Matti Hamalainen <ccr@tnsp.org>
parents: 106
diff changeset
204
27
26adc2827983 More work on the internals.
Matti Hamalainen <ccr@tnsp.org>
parents: 26
diff changeset
205 public PieceType getType()
26adc2827983 More work on the internals.
Matti Hamalainen <ccr@tnsp.org>
parents: 26
diff changeset
206 {
26adc2827983 More work on the internals.
Matti Hamalainen <ccr@tnsp.org>
parents: 26
diff changeset
207 return type;
26adc2827983 More work on the internals.
Matti Hamalainen <ccr@tnsp.org>
parents: 26
diff changeset
208 }
9
a7751971c2a3 More work.
Matti Hamalainen <ccr@tnsp.org>
parents: 7
diff changeset
209
7
70714c229e23 More work.
Matti Hamalainen <ccr@tnsp.org>
parents: 6
diff changeset
210 public void animate(float time)
5
4890020bf856 Cleanups, etc.
Matti Hamalainen <ccr@tnsp.org>
parents: 3
diff changeset
211 {
138
9eb791e2fa17 Optimize board updating logic, so that the old placed tiles need not to be
Matti Hamalainen <ccr@tnsp.org>
parents: 134
diff changeset
212 active = false;
9eb791e2fa17 Optimize board updating logic, so that the old placed tiles need not to be
Matti Hamalainen <ccr@tnsp.org>
parents: 134
diff changeset
213
5
4890020bf856 Cleanups, etc.
Matti Hamalainen <ccr@tnsp.org>
parents: 3
diff changeset
214 if (rotationChanged)
4890020bf856 Cleanups, etc.
Matti Hamalainen <ccr@tnsp.org>
parents: 3
diff changeset
215 {
4890020bf856 Cleanups, etc.
Matti Hamalainen <ccr@tnsp.org>
parents: 3
diff changeset
216 rotationTime = time;
4890020bf856 Cleanups, etc.
Matti Hamalainen <ccr@tnsp.org>
parents: 3
diff changeset
217 rotationActive = true;
7
70714c229e23 More work.
Matti Hamalainen <ccr@tnsp.org>
parents: 6
diff changeset
218 rotationChanged = false;
104
eb2e72dd8cae Change how piece rotation works.
Matti Hamalainen <ccr@tnsp.org>
parents: 92
diff changeset
219 rotationSpeed = 1.0f;
54
cc7943cd7f2d Moar work.
Matti Hamalainen <ccr@tnsp.org>
parents: 45
diff changeset
220 }
cc7943cd7f2d Moar work.
Matti Hamalainen <ccr@tnsp.org>
parents: 45
diff changeset
221
cc7943cd7f2d Moar work.
Matti Hamalainen <ccr@tnsp.org>
parents: 45
diff changeset
222 if (typeChanged && type == PieceType.LOCKED)
cc7943cd7f2d Moar work.
Matti Hamalainen <ccr@tnsp.org>
parents: 45
diff changeset
223 {
104
eb2e72dd8cae Change how piece rotation works.
Matti Hamalainen <ccr@tnsp.org>
parents: 92
diff changeset
224 rotationSpeed = 1.5f;
5
4890020bf856 Cleanups, etc.
Matti Hamalainen <ccr@tnsp.org>
parents: 3
diff changeset
225 }
1
44f1e7b47fcf Preliminary work ... puuh.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
226
5
4890020bf856 Cleanups, etc.
Matti Hamalainen <ccr@tnsp.org>
parents: 3
diff changeset
227 if (rotationActive)
4890020bf856 Cleanups, etc.
Matti Hamalainen <ccr@tnsp.org>
parents: 3
diff changeset
228 {
54
cc7943cd7f2d Moar work.
Matti Hamalainen <ccr@tnsp.org>
parents: 45
diff changeset
229 float t = (time - rotationTime) * rotationSpeed;
11
b89ecc8d5557 More work.
Matti Hamalainen <ccr@tnsp.org>
parents: 10
diff changeset
230
9
a7751971c2a3 More work.
Matti Hamalainen <ccr@tnsp.org>
parents: 7
diff changeset
231 if (t < maxTime)
7
70714c229e23 More work.
Matti Hamalainen <ccr@tnsp.org>
parents: 6
diff changeset
232 currAngle = lerpRotation.getValue(t);
70714c229e23 More work.
Matti Hamalainen <ccr@tnsp.org>
parents: 6
diff changeset
233 else
70714c229e23 More work.
Matti Hamalainen <ccr@tnsp.org>
parents: 6
diff changeset
234 {
106
41c6cca69d60 Make new pieces appear gradually, and same effect for swapping.
Matti Hamalainen <ccr@tnsp.org>
parents: 104
diff changeset
235 currAngle = lerpRotation.start;
7
70714c229e23 More work.
Matti Hamalainen <ccr@tnsp.org>
parents: 6
diff changeset
236 rotationActive = false;
70714c229e23 More work.
Matti Hamalainen <ccr@tnsp.org>
parents: 6
diff changeset
237 }
138
9eb791e2fa17 Optimize board updating logic, so that the old placed tiles need not to be
Matti Hamalainen <ccr@tnsp.org>
parents: 134
diff changeset
238
9eb791e2fa17 Optimize board updating logic, so that the old placed tiles need not to be
Matti Hamalainen <ccr@tnsp.org>
parents: 134
diff changeset
239 active = true;
5
4890020bf856 Cleanups, etc.
Matti Hamalainen <ccr@tnsp.org>
parents: 3
diff changeset
240 }
54
cc7943cd7f2d Moar work.
Matti Hamalainen <ccr@tnsp.org>
parents: 45
diff changeset
241
6
be0bf7544069 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 5
diff changeset
242 if (typeChanged)
be0bf7544069 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 5
diff changeset
243 {
be0bf7544069 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 5
diff changeset
244 typeTime = time;
be0bf7544069 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 5
diff changeset
245 typeActive = true;
7
70714c229e23 More work.
Matti Hamalainen <ccr@tnsp.org>
parents: 6
diff changeset
246 typeChanged = false;
6
be0bf7544069 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 5
diff changeset
247 }
134
4c0dec72e2f0 Whitespace cosmetic cleanup.
Matti Hamalainen <ccr@tnsp.org>
parents: 106
diff changeset
248
6
be0bf7544069 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 5
diff changeset
249 if (typeActive)
be0bf7544069 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 5
diff changeset
250 {
106
41c6cca69d60 Make new pieces appear gradually, and same effect for swapping.
Matti Hamalainen <ccr@tnsp.org>
parents: 104
diff changeset
251 float t = (time - typeTime) * 2.0f;
41c6cca69d60 Make new pieces appear gradually, and same effect for swapping.
Matti Hamalainen <ccr@tnsp.org>
parents: 104
diff changeset
252
41c6cca69d60 Make new pieces appear gradually, and same effect for swapping.
Matti Hamalainen <ccr@tnsp.org>
parents: 104
diff changeset
253 if (t < maxTime)
41c6cca69d60 Make new pieces appear gradually, and same effect for swapping.
Matti Hamalainen <ccr@tnsp.org>
parents: 104
diff changeset
254 typeValue = lerpType.getValue(t);
41c6cca69d60 Make new pieces appear gradually, and same effect for swapping.
Matti Hamalainen <ccr@tnsp.org>
parents: 104
diff changeset
255 else
41c6cca69d60 Make new pieces appear gradually, and same effect for swapping.
Matti Hamalainen <ccr@tnsp.org>
parents: 104
diff changeset
256 {
41c6cca69d60 Make new pieces appear gradually, and same effect for swapping.
Matti Hamalainen <ccr@tnsp.org>
parents: 104
diff changeset
257 typeValue = lerpType.start;
41c6cca69d60 Make new pieces appear gradually, and same effect for swapping.
Matti Hamalainen <ccr@tnsp.org>
parents: 104
diff changeset
258 typeActive = false;
41c6cca69d60 Make new pieces appear gradually, and same effect for swapping.
Matti Hamalainen <ccr@tnsp.org>
parents: 104
diff changeset
259 }
138
9eb791e2fa17 Optimize board updating logic, so that the old placed tiles need not to be
Matti Hamalainen <ccr@tnsp.org>
parents: 134
diff changeset
260
9eb791e2fa17 Optimize board updating logic, so that the old placed tiles need not to be
Matti Hamalainen <ccr@tnsp.org>
parents: 134
diff changeset
261
9eb791e2fa17 Optimize board updating logic, so that the old placed tiles need not to be
Matti Hamalainen <ccr@tnsp.org>
parents: 134
diff changeset
262 active = true;
6
be0bf7544069 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 5
diff changeset
263 }
134
4c0dec72e2f0 Whitespace cosmetic cleanup.
Matti Hamalainen <ccr@tnsp.org>
parents: 106
diff changeset
264
40
a69103644bf6 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 39
diff changeset
265 if (stateChanged)
9
a7751971c2a3 More work.
Matti Hamalainen <ccr@tnsp.org>
parents: 7
diff changeset
266 {
a7751971c2a3 More work.
Matti Hamalainen <ccr@tnsp.org>
parents: 7
diff changeset
267 }
134
4c0dec72e2f0 Whitespace cosmetic cleanup.
Matti Hamalainen <ccr@tnsp.org>
parents: 106
diff changeset
268
32
e480579cc460 More work on debugging the path resolving.
Matti Hamalainen <ccr@tnsp.org>
parents: 30
diff changeset
269 throbTime = (time % 100) / 100.0f;
5
4890020bf856 Cleanups, etc.
Matti Hamalainen <ccr@tnsp.org>
parents: 3
diff changeset
270 }
1
44f1e7b47fcf Preliminary work ... puuh.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
271
7
70714c229e23 More work.
Matti Hamalainen <ccr@tnsp.org>
parents: 6
diff changeset
272 public void paint(Graphics2D g, float x, float y, float dim)
5
4890020bf856 Cleanups, etc.
Matti Hamalainen <ccr@tnsp.org>
parents: 3
diff changeset
273 {
58
cde170f2f980 Clean up the piece rendering.
Matti Hamalainen <ccr@tnsp.org>
parents: 54
diff changeset
274 AffineTransform save = g.getTransform();
106
41c6cca69d60 Make new pieces appear gradually, and same effect for swapping.
Matti Hamalainen <ccr@tnsp.org>
parents: 104
diff changeset
275 Composite csave = g.getComposite();
41c6cca69d60 Make new pieces appear gradually, and same effect for swapping.
Matti Hamalainen <ccr@tnsp.org>
parents: 104
diff changeset
276
41c6cca69d60 Make new pieces appear gradually, and same effect for swapping.
Matti Hamalainen <ccr@tnsp.org>
parents: 104
diff changeset
277 // Change compositing alpha for the whole piece drawing
41c6cca69d60 Make new pieces appear gradually, and same effect for swapping.
Matti Hamalainen <ccr@tnsp.org>
parents: 104
diff changeset
278 // when the piece is being "introduced".
41c6cca69d60 Make new pieces appear gradually, and same effect for swapping.
Matti Hamalainen <ccr@tnsp.org>
parents: 104
diff changeset
279 if (typeActive)
41c6cca69d60 Make new pieces appear gradually, and same effect for swapping.
Matti Hamalainen <ccr@tnsp.org>
parents: 104
diff changeset
280 {
41c6cca69d60 Make new pieces appear gradually, and same effect for swapping.
Matti Hamalainen <ccr@tnsp.org>
parents: 104
diff changeset
281 g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, typeValue));
41c6cca69d60 Make new pieces appear gradually, and same effect for swapping.
Matti Hamalainen <ccr@tnsp.org>
parents: 104
diff changeset
282 }
41c6cca69d60 Make new pieces appear gradually, and same effect for swapping.
Matti Hamalainen <ccr@tnsp.org>
parents: 104
diff changeset
283
58
cde170f2f980 Clean up the piece rendering.
Matti Hamalainen <ccr@tnsp.org>
parents: 54
diff changeset
284
45
79185dababf2 Add comments.
Matti Hamalainen <ccr@tnsp.org>
parents: 43
diff changeset
285 // Transform drawing by current angle
11
b89ecc8d5557 More work.
Matti Hamalainen <ccr@tnsp.org>
parents: 10
diff changeset
286 g.rotate(currAngle, x + dim / 2.0f, y + dim / 2.0f);
1
44f1e7b47fcf Preliminary work ... puuh.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
287
45
79185dababf2 Add comments.
Matti Hamalainen <ccr@tnsp.org>
parents: 43
diff changeset
288 // Color piece by type
5
4890020bf856 Cleanups, etc.
Matti Hamalainen <ccr@tnsp.org>
parents: 3
diff changeset
289 switch (type) {
58
cde170f2f980 Clean up the piece rendering.
Matti Hamalainen <ccr@tnsp.org>
parents: 54
diff changeset
290 case LOCKED: g.setPaint(new Color(0.3f, 0.8f, 0.3f, 0.35f)); break;
cde170f2f980 Clean up the piece rendering.
Matti Hamalainen <ccr@tnsp.org>
parents: 54
diff changeset
291 case ACTIVE: g.setPaint(new Color(0.9f, 0.3f, 0.3f, 0.35f)); break;
92
d5f51370617b Change start piece rendering.
Matti Hamalainen <ccr@tnsp.org>
parents: 91
diff changeset
292 case START: g.setPaint(new Color(1.0f, 0.6f, 0.0f, 0.95f)); break;
5
4890020bf856 Cleanups, etc.
Matti Hamalainen <ccr@tnsp.org>
parents: 3
diff changeset
293 }
6
be0bf7544069 Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 5
diff changeset
294
7
70714c229e23 More work.
Matti Hamalainen <ccr@tnsp.org>
parents: 6
diff changeset
295 g.fill(new RoundRectangle2D.Float(x, y, dim, dim, dim / 10, dim / 10));
1
44f1e7b47fcf Preliminary work ... puuh.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
296
92
d5f51370617b Change start piece rendering.
Matti Hamalainen <ccr@tnsp.org>
parents: 91
diff changeset
297 // Start pieces (center piece) have a different kind of border
d5f51370617b Change start piece rendering.
Matti Hamalainen <ccr@tnsp.org>
parents: 91
diff changeset
298 // and no connections drawn inside
d5f51370617b Change start piece rendering.
Matti Hamalainen <ccr@tnsp.org>
parents: 91
diff changeset
299 if (type == PieceType.START)
d5f51370617b Change start piece rendering.
Matti Hamalainen <ccr@tnsp.org>
parents: 91
diff changeset
300 {
d5f51370617b Change start piece rendering.
Matti Hamalainen <ccr@tnsp.org>
parents: 91
diff changeset
301 // Draw piece border
d5f51370617b Change start piece rendering.
Matti Hamalainen <ccr@tnsp.org>
parents: 91
diff changeset
302 g.setPaint(Color.black);
d5f51370617b Change start piece rendering.
Matti Hamalainen <ccr@tnsp.org>
parents: 91
diff changeset
303 g.setStroke(new BasicStroke(2.0f));
d5f51370617b Change start piece rendering.
Matti Hamalainen <ccr@tnsp.org>
parents: 91
diff changeset
304 g.draw(new RoundRectangle2D.Float(x, y, dim, dim, dim / 10, dim / 10));
d5f51370617b Change start piece rendering.
Matti Hamalainen <ccr@tnsp.org>
parents: 91
diff changeset
305 }
d5f51370617b Change start piece rendering.
Matti Hamalainen <ccr@tnsp.org>
parents: 91
diff changeset
306 else
5
4890020bf856 Cleanups, etc.
Matti Hamalainen <ccr@tnsp.org>
parents: 3
diff changeset
307 {
58
cde170f2f980 Clean up the piece rendering.
Matti Hamalainen <ccr@tnsp.org>
parents: 54
diff changeset
308 // Active piece has a throbbing "ghost" border
cde170f2f980 Clean up the piece rendering.
Matti Hamalainen <ccr@tnsp.org>
parents: 54
diff changeset
309 if (type == PieceType.ACTIVE)
cde170f2f980 Clean up the piece rendering.
Matti Hamalainen <ccr@tnsp.org>
parents: 54
diff changeset
310 {
cde170f2f980 Clean up the piece rendering.
Matti Hamalainen <ccr@tnsp.org>
parents: 54
diff changeset
311 float offs1 = throbTime * 10.0f,
cde170f2f980 Clean up the piece rendering.
Matti Hamalainen <ccr@tnsp.org>
parents: 54
diff changeset
312 offs2 = throbTime * 20.0f;
27
26adc2827983 More work on the internals.
Matti Hamalainen <ccr@tnsp.org>
parents: 26
diff changeset
313
58
cde170f2f980 Clean up the piece rendering.
Matti Hamalainen <ccr@tnsp.org>
parents: 54
diff changeset
314 g.setPaint(new Color(0.0f, 0.0f, 0.0f, (float) (1.0f - throbTime) ));
cde170f2f980 Clean up the piece rendering.
Matti Hamalainen <ccr@tnsp.org>
parents: 54
diff changeset
315 g.setStroke(new BasicStroke(2.0f + throbTime * 2.0f));
cde170f2f980 Clean up the piece rendering.
Matti Hamalainen <ccr@tnsp.org>
parents: 54
diff changeset
316 g.draw(new RoundRectangle2D.Float(
cde170f2f980 Clean up the piece rendering.
Matti Hamalainen <ccr@tnsp.org>
parents: 54
diff changeset
317 x - offs1, y - offs1,
cde170f2f980 Clean up the piece rendering.
Matti Hamalainen <ccr@tnsp.org>
parents: 54
diff changeset
318 dim + offs2, dim + offs2,
cde170f2f980 Clean up the piece rendering.
Matti Hamalainen <ccr@tnsp.org>
parents: 54
diff changeset
319 dim / 10, dim / 10));
cde170f2f980 Clean up the piece rendering.
Matti Hamalainen <ccr@tnsp.org>
parents: 54
diff changeset
320 }
cde170f2f980 Clean up the piece rendering.
Matti Hamalainen <ccr@tnsp.org>
parents: 54
diff changeset
321
cde170f2f980 Clean up the piece rendering.
Matti Hamalainen <ccr@tnsp.org>
parents: 54
diff changeset
322 // Draw piece border
cde170f2f980 Clean up the piece rendering.
Matti Hamalainen <ccr@tnsp.org>
parents: 54
diff changeset
323 g.setPaint(new Color(0.0f, 0.0f, 0.0f, 0.6f));
cde170f2f980 Clean up the piece rendering.
Matti Hamalainen <ccr@tnsp.org>
parents: 54
diff changeset
324 g.setStroke(new BasicStroke(5.0f));
cde170f2f980 Clean up the piece rendering.
Matti Hamalainen <ccr@tnsp.org>
parents: 54
diff changeset
325 g.draw(new RoundRectangle2D.Float(x, y, dim, dim, dim / 10, dim / 10));
1
44f1e7b47fcf Preliminary work ... puuh.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
326
58
cde170f2f980 Clean up the piece rendering.
Matti Hamalainen <ccr@tnsp.org>
parents: 54
diff changeset
327 // Draw the connections
cde170f2f980 Clean up the piece rendering.
Matti Hamalainen <ccr@tnsp.org>
parents: 54
diff changeset
328 g.setStroke(new BasicStroke(5.5f));
cde170f2f980 Clean up the piece rendering.
Matti Hamalainen <ccr@tnsp.org>
parents: 54
diff changeset
329 CubicCurve2D curve = new CubicCurve2D.Float();
cde170f2f980 Clean up the piece rendering.
Matti Hamalainen <ccr@tnsp.org>
parents: 54
diff changeset
330 boolean[] drawn = new boolean[numConnections];
cde170f2f980 Clean up the piece rendering.
Matti Hamalainen <ccr@tnsp.org>
parents: 54
diff changeset
331 for (int i = 0; i < numConnections; i++)
cde170f2f980 Clean up the piece rendering.
Matti Hamalainen <ccr@tnsp.org>
parents: 54
diff changeset
332 if (!drawn[i])
cde170f2f980 Clean up the piece rendering.
Matti Hamalainen <ccr@tnsp.org>
parents: 54
diff changeset
333 {
cde170f2f980 Clean up the piece rendering.
Matti Hamalainen <ccr@tnsp.org>
parents: 54
diff changeset
334 Point2D start, cp1, cp2, end;
cde170f2f980 Clean up the piece rendering.
Matti Hamalainen <ccr@tnsp.org>
parents: 54
diff changeset
335 boolean isActive = states[i] || states[connections[i]];
cde170f2f980 Clean up the piece rendering.
Matti Hamalainen <ccr@tnsp.org>
parents: 54
diff changeset
336
cde170f2f980 Clean up the piece rendering.
Matti Hamalainen <ccr@tnsp.org>
parents: 54
diff changeset
337 g.setPaint(isActive ? Color.white : Color.black);
9
a7751971c2a3 More work.
Matti Hamalainen <ccr@tnsp.org>
parents: 7
diff changeset
338
58
cde170f2f980 Clean up the piece rendering.
Matti Hamalainen <ccr@tnsp.org>
parents: 54
diff changeset
339 start = getPointCoords(x, y, dim, i);
cde170f2f980 Clean up the piece rendering.
Matti Hamalainen <ccr@tnsp.org>
parents: 54
diff changeset
340 end = getPointCoords(x, y, dim, connections[i]);
cde170f2f980 Clean up the piece rendering.
Matti Hamalainen <ccr@tnsp.org>
parents: 54
diff changeset
341 cp1 = getPointCoords(x, y, dim, i + 8);
cde170f2f980 Clean up the piece rendering.
Matti Hamalainen <ccr@tnsp.org>
parents: 54
diff changeset
342 cp2 = getPointCoords(x, y, dim, connections[i] + 8);
cde170f2f980 Clean up the piece rendering.
Matti Hamalainen <ccr@tnsp.org>
parents: 54
diff changeset
343
cde170f2f980 Clean up the piece rendering.
Matti Hamalainen <ccr@tnsp.org>
parents: 54
diff changeset
344 curve.setCurve(start, cp1, cp2, end);
cde170f2f980 Clean up the piece rendering.
Matti Hamalainen <ccr@tnsp.org>
parents: 54
diff changeset
345 g.draw(curve);
34
6f6c551cc14c Fix piece connections rendering.
Matti Hamalainen <ccr@tnsp.org>
parents: 32
diff changeset
346
58
cde170f2f980 Clean up the piece rendering.
Matti Hamalainen <ccr@tnsp.org>
parents: 54
diff changeset
347 // Mark connection drawn, so we don't overdraw
cde170f2f980 Clean up the piece rendering.
Matti Hamalainen <ccr@tnsp.org>
parents: 54
diff changeset
348 drawn[i] = true;
cde170f2f980 Clean up the piece rendering.
Matti Hamalainen <ccr@tnsp.org>
parents: 54
diff changeset
349 drawn[connections[i]] = true;
cde170f2f980 Clean up the piece rendering.
Matti Hamalainen <ccr@tnsp.org>
parents: 54
diff changeset
350 }
134
4c0dec72e2f0 Whitespace cosmetic cleanup.
Matti Hamalainen <ccr@tnsp.org>
parents: 106
diff changeset
351
58
cde170f2f980 Clean up the piece rendering.
Matti Hamalainen <ccr@tnsp.org>
parents: 54
diff changeset
352 } // !PieceType.START
cde170f2f980 Clean up the piece rendering.
Matti Hamalainen <ccr@tnsp.org>
parents: 54
diff changeset
353
cde170f2f980 Clean up the piece rendering.
Matti Hamalainen <ccr@tnsp.org>
parents: 54
diff changeset
354 g.setTransform(save);
106
41c6cca69d60 Make new pieces appear gradually, and same effect for swapping.
Matti Hamalainen <ccr@tnsp.org>
parents: 104
diff changeset
355 g.setComposite(csave);
5
4890020bf856 Cleanups, etc.
Matti Hamalainen <ccr@tnsp.org>
parents: 3
diff changeset
356 }
1
44f1e7b47fcf Preliminary work ... puuh.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
357 }