Select Git revision
myapp.cpp 3.79 KiB
#include "myapp.hpp"
#define sorszam 9*sorszam_index.sor+sorszam_index.oszlop
#define focus_visszavaltas 9*focus_sorszam.sor+focus_sorszam.oszlop
using namespace std;
using namespace genv;
MyApp::MyApp(int szel, int mag) : Application(szel,mag)
{
_game = new GameMaster(this,"megoldas.txt","feladat.txt");
vector<int> game_feladat = _game->get_feladat();
vector<int> game_save = _game->get_save();
for (int j=0; j<9; j++) // sor
{
for (int i=0; i<9; i++) // oszlop
{
Index sorszam_index(j,i);
Field *f = new Field(this,i*78,j*78,78,sorszam,game_feladat[sorszam]);
palya.push_back(f);
if (game_feladat[sorszam] == 0)
{
palya[sorszam]->set_ertek(game_save[sorszam]);
}
}
}
}
int MyApp::action(std::string id, genv::event ev, int focus)
{
if (id=="start")
{
std::set<int> aura_halmaz = _game->aura(focus); // azert van itt is, hogy a megnyitaskor is rajzoljon aurat
for (int i=0; i<palya.size(); i++)
{
if (aura_halmaz.find(i) != aura_halmaz.end())
{
palya[i]->set_aura_true();
}
else
{
palya[i]->set_aura_false();
}
}
}
if (id=="key")
{
if (ev.keycode==key_up || ev.keycode==key_down ||
ev.keycode==key_left || ev.keycode==key_right)
{
palya[focus]->unfocus();
Index focus_sorszam(focus);
if (ev.keycode==key_up)
{
if (focus_sorszam.sor >0)
focus_sorszam.sor -= 1;
}
else if (ev.keycode==key_down)
{
if (focus_sorszam.sor <8)
focus_sorszam.sor += 1;
}
else if (ev.keycode==key_left)
{
if (focus_sorszam.oszlop >0)
focus_sorszam.oszlop -= 1;
}
else if (ev.keycode==key_right)
{
if (focus_sorszam.oszlop <8)
focus_sorszam.oszlop += 1;
}
focus = focus_visszavaltas;
palya[focus]->kezel(ev);
std::set<int> aura_halmaz = _game->aura(focus);
for (int i=0; i<palya.size(); i++)
{
if (aura_halmaz.find(i) != aura_halmaz.end())
{
palya[i]->set_aura_true();
}
else
{
palya[i]->set_aura_false();
}
}
}
if (ev.keycode >= 49 && ev.keycode <= 57)
{
palya[focus]->set_ertek(ev.keycode-48);
}
if (ev.keycode==key_delete || ev.keycode==key_backspace)
{
palya[focus]->set_ertek(0);
}
_game->save(focus,palya[focus]->get_ertek());
}
if (id=="mouse")
{
if (ev.button==btn_left)
{
for (size_t i=0; i<palya.size(); i++)
{
if (palya[i]->belul(ev.pos_x,ev.pos_y))
{
palya[focus]->unfocus();
focus=i;
palya[focus]->kezel(ev);
}
}
std::set<int> aura_halmaz = _game->aura(focus);
for (int i=0; i<palya.size(); i++)
{
if (aura_halmaz.find(i) != aura_halmaz.end())
{
palya[i]->set_aura_true();
}
else
{
palya[i]->set_aura_false();
}
}
}
}
return focus;
}