removed many Irrlicht references

This commit is contained in:
devZoGok
2021-10-31 15:13:47 +02:00
parent 0e236a44d6
commit b18b2fe9a8
70 changed files with 1822 additions and 1529 deletions
+108 -91
View File
@@ -1,109 +1,126 @@
#include <cmath>
#include "eventListener.h"
#include "stateManager.h"
using namespace irr;
using namespace std;
namespace game{
namespace core{
EventListener::EventListener(GameManager* gM) {
gameManager = gM;
}
double *posX,*posY,strX,strY;
int width,height;
void foo(GLFWwindow *window,double newPosX,double newPosY){
strX=(*posX-newPosX)/width,strY=(newPosY-*posY)/height;
}
EventListener::~EventListener() {}
InputManager::InputManager(GLFWwindow *window){
this->stateManager = GameManager::getSingleton()->getStateManager();
this->window = window;
posX = new double, posY = new double;
}
bool EventListener::OnEvent(const SEvent& event) {
int offsetTrigger = -1;
StateManager *stateManager = GameManager::getSingleton()->getStateManager();
InputManager::~InputManager(){}
if (event.EventType == EET_KEY_INPUT_EVENT) {
for (int i = 0; i < stateManager->getAppStateNumber(); i++) {
for (Key *k : stateManager->getAppState(i)->getKeys()) {
if (k->key && k->trigger == event.KeyInput.Key) {
if (!k->analog) {
if (!event.KeyInput.PressedDown)
k->beingUsed=false;
void InputManager::update(){
GameManager *gm = GameManager::getSingleton();
width = gm->getWidth(), height = gm->getHeight();
if (!k->beingUsed) {
if (event.KeyInput.PressedDown)
k->beingUsed=true;
glfwGetCursorPos(window,posX,posY);
int joystick;
int numAxis=3,numButtons=6;
const u8 *buttons;
const float *axis;
k->pressed=event.KeyInput.PressedDown;
stateManager->getAppState(i)->onAction(k->bind, k->pressed);
}
} else {
k->pressed=event.KeyInput.PressedDown;
stateManager->getAppState(i)->onAnalog(k->bind, 0.);
}
}
if(glfwJoystickPresent(GLFW_JOYSTICK_1)){
joystick = GLFW_JOYSTICK_1;
axis = glfwGetJoystickAxes(joystick, &numAxis);
buttons = glfwGetJoystickButtons(joystick, &numButtons);
}
stateManager->getAppState(i)->onRawKeyPress(event.KeyInput);
}
}
}
else if (event.EventType == EET_MOUSE_INPUT_EVENT && event.MouseInput.Event != EMIE_MOUSE_MOVED) {
bool isPressed = false;
switch (event.MouseInput.Event) {
case EMIE_LMOUSE_PRESSED_DOWN:
offsetTrigger = 0;
isPressed = true;
break;
case EMIE_LMOUSE_LEFT_UP:
offsetTrigger = 0;
isPressed = false;
break;
case EMIE_MMOUSE_PRESSED_DOWN:
offsetTrigger = 1;
isPressed = true;
break;
case EMIE_MMOUSE_LEFT_UP:
offsetTrigger = 1;
isPressed = false;
break;
case EMIE_RMOUSE_PRESSED_DOWN:
offsetTrigger = 2;
isPressed = true;
break;
case EMIE_RMOUSE_LEFT_UP:
offsetTrigger = 2;
isPressed = false;
break;
case EMIE_MOUSE_WHEEL:
if (event.MouseInput.Wheel == 1)
offsetTrigger = 3;
else
offsetTrigger = 4;
break;
}
for(int j = 0; j < stateManager->getAppStates().size(); j++){
AbstractAppState *a = stateManager->getAppStates()[j];
for (int i = 0; i < stateManager->getAppStateNumber(); i++) {
for (Key *k : stateManager->getAppState(i)->getKeys()) {
if (offsetTrigger == k->trigger) {
if (!k->analog) {
k->pressed=isPressed;
stateManager->getAppState(i)->onAction(k->bind, k->pressed);
} else {
k->beingUsed=isPressed;
}
}
for(int i = 0; i < a->getKeysNumber(); i++){
Mapping *m = a->getKey(i);
if(offsetTrigger<=2)
stateManager->getAppState(i)->onRawMousePress(event.MouseInput);
}
}
}
return false;
}
if(m->action){
bool pressed;
void EventListener::update() {
StateManager *stateManager = GameManager::getSingleton()->getStateManager();
switch(m->type){
case Mapping::KEYBOARD:
pressed=glfwGetKey(window,m->trigger);
break;
case Mapping::MOUSE_KEY:
pressed=glfwGetMouseButton(window,m->trigger);
break;
case Mapping::JOYSTICK_KEY:
if(glfwJoystickPresent(GLFW_JOYSTICK_1)){
pressed=buttons[m->trigger];
}
break;
}
for (int i = 0; i < stateManager->getAppStateNumber(); i++) {
for (Key *k : stateManager->getAppState(i)->getKeys()) {
if (k->beingUsed && k->analog) {
stateManager->getAppState(i)->onAnalog(k->bind, 0.);
}
}
}
}
if((pressed&&!m->pressed)||(!pressed&&m->pressed)){
m->pressed=pressed;
a->onAction(m->bind,pressed);
}
}
else{
switch(m->type){
case Mapping::MOUSE_AXIS:
{
float str;
switch(m->trigger){
case Mapping::MOUSE_AXIS_LEFT:
case Mapping::MOUSE_AXIS_RIGHT:
str=strX;
break;
case Mapping::MOUSE_AXIS_UP:
case Mapping::MOUSE_AXIS_DOWN:
str=strY;
break;
}
a->onAnalog(m->bind,str);
break;
}
case Mapping::JOYSTICK_AXIS:
{
int axisId = (m->trigger - (m->trigger % 2 > 0)) / 2;
float str = fabs(axis[axisId]) >= .1 ? axis[axisId] : 0;
if(fabs(str)>0)
a->onAnalog(m->bind,str);
break;
}
}
}
}
/*
for(int i=0;i<350;i++){
if(glfwGetKey(window,i))
a->onRawKeyButton(i);
else if(glfwGetMouseButton(window,i))
a->onRawMouseButton(i);
}
*/
glfwSetCursorPosCallback(window,foo);
/*
if(glfwJoystickPresent(GLFW_JOYSTICK_1)){
for(int i=0;i<numAxis;i++)
if(abs(axis[i])==1)
a->onRawJoystickAxis(i,axis[i]);
for(int i=0;i<numButtons;i++)
if(buttons[i])
a->onRawJoystickButton(i);
}
*/
}
}
}
}