void GameStateNew::logic() { if (!input_name->inFocus) tablist.logic(); button_permadeath->checkClick(); if (show_classlist) class_list->checkClick(); // require character name if (input_name->getText() == "") { if (button_create->enabled) { button_create->enabled = false; button_create->refresh(); } } else { if (!button_create->enabled) { button_create->enabled = true; button_create->refresh(); } } if ((inpt->pressing[CANCEL] && !inpt->lock[CANCEL]) || button_exit->checkClick()) { inpt->lock[CANCEL] = true; delete requestedGameState; requestedGameState = new GameStateLoad(); } if (button_create->checkClick()) { // start the new game GameStatePlay* play = new GameStatePlay(); Avatar *pc = play->getAvatar(); pc->stats.gfx_base = base[current_option]; pc->stats.gfx_head = head[current_option]; pc->stats.gfx_portrait = portrait[current_option]; pc->stats.name = input_name->getText(); pc->stats.permadeath = button_permadeath->isChecked(); play->game_slot = game_slot; play->resetGame(); play->loadClass(class_list->getSelected()); requestedGameState = play; } // scroll through portrait options if (button_next->checkClick()) { current_option++; if (current_option == (int)portrait.size()) current_option = 0; loadPortrait(portrait[current_option]); setName(name[current_option]); } else if (button_prev->checkClick()) { current_option--; if (current_option == -1) current_option = portrait.size()-1; loadPortrait(portrait[current_option]); setName(name[current_option]); } input_name->logic(); if (input_name->getText() != name[current_option]) modified_name = true; }