view src/Avatar.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 source

/*
 *  Avatar.h
 *  Martial
 *
 *  Created by ryoma on 10/01/27.
 *  Copyright 2010 琉球大学. All rights reserved.
 *
 */

#ifndef _AVATAR_H_
#define _AVATAR_H_

#include "Martial.h"
#include "CollisionObject.h"
#include "ControllableObject.h"
#include "SearchMatrixTransformVisitor.h"
#include "SearchGeodeVisitor.h"

/*!
    @class		Avatar
    @abstract   Martial上で、Playerが操作するクラス
    @discussion 衝突判定(Collision)、入力処理(Controllable)を行なう。
*/

class Avatar : public CollisionObject, public ControllableObject {
	protected:
		/*! @var キャラクターの体力 */
		int hitpoint;
		/*! @var コマンド入力用のバファ
			@discussion コマンドの入力は状態遷移関数でやった方が良いかも
		*/
		char keyboardInputBuffer[Martial::CONFIG::FRAME_RATE];
		/*! @var Avatarの体内時計。モーションの更新や判定で使用 */
		int  motionTime;
		/*! @var Avatarの向いてる方向。Player1 -> 1, Player2 -> -1 
			@discussion bool (0 or 1)にして、(bool*2) - 1 でもok?   */
		int	 avatarDirection;
		enum functionIndex {
			RELEASE_HAT, PUSH_UP, PUSH_RIGHT, PUSH_LEFT, PUSH_DOWN,
			PUSH_RIGHTUP, PUSH_RIGHTDOWN, PUSH_LEFTUP, PUSH_LEFTDOWN,
			PUSH_A, PUSH_B, PUSH_C, PUSH_D,	RELEASE_BUTTON
		};
	public:
		Avatar(char* _name = "Character") :
			avatarDirection(1), CollisionObject::CollisionObject(_name) {};

		Avatar(osg::Node* _node,  char* _name = "Character") :
			avatarDirection(1), CollisionObject::CollisionObject(_node, _name) {};

		void printInput(char* format, char* name) { if (Martial::TEST::SHOW_AVATAR_INPUT) Martial::TEST::print(format, name); };

		void onStage();

		void setAvatarDirection(int dir) { avatarDirection = dir; };
};

#endif