diff src/Player.h @ 10:5727d511a13a

add src in Martial Project Xcode.
author tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
date Wed, 03 Feb 2010 03:39:04 +0900
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/Player.h	Wed Feb 03 03:39:04 2010 +0900
@@ -0,0 +1,91 @@
+/*
+ *  Player.h
+ *  Martial
+ *
+ *  Created by ryoma on 10/01/27.
+ *  Copyright 2010 琉球大学. All rights reserved.
+ *
+ */
+
+#ifndef _PLAYER_H_
+#define _PLAYER_H_
+
+#include <SDL/SDL.h>
+#include "Avatar.h"
+#include "EyePoint.h"
+#include "KeyboardEventHandler.h"
+
+/*!
+    @class		Player
+    @abstract   ゲームのキャラクター(Avatar),視点(EyePoint)を操作するPlayer
+				Keyboardからのコールバック関数をhandlerに登録する
+*/
+
+class Player {
+	private:
+		Avatar* avatar;
+		EyePoint* eyePoint;
+		SDL_Joystick* joy;
+		char* name;
+		Uint8 prev;
+		bool hatFlag[4];
+		void (Player::*frameFunc)();
+	public:
+		enum functionIndex {
+			PUSH_UP, PUSH_RIGHT, PUSH_LEFT, PUSH_DOWN,
+			RELEASE_UP, RELEASE_RIGHT, RELEASE_LEFT, RELEASE_DOWN,
+			PUSH_A, PUSH_B, PUSH_C, PUSH_D,
+			RELEASE_A, RELEASE_B, RELEASE_C, RELEASE_D			
+		};
+		Player(char* name, Avatar* avatar, EyePoint* eyePoint) :
+			name(name), avatar(avatar), eyePoint(eyePoint), frameFunc(&Player::frameKEY) {};
+		/*!
+			@function   pushLeft(), releaseLeft(), pushRight(), releaseRight(), pushUp(), releaseUp(), 
+						pushDown(), releaseDown(), pushA(), releaseA(), pushB(), releaseB(), 
+						pushC(), releaseC(), pushD(), releaseD(), push1(), release2(), 
+			@abstract   KeyboardEventHanderでHandle設定できるControllableクラスの関数群(インターフェース)
+			@discussion Javaでいう interface (でも、純粋仮想関数ではない。デフォルトではなにもしないように)
+		*/
+		void initHat();
+		void releaseHat();
+		void releaseButton();
+		void pushRightUp();
+		void pushRightDown();
+		void pushLeftUp();
+		void pushLeftDown();
+		void pushLeft();
+		void releaseLeft();
+		void pushRight();
+		void releaseRight();
+		void pushUp();
+		void releaseUp();
+		void pushDown();
+		void releaseDown();
+		void pushA();
+		void releaseA();
+		void pushB();
+		void releaseB();
+		void pushC();
+		void releaseC();
+		void pushD();
+		void releaseD();
+		void push1();
+		void push2();
+
+		/*!
+			@function	getKEH()
+			@param		Martialのコールバックを登録したHandler
+			@abstract   Playerの入力コールバックを登録
+			@discussion 複数プレイヤーで入力が衝突しないようにするには?
+						? 別々のAsciiを割り当てる(PlayerにIDを振る) ?
+						→ いや、そもそもKeybaordじゃ厳しいよね。
+						→ COM Playerはどうしよう?
+		*/
+		void registerKEH(KeyboardEventHandler* keh);
+		void registerJOY(SDL_Joystick* joy);
+		void frame();
+		void frameJOY();
+		void frameKEY();
+};
+
+#endif
\ No newline at end of file