void Dmc3xlTimeline::onTimer(Timer *sender) { #ifdef DEBUG debugString("Dmc3xlTimeline::onTimer"); debug(sender->id); #endif switch (sender->id) { case TIMER_SWITCH_UP: sendSwitchUp(); setLedDuration(ledRight, 1, 100); break; case TIMER_SWITCH_DOWN: sendSwitchDown(); setLedDuration(ledLeft, 1, 100); break; case TIMER_LEVEL_UP: setLevel(); sendLevel(); setLedDuration(ledRight, 1, 100); break; case TIMER_LEVEL_DOWN: setLevel(); sendLevel(); setLedDuration(ledLeft, 1, 100); break; } }
void NetManager::update() { mTick++; ENetEvent event; // TODO: remove this block when we handle level switching properly auto player = FAWorld::World::get()->getCurrentPlayer(); if(player->getLevel()) mLevelIndexTmp = player->getLevel()->getLevelIndex(); else mLevelIndexTmp = -1; while(enet_host_service(mHost, &event, 0)) { switch(event.type) { case ENET_EVENT_TYPE_CONNECT: { if(mIsServer) { auto player = spawnPlayer(-1); // send the client its player id auto packet = enet_packet_create(NULL, sizeof(size_t), ENET_PACKET_FLAG_RELIABLE); size_t position = 0; writeToPacket(packet, position, player->getId()); enet_peer_send(event.peer, RELIABLE_CHANNEL_ID, packet); sendLevel(0, event.peer); sendLevel(1, event.peer); mClients.push_back(event.peer); mServerPlayerList[event.peer->connectID] = player; } break; } case ENET_EVENT_TYPE_RECEIVE: { if(mIsServer) readClientPacket(event); else readServerPacket(event); break; } default: { break; } } } if(mIsServer && mClients.size() > 0) sendServerPacket(); else if(mServerPeer != NULL) sendClientPacket(); enet_host_flush(mHost); }