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