Newer
Older
CactusServer / src / main / java / fight3D / CharacterSelectContainer.java
y-ota on 10 May 2018 5 KB 初うp
  1. package fight3D;
  2.  
  3. import java.awt.Color;
  4. import java.awt.Font;
  5. import java.awt.GraphicsConfiguration;
  6. import java.util.ArrayList;
  7.  
  8. import framework.RWT.RWTContainer;
  9. import framework.RWT.RWTLabel;
  10. import framework.RWT.RWTLine;
  11. import framework.RWT.RWTSelectionCanvas3D;
  12. import framework.RWT.RWTVirtualController;
  13. import framework.RWT.RWTVirtualKey;
  14. import framework.model3D.BaseObject3D;
  15.  
  16. public class CharacterSelectContainer extends RWTContainer {
  17. /**
  18. *
  19. */
  20. private static final long serialVersionUID = 8354537837334374243L;
  21.  
  22. Game game;
  23. static final int PLAYER_NUM = 2; // 総プレイヤー数
  24. private RWTSelectionCanvas3D objectCanvas;
  25. private boolean flag = false; // 確認画面のフラグ
  26. private ArrayList<Character> characters = new ArrayList<Character>();
  27. private int pn = 0;
  28. private int character[] = new int[PLAYER_NUM];
  29. protected RWTLabel activatedLabel = new RWTLabel();
  30. private RWTLabel s1 = new RWTLabel();
  31. private RWTLabel s2 = new RWTLabel();
  32. private RWTLabel m5 = new RWTLabel();
  33. private RWTLabel m6 = new RWTLabel();
  34. private RWTLine l1 = new RWTLine();
  35. private RWTLine l2 = new RWTLine();
  36.  
  37. // コンストラクタ
  38. public CharacterSelectContainer(Game g) {
  39. game = g;
  40. }
  41. // フレームに追加してサイズが確定した後に中身を構築する
  42. public void build(GraphicsConfiguration gc) {
  43. // 初期化
  44. removeAll();
  45. setBackground(Color.BLACK);
  46.  
  47. // キャラクターを描画するためのキャンバス(相対的キャンバス)を追加
  48. objectCanvas = new RWTSelectionCanvas3D();
  49. objectCanvas.setRelativePosition(0.03f, 0.675f);
  50. objectCanvas.setRelativeSize(0.25f, 0.3f);
  51. addCanvas(objectCanvas);
  52. //画面タイトル、戻るアイコン、メッセージエリア・1
  53. s1.setRelativePosition(0.20f,0.10f);
  54. s1.setString("「キャラクター選択」");
  55. s1.setColor(Color.WHITE);
  56. Font f1 = new Font("",Font.PLAIN,20);
  57. s1.setFont(f1);
  58. addWidget(s1);
  59. s2.setRelativePosition(0.025f,0.05f);
  60. s2.setString("B:タイトル画面へ");
  61. s2.setColor(Color.WHITE);
  62. Font f2 = new Font("",Font.PLAIN,8);
  63. s2.setFont(f2);
  64. addWidget(s2);
  65.  
  66. m5.setRelativePosition(0.60f,0.05f);
  67. m5.setString((pn+1) + "Pはキャラクターを選択して下さい。");
  68. m5.setColor(Color.YELLOW);
  69. addWidget(m5);
  70. m6.setRelativePosition(0.60f,0.10f);
  71. m6.setString("A:決定");
  72. m6.setColor(Color.YELLOW);
  73. addWidget(m6);
  74. //全キャラクターの数
  75. int n = CharacterManager.getInstance().getNumberOfCharacters(); //キャラクターの総数
  76. //全キャラクターの登録
  77. for(int i=0;i<n;i++){
  78. characters.add(i, CharacterManager.getInstance().getCharacter(i));
  79. }
  80. //キャラクターボタンの表示
  81. for(int i=0;i<n;i++){
  82. String str = characters.get(i).getName()+ RWTLabel.NEW_PARAGRAPH + characters.get(i).getComment();
  83. CharacterSelectImageButton cb = new CharacterSelectImageButton(str, characters.get(i).getModel(),activatedLabel,i, this);
  84. cb.setString(characters.get(i).getName());
  85. cb.setColor(Color.YELLOW);
  86. cb.setRelativePosition(0.10f + i % 3 * 0.3f, (i / 3 + 1) * 0.3f);
  87. addSelectableWidget(cb, i%3, i/3);
  88. }
  89. //選択キャラクター、メッセージエリア・2
  90. addWidget(activatedLabel);
  91. //ライン
  92. l1.setRelativePosition(0.00f, 0.15f, 1.00f, 0.15f);
  93. l1.setColor(Color.WHITE);
  94. addWidget(l1);
  95. l2.setRelativePosition(0.00f, 0.65f, 1.00f, 0.65f);
  96. l2.setColor(Color.WHITE);
  97. addWidget(l2);
  98. repaint();
  99. }
  100. public void updateObjectCanvas(BaseObject3D o) {
  101. if (objectCanvas != null) objectCanvas.setObject(o);
  102. }
  103.  
  104. // キーボードを押した瞬間
  105. public void keyPressed(RWTVirtualKey key) {
  106. if (key.getPlayer() == -1) {
  107. key.assignPlayer(1);
  108. }
  109. }
  110.  
  111. // キーボードを離した瞬間
  112. public void keyReleased(RWTVirtualKey key) {
  113. if (key.getVirtualKey() == RWTVirtualController.UP && pn < PLAYER_NUM)
  114. cursorMoveUp();
  115. if (key.getVirtualKey() == RWTVirtualController.DOWN
  116. && pn < PLAYER_NUM)
  117. cursorMoveDown();
  118. if (key.getVirtualKey() == RWTVirtualController.RIGHT
  119. && pn < PLAYER_NUM)
  120. cursorMoveRight();
  121. if (key.getVirtualKey() == RWTVirtualController.LEFT
  122. && pn < PLAYER_NUM)
  123. cursorMoveLeft();
  124. if (key.getVirtualKey() == RWTVirtualController.BUTTON_A) {
  125. // キャラクター番号を入力
  126. if (pn < 2) {
  127. character[pn] = ((CharacterSelectImageButton) getSelectedWidget()).number;
  128. // 選択したキャラクターの番号
  129. pn++; // プレイヤーの追加
  130.  
  131. m5.setString((pn + 1) + "Pはキャラクターを選択して下さい。");
  132. addWidget(m5);
  133. repaint();
  134. }
  135.  
  136. // 確認画面
  137. if (pn == PLAYER_NUM) {
  138. s2.setString("");
  139. addWidget(s2);
  140. m5.setString("これでよろしいですか。");
  141. addWidget(m5);
  142. m6.setString("A:決定 B:戻る");
  143. addWidget(m6);
  144. repaint();
  145.  
  146. if (flag == true) {
  147. // 次の画面へ
  148. game.goNextGameState();
  149. game.setPlayerNum(pn);
  150. game.setCharacter(character);
  151. }
  152.  
  153. flag = true;
  154. }
  155. }
  156. if (key.getVirtualKey() == RWTVirtualController.BUTTON_B) {
  157. // 確認画面
  158. if (flag == true) {
  159. pn = 0; // 入力した情報を初期化
  160.  
  161. s2.setString("B:タイトル画面へ");
  162. addWidget(s2);
  163. m5.setString((pn + 1) + "Pはキャラクターを選択して下さい。");
  164. addWidget(m5);
  165. m6.setString("A:決定");
  166. addWidget(m6);
  167. repaint();
  168.  
  169. flag = false;
  170. } else {
  171. game.goPrevGameState();
  172. }
  173. }
  174. }
  175.  
  176. // キーボードを押して離す
  177. public void keyTyped(RWTVirtualKey key) {
  178.  
  179. }
  180. }