view src/Player.cpp @ 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

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

#include "Player.h"

void Player::registerKEH(KeyboardEventHandler* keh) {
	frameFunc = &Player::frameKEY;
	hatFlag[0] = false;	hatFlag[1] = false;	hatFlag[2] = false;	hatFlag[3] = false;
	keh->addFunction('i',KeyboardEventHandler::KEY_DOWN, &Player::pushUp, this);
	keh->addFunction('i',KeyboardEventHandler::KEY_UP,   &Player::releaseUp, this);
	keh->addFunction(',',KeyboardEventHandler::KEY_DOWN, &Player::pushDown, this);
	keh->addFunction(',',KeyboardEventHandler::KEY_UP,	 &Player::releaseDown, this);
	keh->addFunction('j',KeyboardEventHandler::KEY_DOWN, &Player::pushLeft, this);
	keh->addFunction('j',KeyboardEventHandler::KEY_UP,   &Player::releaseLeft, this);
	keh->addFunction('l',KeyboardEventHandler::KEY_DOWN, &Player::pushRight, this);
	keh->addFunction('l',KeyboardEventHandler::KEY_UP,   &Player::releaseRight, this);
	keh->addFunction('a',KeyboardEventHandler::KEY_DOWN, &Player::pushA, this);
	keh->addFunction('a',KeyboardEventHandler::KEY_UP,   &Player::releaseA, this);
	keh->addFunction('b',KeyboardEventHandler::KEY_DOWN, &Player::pushB, this);
	keh->addFunction('b',KeyboardEventHandler::KEY_UP,	 &Player::releaseB, this);
	keh->addFunction('c',KeyboardEventHandler::KEY_DOWN, &Player::pushC, this);
	keh->addFunction('c',KeyboardEventHandler::KEY_UP,   &Player::releaseC, this);
	keh->addFunction('d',KeyboardEventHandler::KEY_DOWN, &Player::pushD, this);
	keh->addFunction('d',KeyboardEventHandler::KEY_UP,   &Player::releaseD, this);	
	keh->addFunction('1',KeyboardEventHandler::KEY_DOWN, &Player::push1, this);
	keh->addFunction('2',KeyboardEventHandler::KEY_DOWN, &Player::push2, this);
}

void Player::registerJOY(SDL_Joystick* _joy) {
	frameFunc = &Player::frameJOY;
	prev = SDL_HAT_CENTERED;
	joy = _joy;
}

void Player::frame() {
	(this->*frameFunc)();
}

void Player::frameKEY() {
	if (Martial::TEST::SHOW_PLAYER_INPUT) printf("[%d,%d,%d,%d]\n",hatFlag[0],hatFlag[1],hatFlag[2],hatFlag[3]);

	if (!(hatFlag[PUSH_UP]||hatFlag[PUSH_DOWN]
		||hatFlag[PUSH_RIGHT]||hatFlag[PUSH_LEFT])) {
		avatar->releaseHat();
	}else if (hatFlag[PUSH_RIGHT]) {
		if (hatFlag[PUSH_LEFT]) {
			avatar->releaseHat();
		} else if (hatFlag[PUSH_UP]) {
			avatar->pushRightUp();
		} else if (hatFlag[PUSH_DOWN]) {
			avatar->pushRightDown();
		} else {
			avatar->pushRight();
		}
	} else if (hatFlag[PUSH_UP]) {
		if (hatFlag[PUSH_LEFT]) {
			avatar->pushLeftUp();
		} else {
			avatar->pushUp();
		}
	} else if (hatFlag[PUSH_DOWN]) {
		if (hatFlag[PUSH_LEFT]) {
			avatar->pushLeftDown();
		} else {
			avatar->pushDown();
		}
	} else {
		avatar->pushLeft();
	}
}

void Player::frameJOY() {
	printf("opend?, hatNums = %d\n\n", SDL_JoystickOpened(0), SDL_JoystickNumHats(joy));
	SDL_JoystickUpdate();

	if (SDL_JoystickGetHat(joy, SDL_HAT_CENTERED) == SDL_PRESSED) {
		puts("center");
		if (prev != SDL_HAT_CENTERED) {
			avatar->releaseHat();
		}
	} else if (SDL_JoystickGetHat(joy, SDL_HAT_UP) == SDL_PRESSED) {
		avatar->pushUp();
	} else if (SDL_JoystickGetHat(joy, SDL_HAT_RIGHT) == SDL_PRESSED) {
		avatar->pushRight();
	} else if (SDL_JoystickGetHat(joy, SDL_HAT_DOWN) == SDL_PRESSED) {
		avatar->pushDown();
	} else if (SDL_JoystickGetHat(joy, SDL_HAT_LEFT) == SDL_PRESSED) {
		avatar->pushLeft();
	} else { puts("unknown"); }
}

void Player::pushLeft() {
	hatFlag[PUSH_LEFT] = true;
}

void Player::releaseLeft() {
	hatFlag[PUSH_LEFT] = false;
}

void Player::pushRight() {
	hatFlag[PUSH_RIGHT] = true;
}

void Player::releaseRight() {
	hatFlag[PUSH_RIGHT] = false;
}

void Player::pushUp() {
	hatFlag[PUSH_UP] = true;
}

void Player::releaseUp() {
	hatFlag[PUSH_UP] = false;
}

void Player::pushDown() {
	hatFlag[PUSH_DOWN] = true;
}

void Player::releaseDown() {
	hatFlag[PUSH_DOWN] = false;
}

void Player::pushA() {
	avatar->pushA();
}

void Player::releaseA() {
	avatar->releaseA();
}

void Player::pushB() {
	avatar->pushB();
}

void Player::releaseB() {
	avatar->releaseB();
}

void Player::pushC() {
	avatar->pushC();
}

void Player::releaseC() {
	avatar->releaseC();
}

void Player::pushD() {
	avatar->pushD();
}

void Player::releaseD() {
	avatar->releaseD();
}

void Player::push1() {

}

void Player::push2() {
}

void Player::pushRightUp() {
}

void Player::pushRightDown() {
}

void Player::pushLeftUp() {
}

void Player::pushLeftDown() {
}

void Player::releaseHat() {
}

void Player::releaseButton() {
}