void MMapperPluginParser::submit() { m_descriptionReady = false; // non standard end of description parsed (fog, dark or so ...) if (Patterns::matchNoDescriptionPatterns(m_roomName)) { qDebug() << "* fog, dark or so ..., nulling strings"; m_roomName = nullString; m_dynamicRoomDesc = nullString; m_staticRoomDesc = nullString; } if (!queue.isEmpty()) { CommandIdType c = queue.dequeue(); if ( c != CID_SCOUT ) { emit showPath(queue, false); characterMoved(_move, m_roomName, m_dynamicRoomDesc, m_staticRoomDesc, m_exitsFlags, m_promptFlags); if (c != _move) queue.clear(); _move = CID_LOOK; } } else { //emit showPath(queue, false); characterMoved(_move, m_roomName, m_dynamicRoomDesc, m_staticRoomDesc, m_exitsFlags, m_promptFlags); _move = CID_LOOK; } m_exitsFlags = 0; m_promptFlags = 0; m_roomName = nullString; m_dynamicRoomDesc = nullString; m_staticRoomDesc = nullString; }
void Oubliette::keyPressEvent(QKeyEvent *ke) { QPoint newPos = m_character.position(); switch (ke->key()) { case Qt::Key_Up: case Qt::Key_K: newPos.ry() -= 1; break; case Qt::Key_Down: case Qt::Key_J: newPos.ry() += 1; break; case Qt::Key_Left: case Qt::Key_H: newPos.rx() -= 1; break; case Qt::Key_Right: case Qt::Key_L: newPos.rx() += 1; break; case Qt::Key_I: showInventory(); break; default: QWidget::keyPressEvent(ke); } if (tryMove(newPos)) { QRect r(QPoint((newPos.x() - 8) * TileWidth, (newPos.y() - 8) * TileHeight), QSize(24 * TileWidth, 24 * TileHeight)); update(r); emit characterMoved(visualCursorPos()); } }
QT_BEGIN_NAMESPACE OublietteView::OublietteView() { m_oubliette = new Oubliette; setWidget(m_oubliette); setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn); setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOn); connect(m_oubliette, SIGNAL(characterMoved(QPoint)), this, SLOT(scrollToCharacter(QPoint))); setFocusPolicy(Qt::NoFocus); m_oubliette->setFocus(); scrollToCharacter(m_oubliette->visualCursorPos()); }
void Parser::parseNewMudInput(IncomingData& data /*TelnetIncomingDataQueue& que*/) { bool staticLine = false; bool dontSendToUser = false; /*IncomingData data; bool staticLine; while ( !que.isEmpty() ) { data = que.dequeue(); */ //dline = (quint8 *)data.line.data(); switch (data.type) { case TDT_DELAY: case TDT_MENU_PROMPT: case TDT_LOGIN: case TDT_LOGIN_PASSWORD: case TDT_TELNET: case TDT_SPLIT: case TDT_UNKNOWN: #ifdef PARSER_STREAM_DEBUG_INPUT_TO_FILE (*debugStream) << "***STYPE***"; (*debugStream) << "Other"; (*debugStream) << "***ETYPE***"; #endif emit sendToUser(data.line); break; case TDT_PROMPT: #ifdef PARSER_STREAM_DEBUG_INPUT_TO_FILE (*debugStream) << "***STYPE***"; (*debugStream) << "Prompt"; (*debugStream) << "***ETYPE***"; #endif m_stringBuffer = QString::fromAscii(data.line.constData(), data.line.size()); m_stringBuffer = m_stringBuffer.simplified(); latinToAscii(m_stringBuffer); if (m_readingRoomDesc) { m_readingRoomDesc = false; // we finished read desc mode m_descriptionReady = true; if (m_examine) m_examine = false; // stop showing bypassing brief-mode } if (m_descriptionReady) { m_descriptionReady = false; parsePrompt(m_stringBuffer); if (!queue.isEmpty()) { CommandIdType c = queue.dequeue(); if ( c != CID_SCOUT ){ //qDebug("%s",m_roomName.toAscii().data()); //qDebug("%s",m_dynamicRoomDesc.toAscii().data()); emit showPath(queue, false); characterMoved(c, m_roomName, m_dynamicRoomDesc, m_staticRoomDesc, m_exitsFlags, m_promptFlags); } //additional scout move needs to be removed when scout was successful else queue.dequeue(); } else { //qDebug("%s",m_roomName.toAscii().data()); //qDebug("%s",m_dynamicRoomDesc.toAscii().data()); emit showPath(queue, false); characterMoved(CID_NONE, m_roomName, m_dynamicRoomDesc, m_staticRoomDesc, m_exitsFlags, m_promptFlags); } } emit sendToUser(data.line); break; case TDT_CRLF: #ifdef PARSER_STREAM_DEBUG_INPUT_TO_FILE (*debugStream) << "***STYPE***"; (*debugStream) << "CRLF"; (*debugStream) << "***ETYPE***"; #endif if (data.line.contains("null)>")) break; m_stringBuffer = QString::fromAscii(data.line.constData(), data.line.size()); m_stringBuffer = m_stringBuffer.simplified(); latinToAscii(m_stringBuffer); if (m_readingRoomDesc) { if (isEndOfRoomDescription(m_stringBuffer)) // standard end of description parsed { m_readingRoomDesc = false; // we finished read desc mode m_descriptionReady = true; dontSendToUser = true; } else if (m_stringBuffer.isEmpty()) // standard end of description parsed { m_readingRoomDesc = false; // we finished read desc mode m_descriptionReady = true; if (Config().m_emulatedExits) emulateExits(); } else // reading room description line { switch(Config().m_roomDescriptionsParserType) { case Configuration::RDPT_COLOR: if ((m_readingStaticDescLines == true) && isStaticRoomDescriptionLine(m_stringBuffer)) { staticLine = true; m_staticRoomDesc += m_stringBuffer+"\n"; } else { m_readingStaticDescLines = false; m_dynamicRoomDesc += m_stringBuffer+"\n"; } m_roomDescLines++; break; case Configuration::RDPT_PARSER: if ((m_roomDescLines >= Config().m_minimumStaticLines) && ((m_readingStaticDescLines == false) || Patterns::matchDynamicDescriptionPatterns(m_stringBuffer))) { m_readingStaticDescLines = false; m_dynamicRoomDesc += m_stringBuffer+"\n"; } else { staticLine = true; m_staticRoomDesc += m_stringBuffer+"\n"; } m_roomDescLines++; break; case Configuration::RDPT_LINEBREAK: m_dynamicRoomDesc += m_stringBuffer+"\n"; m_roomDescLines++; break; } } } else if (!m_readingRoomDesc && m_descriptionReady) //read betwen Exits and Prompt (track for example) { if ( isRoomName(m_stringBuffer) ) //Room name arrived { if (m_descriptionReady) { m_descriptionReady = false; if (!queue.isEmpty()) { CommandIdType c = queue.dequeue(); if ( c != CID_SCOUT ){ emit showPath(queue, false); characterMoved(c, m_roomName, m_dynamicRoomDesc, m_staticRoomDesc, m_exitsFlags, m_promptFlags); } //additional scout move needs to be removed when scout was successful else queue.dequeue(); } else { emit showPath(queue, false); characterMoved(CID_NONE, m_roomName, m_dynamicRoomDesc, m_staticRoomDesc, m_exitsFlags, m_promptFlags); } } m_readingRoomDesc = true; //start of read desc mode m_descriptionReady = false; m_roomName=m_stringBuffer; m_dynamicRoomDesc=nullString; m_staticRoomDesc=nullString; m_roomDescLines = 0; m_readingStaticDescLines = true; m_exitsFlags = 0; } else if (!m_stringBuffer.isEmpty()) parseMudCommands(m_stringBuffer); } else if ( isRoomName(m_stringBuffer) ) //Room name arrived { if (m_descriptionReady) { m_descriptionReady = false; if (!queue.isEmpty()) { CommandIdType c = queue.dequeue(); if ( c != CID_SCOUT ){ emit showPath(queue, false); characterMoved(c, m_roomName, m_dynamicRoomDesc, m_staticRoomDesc, m_exitsFlags, m_promptFlags); } //additional scout move needs to be removed when scout was successful else queue.dequeue(); } else { emit showPath(queue, false); characterMoved(CID_NONE, m_roomName, m_dynamicRoomDesc, m_staticRoomDesc, m_exitsFlags, m_promptFlags); } } m_readingRoomDesc = true; //start of read desc mode m_descriptionReady = false; m_roomName=m_stringBuffer; m_dynamicRoomDesc=nullString; m_staticRoomDesc=nullString; m_roomDescLines = 0; m_readingStaticDescLines = true; m_exitsFlags = 0; } else if (!m_stringBuffer.isEmpty() && Patterns::matchNoDescriptionPatterns(m_stringBuffer)) // non standard end of description parsed (fog, dark or so ...) { m_readingRoomDesc = false; // we finished read desc mode m_descriptionReady = true; m_roomName=nullString; m_dynamicRoomDesc=nullString; m_staticRoomDesc=nullString; m_roomDescLines = 0; m_readingStaticDescLines = false; m_exitsFlags = 0; m_promptFlags = 0; } else // parse standard input (answers) from server { //str=removeAnsiMarks(m_stringBuffer); if (!m_stringBuffer.isEmpty()) parseMudCommands(m_stringBuffer); } if (!dontSendToUser && !(staticLine && (m_examine || Config().m_brief))) emit sendToUser(data.line); break; case TDT_LFCR: #ifdef PARSER_STREAM_DEBUG_INPUT_TO_FILE (*debugStream) << "***STYPE***"; (*debugStream) << "LFCR"; (*debugStream) << "***ETYPE***"; #endif m_stringBuffer = QString::fromAscii(data.line.constData(), data.line.size()); m_stringBuffer = m_stringBuffer.simplified(); latinToAscii(m_stringBuffer); if (m_readingRoomDesc && (Config().m_roomDescriptionsParserType == Configuration::RDPT_LINEBREAK) ) { staticLine = true; m_staticRoomDesc += m_stringBuffer+"\n"; m_roomDescLines++; } if (!(staticLine && (m_examine || Config().m_brief))) emit sendToUser(data.line); break; case TDT_LF: #ifdef PARSER_STREAM_DEBUG_INPUT_TO_FILE (*debugStream) << "***STYPE***"; (*debugStream) << "LF"; (*debugStream) << "***ETYPE***"; #endif m_stringBuffer = QString::fromAscii(data.line.constData(), data.line.size()); emit sendToUser(data.line); break; } #ifdef PARSER_STREAM_DEBUG_INPUT_TO_FILE (*debugStream) << "***S***"; (*debugStream) << data.line; (*debugStream) << "***E***"; #endif //} }