#include "gamewindowscene.h" #include <QGraphicsScene> #include <QGraphicsSceneMouseEvent> #include <QDebug> #include "player.h" #include "map.h" #include "gamewindow.h" GameWindowScene::GameWindowScene(Player *p, GameWindow *g, QObject *parent) : QGraphicsScene(0,0,8000,720, parent) { player = p; gamewindow = g; } void GameWindowScene::set_map(Map *m) { map = m; } void GameWindowScene::keyPressEvent(QKeyEvent *event) { switch (event->key()){ case Qt::Key_Right: //qDebug()<<"Press Right"; player->action->move(4); right_event(); break; case Qt::Key_Left: //qDebug()<<"Press Left"; player->action->move(3); left_event(); break; case Qt::Key_Up: //qDebug()<<"Press Up"; player->action->move(1); up_event(); break; case Qt::Key_Down: //qDebug()<<"Press Down"; player->action->move(2); down_event(); break; case Qt::Key_Space: space_event(); break; case Qt::Key_F: f_event(); break; case Qt::Key_Q: q_event(); break; } } void GameWindowScene::mousePressEvent(QGraphicsSceneMouseEvent *event) { qreal x = event->scenePos().x(), y = event->scenePos().y(); qDebug()<<"Mouse Event: ("<<x<<","<<y<<")"; if((player->action->get_status() == 0 || player->action->get_status() == 2) && x >= 800 && y >= 560) { map->open_bag(0, 0); } else if(player->action->get_status() == 6 && x >= 1080 && y <= 70) { map->close_bbq(); } else if(player->action->get_status() == 6 && x >= 540 && x <= 720 && y >= 280 && y <= 430 && player->bag->get_item_num(9)) { player->action->bbq(); } else if(player->action->get_status() == 7 && x >= 1080 && y <= 70) { map->close_stove(); } else if(player->action->get_status() == 7 && x >= 550 && x <= 720 && y >= 300 && y <= 440 && player->bag->get_item_num(1) && player->bag->get_item_num(2)) { player->action->stove(); } else if(player->action->get_status() == 5 && x >= 1080 && y <= 70) { map->close_furnace(); } else if(player->action->get_status() == 5 && x >= 640 && x <= 790 && y >= 340 && y <= 490) { player->action->furnace(map->get_now_use_d()); } else if(player->action->get_status() == 5 && x >= 0 && x <= 220 && y >= 0 && y <= 170) { map->open_furnace(1, 0); } else if(player->action->get_status() == 5 && x >= 0 && x <= 220 && y >= 171 && y <= 340) { map->open_furnace(2, 0); } else if(player->action->get_status() == 5 && x >= 0 && x <= 220 && y >= 341 && y <= 510) { map->open_furnace(3, 0); } else if(player->action->get_status() == 8 && map->get_fight_result() == 0) { // qDebug()<<"fight: "<<map->get_fight_result(); if(x>=240 && x<=400 && y>=515 && y<= 710) { map->open_fight(1, 0, 0); } else if(x>=560 && x<=720 && y>=515 && y<= 710) { map->open_fight(2, 0, 0); } else if(x>=880 && x<=1040 && y>=515 && y<= 710) { map->open_fight(3, 0, 0); } else if(x>=430 && x<=800 && y>=140 && y<= 420) { player->action->attack(); } } else if(player->action->get_status() == 8 && x >= 1080 && y <= 70) { if(player->action->exit_attack(map->get_fight_result())) { map->close_fight(); } } else if(player->action->get_status() == 9) { if(x>=60 && x<=260 && y>=180 && y<= 380) { map->open_bag(0, 0); } else if(x>=300 && x<=500 && y>=180 && y<= 380) { map->open_bag(1, 0); } else if(x>=540 && x<=740 && y>=180 && y<= 380) { map->open_bag(2, 0); } else if(x>=780 && x<=980 && y>=180 && y<= 380) { map->open_bag(3, 0); } else if(x>=1020 && x<=1220 && y>=180 && y<= 380) { map->open_bag(4, 0); } else if(x>=60 && x<=260 && y>=420 && y<= 620) { map->open_bag(5, 0); } else if(x>=300 && x<=500 && y>=420 && y<= 620) { map->open_bag(6, 0); } else if(x>=540 && x<=740 && y>=420 && y<= 620) { map->open_bag(7, 0); } else if(x>=780 && x<=980 && y>=420 && y<= 620) { map->open_bag(8, 0); } else if(x>=1020 && x<=1220 && y>=420 && y<= 620) { map->open_bag(9, 0); } else if(x >= 1080 && y <= 70) { map->close_bag(); } }/* else if(player->action->get_status() == 4 && x >= 1080 && y <= 70) { gamewindow->back_to_main_window(true); }*/ } void GameWindowScene::space_event() { //qDebug()<<"space event"; map->exit_pause(); } void GameWindowScene::f_event() { if((player->action->get_status() == 0 || player->action->get_status() == 2) && map->get_local_item() == 3) { player->action->pick(3); } else if((player->action->get_status() == 0 || player->action->get_status() == 2) && map->get_local_item() == 9) { player->action->pick(9); } else if((player->action->get_status() == 0 || player->action->get_status() == 2) && map->get_local_item() == 10) { player->action->pick(10); } else if((player->action->get_status() == 0 || player->action->get_status() == 2) && map->get_local_item() == 8) { map->open_fight(1, 1, 0); } else if(player->action->get_status() == 8 && map->get_fight_result() == 0) { qDebug()<<"fight"<<map->get_fight_result(); player->action->attack(); } else if(player->action->get_status() == 6 && player->bag->get_item_num(9)) { player->action->bbq(); } else if(player->action->get_status() == 7 && player->bag->get_item_num(1) && player->bag->get_item_num(2)) { player->action->stove(); } else if(player->action->get_status() == 5) { player->action->furnace(map->get_now_use_d()); } else if(player->action->get_status() == 9) { player->action->use_item(); } } void GameWindowScene::q_event() { if(player->action->get_status() == 6) { map->close_bbq(); } else if(player->action->get_status() == 9) { map->close_bag(); } else if(player->action->get_status() == 7) { map->close_stove(); } else if(player->action->get_status() == 5) { map->close_furnace(); } else if(player->action->get_status() == 8) { if(player->action->exit_attack(map->get_fight_result())) { map->close_fight(); } } else if(player->action->get_status() == 4) { gamewindow->back_to_main_window(); } } void GameWindowScene::up_event() { if(player->action->get_status() == 5) { qDebug()<<"up 5"; int ini; if(map->get_now_use_d() == 0) { ini = 1; } else { ini = 0; } if(map->get_now_use_d() == 1) { map->open_furnace(3, ini); } else if(map->get_now_use_d() == 2) { map->open_furnace(1, ini); } else if (map->get_now_use_d() == 3) { map->open_furnace(2, ini); } } else if(player->action->get_status() == 9) { qDebug()<<"bag up"; if(map->get_bag_select() < 5) { map->open_bag(map->get_bag_select()+5, 0); } else { map->open_bag(map->get_bag_select()-5, 0); } } } void GameWindowScene::down_event() { if(player->action->get_status() == 5) { qDebug()<<"down 5"; int ini; if(map->get_now_use_d() == 0) { ini = 1; } else { ini = 0; } if(map->get_now_use_d() == 1) { map->open_furnace(2, ini); } else if(map->get_now_use_d() == 2) { map->open_furnace(3, ini); } else if (map->get_now_use_d() == 3) { map->open_furnace(1, ini); } } else if(player->action->get_status() == 9) { qDebug()<<"bag down"; if(map->get_bag_select() < 5) { map->open_bag(map->get_bag_select()+5, 0); } else { map->open_bag(map->get_bag_select()-5, 0); } } } void GameWindowScene::left_event() { if(player->action->get_status() == 8 && map->get_fight_result() == 0) { qDebug()<<"left 8"; int ini; if(map->get_now_use_d() == 0) { ini = 1; } else { ini = 0; } if(map->get_now_use_d() == 1) { map->open_fight(3, ini, 0); } else if(map->get_now_use_d() == 2) { map->open_fight(1, ini, 0); } else if (map->get_now_use_d() == 3) { map->open_fight(2, ini, 0); } } else if(player->action->get_status() == 9) { qDebug()<<"bag left"; if(map->get_bag_select() == 0) { map->open_bag(9, 0); } else { map->open_bag(map->get_bag_select()-1, 0); } } } void GameWindowScene::right_event() { if(player->action->get_status() == 8 && map->get_fight_result() == 0) { qDebug()<<"left 8"; int ini; if(map->get_now_use_d() == 0) { ini = 1; } else { ini = 0; } if(map->get_now_use_d() == 1) { map->open_fight(2, ini, 0); } else if(map->get_now_use_d() == 2) { map->open_fight(3, ini, 0); } else if (map->get_now_use_d() == 3) { map->open_fight(1, ini, 0); } } else if(player->action->get_status() == 9) { qDebug()<<"bag right"; if(map->get_bag_select() == 9) { map->open_bag(0, 0); } else { map->open_bag(map->get_bag_select()+1, 0); } } } /* void GameWindowScene::keyReleaseEvent(QKeyEvent *event) { switch (event->key()){ case Qt::Key_Right: qDebug()<<"Release Right"; break; } } */