void ChapterScene::backButtonClick(Ref* sender) { GameEvent* gameEvent = new GameEvent(); gameEvent->setEventCode(EVT_BACK_BEGIN); this->fireEvent(gameEvent); this->handleFlashButton(sender); }
void GameEventMgr::GameEventMgrThread::Update() { //Log.Notice("GameEventMgr", "Tick!"); auto now = time(0); for (auto gameEventPair : sGameEventMgr.mGameEvents) { GameEvent* gameEvent = gameEventPair.second; // Don't alter manual events if (!gameEvent->isValid()) continue; auto startTime = time_t(gameEvent->start); if (startTime < now && now < gameEvent->end) { if ((now - startTime) % (gameEvent->occurence * 60) < gameEvent->length * 60) { // Event should start if (gameEvent->state != GAMEEVENT_INACTIVE_FORCED) { gameEvent->StartEvent(); continue; } } continue; } // Event should stop if (gameEvent->state != GAMEEVENT_ACTIVE_FORCED) { gameEvent->StopEvent(); } } }
void Interface::update() { if(isSelfhosted()) { externalGameInput->update(); } else { using namespace boost::interprocess; managed_shared_memory shm(open_only, piga::Host::getInputSharedMemoryName()); std::pair<PlayerInputStruct*, std::size_t> p = shm.find<PlayerInputStruct>("PlayerInput"); GameEvent e; if(m_playerInputs.size() != p.second) { m_playerInputs.resize(p.second); } for(std::size_t i = 0; i < p.second; ++i) { while(p.first[i].pollEvents(m_playerInputs[i], e)) { e.setPlayerID(i); events.push_back(e); } } } }
// ミニゲーム系イベントの失敗コールバックイベントを生成 GameEvent* GameEventHelper::createMiniGameFailureCallbackEvent(rapidjson::Value& json, EventFactory* factory, GameEvent* caller) { if (!this->hasMember(json, member::FALSE_) && !this->hasMember(json, member::ACTION)) return nullptr; GameEvent* event { nullptr }; if (json[member::FALSE_].IsString()) { rapidjson::Value eventJson { DungeonSceneManager::getInstance()->getEventScript()->getScriptJson(json[member::FALSE_].GetString()) }; event = factory->createGameEvent(eventJson, nullptr); event->setEventId(stoi(json[member::FALSE_].GetString())); } if (json[member::FALSE_].IsArray()) event = factory->createGameEvent(json[member::FALSE_], caller); // NOTICE: これ不要? if (this->hasMember(json, member::ACTION)) { if (json[member::ACTION].IsString()) { rapidjson::Value eventJson { DungeonSceneManager::getInstance()->getEventScript()->getScriptJson(json[member::ACTION].GetString()) }; event = factory->createGameEvent(eventJson, nullptr); event->setEventId(stoi(json[member::ACTION].GetString())); } if(json[member::ACTION].IsArray()) event = factory->createGameEvent(json[member::ACTION], caller); } return event; }
void Game::moveArmy(int src, int dst, int count) { GameEvent* gameEvent = new GameEvent(Constants::TYPE_MOVE); gameEvent->addArg(src); gameEvent->addArg(dst); gameEvent->addArg(count); eventHandler->addEvent(gameEvent); }
void ChapterScene::onKeyRelease(EventKeyboard::KeyCode keyCode, cocos2d::Event *event) { Director::getInstance()->getEventDispatcher()->removeEventListener(this->listener); if (keyCode == EventKeyboard::KeyCode::KEY_BACKSPACE) { GameEvent* gameEvent = new GameEvent(); gameEvent->setEventCode(EVT_BACK_BEGIN); this->fireEvent(gameEvent); } }
GameEventContainer *Server_Game::prepareGameEvent(const ::google::protobuf::Message &gameEvent, int playerId, GameEventContext *context) { GameEventContainer *cont = new GameEventContainer; cont->set_game_id(gameId); if (context) cont->mutable_context()->CopyFrom(*context); GameEvent *event = cont->add_event_list(); if (playerId != -1) event->set_player_id(playerId); event->GetReflection()->MutableMessage(event, gameEvent.GetDescriptor()->FindExtensionByName("ext"))->CopyFrom(gameEvent); return cont; }
GameEvent::GameEvent ( GAME_EVENT type, GameEventArgList * args, sint32 serial, GAME_EVENT addedDuring ) : m_type (type), m_argList (args), m_resumeIndex (-1), // Handling not started yet m_addedDuring (addedDuring), m_serial (serial), m_line (-1), // Line invalid m_file (NULL), m_contextName (NULL) { /// @todo Improve code style // Instead of accessing global variables (which may or may not exist), // better pass the data as arguments. if(g_slicEngine->GetContext()) { m_line = g_slicEngine->GetContext()->GetFrame()->GetCurrentLine(); const char * file = g_slicEngine->GetContext()->GetFrame()->GetSlicSegment()->GetFilename(); const char * name = g_slicEngine->GetContext()->GetFrame()->GetSlicSegment()->GetName(); m_file = new char[strlen(file) + 1]; m_contextName = new char[strlen(name) + 1]; strcpy(m_file , file); strcpy(m_contextName, name); } else if(g_gevManager->GetHeadEvent() && g_gevManager->GetHeadEvent()->GetLine() >= 0 ){ GameEvent * event = g_gevManager->GetHeadEvent(); m_line = event->GetLine(); const char * file = event->GetFile(); const char * name = event->GetContextName(); m_file = new char[strlen(file) + 1]; m_contextName = new char[strlen(name) + 1]; strcpy(m_file , file); strcpy(m_contextName, name); } }
/** Update method called by the subject in observer pattern */ void AchievementSystem::update(GameEvent event) { for(int i =0; i < numOfAchievements; i++) { //check if the achievement is finished if (achievements[i]->updateProgress(event.getType(), event.getValue())) { //if so unlock the achievement achievements[i]->unlock(); numUnlocked++; removeAchievement((achievements[i])); unlockedAchievements.push_back(achievements[i]); } } }
void LevelScene::onKeyRelease(EventKeyboard::KeyCode keyCode, cocos2d::Event *event) { if (this->dialogLayer->isVisible()) { return; } if (keyCode == EventKeyboard::KeyCode::KEY_BACK) { GameEvent* clickButtonEvent = new GameEvent(); clickButtonEvent->setEventCode(EVT_CLICK_BUTTON); this->fireEvent(clickButtonEvent); GameEvent* gameEvent = new GameEvent(); gameEvent->setEventCode(EVT_BACK_CHAPTER); this->fireEvent(gameEvent); } }
void PlayerInputStruct::fromGameEvent(GameEvent &e) { if(e.type() == GameEvent::GameInput) { fromGameEvent(e.gameInput.control(), e.gameInput.state()); } }
bool Game::on_event(const GameEvent& event) { if (event.id() == game_event::QUIT) { m_state = QUIT; return true; } return false; }
void ChapterScene::onTouchEnded(Touch* touch, Event* event) { GameModel* gameModel = GameModel::getInstance(); this->updatePageAuto(); Point point = this->convertTouchToNodeSpace(touch); bool moveTooFar = false; float dx = point.x - this->firstPoint.x; float dy = point.y - this->firstPoint.y; if (abs(dx) > CONF_TOUCH_RANGE || abs(dy) > CONF_TOUCH_RANGE) { moveTooFar = true; } point = point - this->chapterLayer->getPosition(); for (int i = 0; i < this->chapterLayer->getChildren().size(); i++) { Face* chapterFace = dynamic_cast<Face*>(this->chapterLayer->getChildren().at(i)); if (chapterFace != NULL) { RectBody* chapterBody = new RectBody(chapterFace->getContentSize().width, chapterFace->getContentSize().height); chapterBody->setPosition(chapterFace->getPosition()); if (chapterBody->contains(point)) { if (!moveTooFar && chapterFace->getTag() != -1) { if (!gameModel->checkLevelRequireSocial(i + 1)) { this->shareLayer->show(TXT_REQUIRE_SHARE); GameEvent* gameEvent = new GameEvent(); gameEvent->setEventCode(EVT_SHOW_SHARE_REQUIRED); this->fireEvent(gameEvent); } else { DataEvent* gameEvent = new DataEvent(); gameEvent->setEventCode(EVT_START_PLAY); gameEvent->setArgumentInt(chapterFace->getTag()); this->fireEvent(gameEvent); this->_eventDispatcher->removeEventListener(this->touchListener); } } this->flash(chapterFace); break; } } } }
bool PadLayer::onTouchBegan(Touch* touch, Event* event) { Point point = this->convertTouchToNodeSpace(touch); if (Utils::isPointInRectangle(point, this->padA->getPosition(), CONF_RANGE_TO_TOUCH * 2, CONF_RANGE_TO_TOUCH * 2)) { this->padA->setOpacity(255); this->touchPadA = touch; GameEvent* gameEvent = new GameEvent(); gameEvent->setEventCode(EVT_JUMP); parent->fireEvent(gameEvent); } else if (Utils::isPointInRectangle(point, this->padB->getPosition(), CONF_RANGE_TO_TOUCH * 2, CONF_RANGE_TO_TOUCH * 2)) { this->padB->setOpacity(255); this->touchPadB = touch; GameEvent* gameEvent = new GameEvent(); gameEvent->setEventCode(EVT_PUNCH); parent->fireEvent(gameEvent); } return true; }
bool PlayerInputStruct::pollEvents(PlayerInputStruct &oldInputs, GameEvent &e) { //Check if the given event is already a game input event. if(e.type() != GameEvent::GameInput) { e = event::GameInput(); } if(oldInputs.action() != action()) { e.gameInput.setControl(GameControl::ACTION); e.gameInput.setState(action()); oldInputs.setAction(action()); return true; } if(oldInputs.up() != up()) { e.gameInput.setControl(GameControl::UP); e.gameInput.setValue(up()); oldInputs.setUp(up()); return true; } if(oldInputs.down() != down()) { e.gameInput.setControl(GameControl::DOWN); e.gameInput.setValue(down()); oldInputs.setDown(down()); return true; } if(oldInputs.left() != left()) { e.gameInput.setControl(GameControl::LEFT); e.gameInput.setValue(left()); oldInputs.setLeft(left()); return true; } if(oldInputs.right() != right()) { e.gameInput.setControl(GameControl::RIGHT); e.gameInput.setValue(right()); oldInputs.setRight(right()); return true; } if(oldInputs.button1() != button1()) { e.gameInput.setControl(GameControl::BUTTON1); e.gameInput.setState(button1()); oldInputs.setButton1(button1()); return true; } if(oldInputs.button2() != button2()) { e.gameInput.setControl(GameControl::BUTTON2); e.gameInput.setState(button2()); oldInputs.setButton2(button2()); return true; } if(oldInputs.button3() != button3()) { e.gameInput.setControl(GameControl::BUTTON3); e.gameInput.setState(button3()); oldInputs.setButton3(button3()); return true; } if(oldInputs.button4() != button4()) { e.gameInput.setControl(GameControl::BUTTON4); e.gameInput.setState(button4()); oldInputs.setButton4(button4()); return true; } if(oldInputs.button5() != button5()) { e.gameInput.setControl(GameControl::BUTTON5); e.gameInput.setState(button5()); oldInputs.setButton5(button5()); return true; } if(oldInputs.button6() != button6()) { e.gameInput.setControl(GameControl::BUTTON6); e.gameInput.setState(button6()); oldInputs.setButton6(button6()); return true; } return false; }
void LevelScene::backButtonClick(Ref* sender) { GameEvent* gameEvent = new GameEvent(); gameEvent->setEventCode(EVT_BACK_CHAPTER); this->fireEvent(gameEvent); }
void Level::frogStop() { this->frog->setPosition(this->frog->getCurrentTargetPoint()); this->frog->getBody()->setVelocity(Point::ZERO); this->frog->setJumping(false); // check if has no ways to goes further int remainLeaf = 0; __Array* allLeavesKey = this->getLeaves()->allKeys(); for (int i = 0; i < allLeavesKey->count(); i++) { __Integer* key = (__Integer*) allLeavesKey->getObjectAtIndex(i); Leaf* leaf = (Leaf*) this->getLeaves()->objectForKey(key->getValue()); if (!leaf->getDrowning()) { remainLeaf++; } } if (remainLeaf > 1) { int frogRow = (this->frog->getPositionIndex() - 1) / CONFIG_LAGOON_WIDTH; int sizeOfLagoon = CONFIG_LAGOON_WIDTH * CONFIG_LAGOON_HEIGHT; bool deadLock = true; if (this->frog->getViewDirection() == VIEW_LEFT || this->frog->getViewDirection() == VIEW_UP || this->frog->getViewDirection() == VIEW_DOWN) { int checkIndex = this->frog->getPositionIndex(); while ((--checkIndex - 1) / CONFIG_LAGOON_WIDTH == frogRow) { if (this->leaves->objectForKey(checkIndex) != NULL) { deadLock = false; break; } } } if (this->frog->getViewDirection() == VIEW_RIGHT || this->frog->getViewDirection() == VIEW_UP || this->frog->getViewDirection() == VIEW_DOWN) { int checkIndex = this->frog->getPositionIndex(); while ((++checkIndex - 1) / CONFIG_LAGOON_WIDTH == frogRow) { if (this->leaves->objectForKey(checkIndex) != NULL) { deadLock = false; break; } } } if (this->frog->getViewDirection() == VIEW_LEFT || this->frog->getViewDirection() == VIEW_RIGHT || this->frog->getViewDirection() == VIEW_UP) { int checkIndex = this->frog->getPositionIndex(); checkIndex += CONFIG_LAGOON_WIDTH; while ((checkIndex - 1) < sizeOfLagoon) { if (this->leaves->objectForKey(checkIndex) != NULL) { deadLock = false; break; } checkIndex += CONFIG_LAGOON_WIDTH; } } if (this->frog->getViewDirection() == VIEW_LEFT || this->frog->getViewDirection() == VIEW_RIGHT || this->frog->getViewDirection() == VIEW_DOWN) { int checkIndex = this->frog->getPositionIndex(); checkIndex -= CONFIG_LAGOON_WIDTH; while ((checkIndex - 1) >= 0) { if (this->leaves->objectForKey(checkIndex) != NULL) { deadLock = false; break; } checkIndex -= CONFIG_LAGOON_WIDTH; } } if (deadLock) { this->hanged = true; GameModel* gameModel = GameModel::getInstance(); GameEvent* gameEvent = new GameEvent(); gameEvent->setEventCode(EVT_DEAD_LOCK_GAME); gameModel->fireEvent(gameEvent); } } }