diff 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 diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/Player.cpp	Wed Feb 03 03:39:04 2010 +0900
@@ -0,0 +1,185 @@
+/*
+ *  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() {
+}
\ No newline at end of file