Пример #1
0
GameScene::GameScene(QWidget *parent) :
    QGraphicsScene(parent),
    myLock(false)
{
  inputDisabled = true;

  dconfirm = new ConfirmDialog();
  addWidget(dconfirm, Qt::FramelessWindowHint);
  dconfirm->hide();

  menu = new MenuWidget();
  addWidget(menu);
  menu->activate();

  connect(menu, SIGNAL(menuNew()), this, SLOT(on_menuNew()));
  connect(menu, SIGNAL(menuContinue()), this, SLOT(on_menuContinue()));
  connect(menu, SIGNAL(menuExit()), this, SLOT(on_menuExit()));
  connect(menu, SIGNAL(menuPauseBack()), this, SLOT(on_menuPauseBack()));
  connect(menu, SIGNAL(menuRestartLevel()), this, SLOT(on_menuRestartLevel()));
  connect(menu, SIGNAL(menuAbandonGame()), this, SLOT(on_menuAbandonGame()));
  connect(menu, SIGNAL(menuThemeChanged()), this, SLOT(on_menuThemeChanged()));
  connect(menu, SIGNAL(menuGameStart()), this, SLOT(on_menuGameStart()));
  connect(menu, SIGNAL(menuLevelPack()), this, SLOT(on_menuLevelPack()));

  stat = new StatInfo();

  connect(gameProfile, SIGNAL(profileChanged()), this, SLOT(initProfile()));

  rows = cols = 0;

  xoff = 20;
  yoff = 10;

  advanceTimer = new QTimer(this);
  advanceTimer->setInterval(30);
  connect(advanceTimer, SIGNAL(timeout()), this, SLOT(nextCycle()));

  timeTimer = new QTimer(this);
  timeTimer->setInterval(1000);
  connect(timeTimer, SIGNAL(timeout()), this, SLOT(countTime()));

  bonusTimer = new QTimer(this);
  bonusTimer->setInterval(500);
  connect(bonusTimer, SIGNAL(timeout()), this, SLOT(countBonusTime()));

  hintTimer = new QTimer(this);
  hintTimer->setInterval(10000);
  connect(hintTimer, SIGNAL(timeout()), this, SLOT(hintAvailableMoves()));

  // init components
  GameStock::init();

  toolset = new ToolSet();

  gameBonus = new GameBonus();

  setSceneRect(0,0, WIDTH, HEIGHT);

  // set background
  gameBackground = new GameBackground();
  setBackgroundBrush(Qt::black);

  setDefaultGameCursor();

  // update max level for current pack
  max_level = gameProfile->levelPackCount(gameProfile->currentLevelPack());

  // very first initialization
  initGame();
}
Пример #2
0
void MainMenu::CursorEvent( OguiButtonEvent* eve )
{
	if( abortGame )
	{
		MenuBaseImpl::CursorEvent( eve );
		if( eve->eventType == OGUI_EMASK_CLICK )
		{
			switch( eve->triggerButton->GetId() )
			{
				case COMMANDS_YES:
					menuCollection->newMission();
					break;

				case COMMANDS_NO:
					closeAbortMenu();
					break;
			}
		}
	}
	else 
	{
		MenuBaseImpl::CursorEvent( eve );
		
		if( eve->eventType == OGUI_EMASK_CLICK )
		{
			if( currentActive && eve->triggerButton->GetId() != COMMANDS_CONTINUE )
			{
				currentActive->SetFont( fonts->medium.normal );

				if( currentActive == eve->triggerButton )
				{
					menuCollection->closeMenu();
					return;
				}
				else
				{
					menuCollection->closeMenu();
				}
			}
			
			currentActive = eve->triggerButton;
			if( currentActive )
				currentActive->SetFont( fonts->medium.highlighted );

			switch( eve->triggerButton->GetId() )
			{
			case COMMANDS_RESUME:
				menuResume();
				break;

			case COMMANDS_CONTINUE:
				menuContinue();
				break;

			case COMMANDS_NEW_GAME:
				menuNewGame();
				break;
			case COMMANDS_LOAD_GAME:
				menuLoadGame();
				break;
#ifdef PROJECT_SURVIVOR
			case COMMANDS_SURVIVAL:
				menuSurvival();
				break;
			case COMMANDS_COOP:
				menuCoop();
				break;
#endif
			case COMMANDS_PROFILES:
				menuProfiles();
				break;
			case COMMANDS_OPTIONS:
				menuOptions();
				break;
			
			case COMMANDS_CREDITS:
				menuCredits();
				break;

			case COMMANDS_QUIT:
				menuQuit();
				break;
			
			case COMMANDS_EASY:
			case COMMANDS_NORMAL:
			case COMMANDS_HARD:
				selectDifficultButton( eve->triggerButton->GetId() );
				break;

			default:
				// This should not happen
				assert( false );
				break;
			};
		}
	}

}
Пример #3
0
void MenuWidget::on_bContinue_clicked()
{
    emit menuContinue();
}