void CopyTriggersCommand::execute(Character *player, const QString &command) { super::prepareExecute(player, command); if (!assertWordsLeft("Usage: copy-triggers <source-item> [#] <destination-item> [#]")) { return; } GameObjectPtr sourceItem = takeObject(currentRoom()->items() + currentRoom()->characters()); if (!requireSome(sourceItem, "Source item not found.")) { return; } GameObjectPtr destinationItem = takeObject(currentRoom()->items() + currentRoom()->characters()); if (!requireSome(destinationItem, "Destination item not found.")) { return; } destinationItem->setTriggers(sourceItem->triggers()); send("Triggers copied."); if (destinationItem->hasTrigger("onspawn")) { destinationItem->killAllTimers(); destinationItem->invokeTrigger("onspawn"); send(QString("Respawn emulated for %1.") .arg(Util::highlight(QString("object #%1").arg(destinationItem->id())))); } }
void SetRaceCommand::execute(Character *player, const QString &command) { super::prepareExecute(player, command); GameObjectPtrList characters = takeObjects(currentRoom()->characters()); if (!requireUnique(characters, "Character not found.", "Character is not unique.")) { return; } QString raceName = takeWord(); if (raceName.isEmpty()) { send("Usage: set-race <character-name> [#] <race-name>"); return; } Character *character = characters[0].cast<Character *>(); for (const GameObjectPtr &racePtr : Realm::instance()->races()) { if (racePtr->name() == raceName) { character->setRace(racePtr); send("Race modified."); return; } } send("Unknown race given."); }
void GetTriggerCommand::execute(Character *player, const QString &command) { super::prepareExecute(player, command); GameObjectPtr object = takeObject(currentRoom()->portals() + currentRoom()->characters() + currentRoom()->items()); if (!requireSome(object, "Object not found.")) { return; } QString triggerName = takeWord().toLower(); if (!triggerName.startsWith("on")) { send("Not a valid trigger name."); return; } ScriptFunction trigger = object->trigger(triggerName); if (trigger.source.isEmpty()) { send(QString("No trigger set for %1.").arg(triggerName)); } else { send(trigger.source); } }
void WidgetChatMiddle::removeBuffer(Irc::Buffer* buffer) { QList<WidgetChatRoom*> allRooms = ui->stackedWidgetChatRooms->findChildren<WidgetChatRoom*>(); for(int i = 0; i < allRooms.size(); ++i) { if(allRooms.at(i)->sRoomName == buffer->receiver()) { ui->stackedWidgetChatRooms->removeWidget(allRooms.at(i)); allRooms.at(i)->~WidgetChatRoom(); } } channelList.removeOne(buffer->receiver()); channelListModel->setStringList(channelList); buffer->deleteLater(); emit roomChanged(currentRoom()); }
void WidgetChatMiddle::userCountUpdated(ChatUserListModel* chatUserListModel, int operators, int users) { if (currentRoom()->chatUserListModel == chatUserListModel) emit updateUserCount(operators, users); }
void WidgetChatMiddle::changeRoom(int index) { ui->stackedWidgetChatRooms->setCurrentIndex(index); emit roomChanged(currentRoom()); }
void WidgetChatMiddle::onSendMessage(QTextDocument *message) { QString sMessage = message->toPlainText(); if( sMessage.isEmpty() ) return; if( sMessage.left(2) != "//" ) { if( sMessage.left(1) == "/" ) // is it a command? { QString sCmd, sParam; int nSpace = sMessage.indexOf(" "); if( nSpace == -1 ) nSpace = sMessage.length(); sCmd = sMessage.left(nSpace).toLower(); sParam = sMessage.mid(nSpace + 1); if( sCmd == "/me" ) { if( !sParam.isEmpty() ) currentRoom()->onSendAction(sParam); return; } if( sCmd == "/msg") { QString sTarget; int nSpace = sParam.indexOf(" "); if( nSpace == -1 ) nSpace = sParam.length(); sTarget = sParam.left(nSpace).toLower(); sParam = sParam.mid(nSpace + 1); if( !sParam.isEmpty() ) quazaaIrc->sendIrcMessage(sTarget, sParam ); return; } if( sCmd == "/cs") { if( !sParam.isEmpty() ) quazaaIrc->sendIrcMessage("chanserv", sParam ); return; } if( sCmd == "/hs") { if( !sParam.isEmpty() ) quazaaIrc->sendIrcMessage("hostserv", sParam ); return; } if( sCmd == "/join") { if( !sParam.isEmpty() ) quazaaIrc->addRoom(sParam); return; } if( sCmd == "/part") { if( !sParam.isEmpty() ) { quazaaIrc->removeRoom(sParam); return; } else { quazaaIrc->removeRoom(currentRoom()->sRoomName); } } else { currentRoom()->onSendMessage("Unknown command"); } return; } } CChatConverter oConv(message); currentRoom()->onSendMessage(oConv.toIRC()); }
void WidgetChatMiddle::on_stackedWidgetChatRooms_currentChanged(int) { //qDebug() << "Emitting channel changed."; if(ui->stackedWidgetChatRooms->children().size() > -1) emit roomChanged(currentRoom()); }