Mercurial > hg > Members > e075743
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