view src/Player.h @ 13:39e0c583e0a3 default tip

add GiantroboClassfile.
author tokumoritaichirou@w-133-13-243-110.cc.u-ryukyu.ac.jp
date Wed, 03 Feb 2010 18:37:01 +0900
parents 5727d511a13a
children
line wrap: on
line source

/*
 *  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