1 package de.jos.game.objects.buttons;
2
3 import java.awt.Color;
4 import java.awt.Font;
5 import java.awt.Insets;
6
7 import org.apache.commons.lang.builder.ToStringBuilder;
8
9 import com.golden.gamedev.GameObject;
10 import com.golden.gamedev.gui.TButton;
11 import com.golden.gamedev.object.GameFont;
12
13 /***
14 * Basisklasse aller Buttons
15 *
16 * @author andreaswuest
17 *
18 */
19 public abstract class GameButton extends TButton {
20
21 private GameObject gameObject = null;
22
23 private ButtonClickCallback buttonClickCallback = null;
24
25 public enum Action {
26 NONE, PUZZLE_MODE, INFINITE_MODE, QUIT, BACK, CREDITS, HELP, NEXT, PREVIOUS, UNDO, RESTART, PUZZLE_LEVEL
27 };
28
29 public GameButton(String text, int x, int y, int width, int height, GameObject gameObject) {
30 super(text, x, y, width, height);
31
32 GameFont externalFont = gameObject.fontManager.getFont(new Font("Arial", Font.BOLD, 14));
33
34 this.gameObject = gameObject;
35
36 setExternalUI(gameObject.getImages("img/buttons/defaultButton.png", 4, 1), true);
37 UIResource().put("Text Color", Color.WHITE);
38 UIResource().put("Text Over Color", Color.WHITE);
39 UIResource().put("Text Font", externalFont);
40 UIResource().put("Text Over Font", externalFont);
41 UIResource().put("Text Pressed Font", externalFont);
42 UIResource().put("Text Vertical Space Integer", Integer.valueOf(0));
43 UIResource().put("Text Insets", new Insets(4, 5, 5, 5));
44
45 }
46
47 public abstract Action getAction();
48
49 @Override
50 protected void processMousePressed() {
51 super.processMousePressed();
52 gameObject.bsSound.play("effects/sound70.wav");
53 }
54
55 protected void processMouseClicked() {
56 super.processMouseClicked();
57
58 if (getButtonClickCallback() != null) {
59 getButtonClickCallback().performClickAction();
60 }
61 }
62
63 public String toString() {
64 ToStringBuilder tsb = new ToStringBuilder(this);
65 tsb.append("action", getAction());
66 return tsb.toString();
67 }
68
69 public ButtonClickCallback getButtonClickCallback() {
70 return buttonClickCallback;
71 }
72
73 public void setButtonClickCallback(ButtonClickCallback buttonClickCallback) {
74 this.buttonClickCallback = buttonClickCallback;
75 }
76
77 }