diff options
Diffstat (limited to 'src/gui/setup_other.cpp')
-rw-r--r-- | src/gui/setup_other.cpp | 426 |
1 files changed, 426 insertions, 0 deletions
diff --git a/src/gui/setup_other.cpp b/src/gui/setup_other.cpp new file mode 100644 index 000000000..54ec1c65d --- /dev/null +++ b/src/gui/setup_other.cpp @@ -0,0 +1,426 @@ +/* + * The Mana World + * Copyright (C) 2009 The Mana World Development Team + * Copyright (C) 2009-2010 Andrei Karas + * + * This file is part of The Mana World. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "gui/setup_other.h" +#include "gui/editdialog.h" + +#include "gui/widgets/button.h" +#include "gui/widgets/checkbox.h" +#include "gui/widgets/label.h" +#include "gui/widgets/layouthelper.h" +#include "gui/widgets/textfield.h" + +#include "configuration.h" +#include "localplayer.h" +#include "log.h" + +#include "utils/gettext.h" + +#define ACTION_SHOW_TAKEDDAMAGE "taked damage" +#define ACTION_NO_RAIN "no rain" +#define ACTION_ONLY_REACHABLE "only reachable" +#define ACTION_ERRORS_IN_DEBUG "errors in debug" +#define ACTION_HIGHLIGHT_PORTALS "highlight portals" +#define ACTION_HIGHLIGHT_ATTACK_RANGE "highlight attack" +#define ACTION_HIGHLIGHT_MONSTER_ATTACK_RANGE "highlight monster attack" +#define ACTION_CYCLE_PLAYERS "cycle players" +#define ACTION_CYCLE_MONSTERS "cycle monsters" +#define ACTION_ENABLE_BOTCHECKER "bot checker" +#define ACTION_FLOORITEMS_HIGHLIGHT "floor items" +#define ACTION_MOVE_PROGRAM "move program" +#define ACTION_EDIT_PROGRAM "edit program" +#define ACTION_EDIT_PROGRAM_OK "edit program ok" +#define ACTION_AFK "move afk" +#define ACTION_EDIT_AFK "edit afk" +#define ACTION_EDIT_AFK_OK "edit afk ok" +#define ACTION_ENABLE_AFK "enable afk" +#define ACTION_TRADEBOT "trade bot" +#define ACTION_BUGGY_SERVERS "buggy servers" +#define ACTION_DEBUG_LOG "debug log" +#define ACTION_SERVER_ATTACK "server attack" +#define ACTION_FIX_POS "fix pos" +#define ACTION_ATTACK_MOVING "attack moving" +#define ACTION_QUICK_STATS "quick stats" +#define ACTION_WARP_PARTICLE "warp particle" +#define ACTION_AUTO_SHOP "auto shop" +#define ACTION_SHOW_MOB_HP "show mob hp" + +Setup_Other::Setup_Other(): + mShowMonstersTakedDamage(config.getBoolValue("showMonstersTakedDamage")), + mTargetOnlyReachable(config.getBoolValue("targetOnlyReachable")), + mErrorsInDebug(config.getBoolValue("errorsInDebug")), + mHighlightPortals(config.getBoolValue("highlightMapPortals")), + mHighlightAttackRange(config.getBoolValue("highlightAttackRange")), + mHighlightMonsterAttackRange( + config.getBoolValue("highlightMonsterAttackRange")), + mCyclePlayers(config.getBoolValue("cyclePlayers")), + mCycleMonsters(config.getBoolValue("cycleMonsters")), + mEnableBotChecker(config.getBoolValue("enableBotCheker")), + mFloorItemsHighlight(config.getBoolValue("floorItemsHighlight")), + mMoveProgram(config.getStringValue("crazyMoveProgram")), + mAfk(config.getStringValue("afkMessage")), + mTradeBot(config.getBoolValue("tradebot")), + mBuggyServers(serverConfig.getValueBool("enableBuggyServers", true)), + mDebugLog(config.getBoolValue("debugLog")), + mServerAttack(config.getBoolValue("serverAttack")), + mAutofixPos(config.getBoolValue("autofixPos")), + mAttackMoving(config.getBoolValue("attackMoving")), + mQuickStats(config.getBoolValue("quickStats")), + mWarpParticle(config.getBoolValue("warpParticle")), + mAutoShop(config.getBoolValue("autoShop")), + mShowMobHP(config.getBoolValue("showMobHP")) +{ + setName(_("Misc")); + + mShowMonstersTakedDamageCheckBox = new CheckBox( + _("Show damage inflicted to monsters"), + mShowMonstersTakedDamage, + this, ACTION_SHOW_TAKEDDAMAGE); + + mTargetOnlyReachableCheckBox = new CheckBox( + _("Auto target only reachable monsters"), + mTargetOnlyReachable, + this, ACTION_ONLY_REACHABLE); + + mHighlightPortalsCheckBox = new CheckBox(_("Highlight map portals"), + mHighlightPortals, + this, ACTION_HIGHLIGHT_PORTALS); + + mHighlightAttackRangeCheckBox = new CheckBox( + _("Highlight player attack range"), + mHighlightAttackRange, + this, ACTION_HIGHLIGHT_ATTACK_RANGE); + + mHighlightMonsterAttackRangeCheckBox = new CheckBox( + _("Highlight monster attack range"), + mHighlightMonsterAttackRange, + this, ACTION_HIGHLIGHT_MONSTER_ATTACK_RANGE); + + mCyclePlayersCheckBox = new CheckBox(_("Cycle player targets"), + mCyclePlayers, this, ACTION_CYCLE_PLAYERS); + + mCycleMonstersCheckBox = new CheckBox(_("Cycle monster targets"), + mCycleMonsters, this, ACTION_CYCLE_MONSTERS); + + mEnableBotCheckerCheckBox = new CheckBox(_("Enable bot checker"), + mEnableBotChecker, this, ACTION_ENABLE_BOTCHECKER); + + mFloorItemsHighlightCheckBox = new CheckBox(_("Highlight floor items"), + mFloorItemsHighlight, this, ACTION_FLOORITEMS_HIGHLIGHT); + + mMoveProgramLabel = new Label(_("Crazy move A program")); + + mMoveProgramField = new TextField(mMoveProgram, true, + this, ACTION_MOVE_PROGRAM); + + mMoveProgramButton = new Button(_("Edit"), ACTION_EDIT_PROGRAM, this); + + mAfkField = new TextField(mAfk, true, this, ACTION_AFK); + + mAfkButton = new Button(_("Edit"), ACTION_EDIT_AFK, this); + + mTradeBotCheckBox = new CheckBox(_("Enable shop mode"), + mTradeBot, + this, ACTION_TRADEBOT); + + mBuggyServersCheckBox = new CheckBox(_("Enable buggy servers protection"), + mBuggyServers, + this, ACTION_BUGGY_SERVERS); + + mDebugLogCheckBox = new CheckBox(_("Enable debug log"), + mDebugLog, + this, ACTION_DEBUG_LOG); + + mServerAttackCheckBox = new CheckBox(_("Enable server side attack"), + mServerAttack, + this, ACTION_SERVER_ATTACK); + + mAutofixPosCheckBox = new CheckBox(_("Auto fix position"), + mAutofixPos, + this, ACTION_FIX_POS); + + mAttackMovingCheckBox = new CheckBox(_("Attack while moving"), + mAttackMoving, + this, ACTION_ATTACK_MOVING); + + mQuickStatsCheckBox = new CheckBox(_("Enable quick stats"), + mQuickStats, + this, ACTION_QUICK_STATS); + + mWarpParticleCheckBox = new CheckBox(_("Show warps particles"), + mWarpParticle, + this, ACTION_WARP_PARTICLE); + + mAutoShopCheckBox = new CheckBox(_("Accept sell/buy requests"), + mAutoShop, + this, ACTION_AUTO_SHOP); + + mShowMobHPCheckBox = new CheckBox(_("Show monster hp bar"), + mShowMobHP, + this, ACTION_SHOW_MOB_HP); + + // Do the layout + LayoutHelper h(this); + ContainerPlacer place = h.getPlacer(0, 0); + + place(0, 0, mShowMonstersTakedDamageCheckBox, 12); + place(12, 0, mServerAttackCheckBox, 10); + place(0, 1, mTargetOnlyReachableCheckBox, 12); + place(12, 1, mAutofixPosCheckBox, 10); + place(0, 2, mHighlightPortalsCheckBox, 12); + place(12, 2, mAttackMovingCheckBox, 10); + place(12, 3, mQuickStatsCheckBox, 10); + place(12, 4, mWarpParticleCheckBox, 10); + place(12, 5, mAutoShopCheckBox, 10); + place(12, 6, mShowMobHPCheckBox, 10); + place(0, 3, mFloorItemsHighlightCheckBox, 12); + place(0, 4, mHighlightAttackRangeCheckBox, 12); + place(0, 5, mHighlightMonsterAttackRangeCheckBox, 12); + place(0, 6, mCyclePlayersCheckBox, 12); + place(0, 7, mCycleMonstersCheckBox, 12); + place(0, 8, mEnableBotCheckerCheckBox, 12); + place(0, 9, mMoveProgramLabel, 12); + place(0, 10, mMoveProgramField, 9); + place(9, 10, mMoveProgramButton, 2); + place(0, 11, mAfkField, 9); + place(9, 11, mAfkButton, 2); + place(0, 12, mTradeBotCheckBox, 12); + place(0, 13, mBuggyServersCheckBox, 12); + place(0, 14, mDebugLogCheckBox, 12); + + place.getCell().matchColWidth(0, 0); + place = h.getPlacer(0, 1); + + setDimension(gcn::Rectangle(0, 0, 550, 500)); +} + +void Setup_Other::action(const gcn::ActionEvent &event) +{ + if (event.getId() == ACTION_SHOW_TAKEDDAMAGE) + { + mShowMonstersTakedDamage = mShowMonstersTakedDamageCheckBox + ->isSelected(); + } + else if (event.getId() == ACTION_ONLY_REACHABLE) + { + mTargetOnlyReachable = mTargetOnlyReachableCheckBox->isSelected(); + } + else if (event.getId() == ACTION_HIGHLIGHT_PORTALS) + { + mHighlightPortals = mHighlightPortalsCheckBox->isSelected(); + } + else if (event.getId() == ACTION_HIGHLIGHT_ATTACK_RANGE) + { + mHighlightAttackRange = mHighlightAttackRangeCheckBox->isSelected(); + } + else if (event.getId() == ACTION_HIGHLIGHT_MONSTER_ATTACK_RANGE) + { + mHighlightMonsterAttackRange = mHighlightMonsterAttackRangeCheckBox + ->isSelected(); + } + else if (event.getId() == ACTION_CYCLE_PLAYERS) + { + mCyclePlayers = mCyclePlayersCheckBox->isSelected(); + } + else if (event.getId() == ACTION_CYCLE_MONSTERS) + { + mCycleMonsters = mCycleMonstersCheckBox->isSelected(); + } + else if (event.getId() == ACTION_ENABLE_BOTCHECKER) + { + mEnableBotChecker = mEnableBotCheckerCheckBox->isSelected(); + } + else if (event.getId() == ACTION_FLOORITEMS_HIGHLIGHT) + { + mFloorItemsHighlight = mFloorItemsHighlightCheckBox->isSelected(); + } + else if (event.getId() == ACTION_MOVE_PROGRAM) + { + mMoveProgram = mMoveProgramField->getText(); + } + else if (event.getId() == ACTION_EDIT_PROGRAM) + { + mEditDialog = new EditDialog("Crazy Move A", + mMoveProgramField->getText(), ACTION_EDIT_PROGRAM_OK); + mEditDialog->addActionListener(this); + } + else if (event.getId() == ACTION_EDIT_PROGRAM_OK) + { + mMoveProgramField->setText(mEditDialog->getMsg()); + } + + else if (event.getId() == ACTION_AFK) + mAfk = mAfkField->getText(); + else if (event.getId() == ACTION_EDIT_AFK) + { + mEditDialog = new EditDialog("Afk message", mAfkField->getText(), + ACTION_EDIT_AFK_OK); + mEditDialog->addActionListener(this); + } + else if (event.getId() == ACTION_EDIT_AFK_OK) + { + mAfkField->setText(mEditDialog->getMsg()); + } + else if (event.getId() == ACTION_TRADEBOT) + { + mTradeBot = mTradeBotCheckBox->isSelected(); + } + else if (event.getId() == ACTION_BUGGY_SERVERS) + { + mBuggyServers = mBuggyServersCheckBox->isSelected(); + } + else if (event.getId() == ACTION_DEBUG_LOG) + { + mDebugLog = mDebugLogCheckBox->isSelected(); + } + else if (event.getId() == ACTION_SERVER_ATTACK) + { + mServerAttack = mServerAttackCheckBox->isSelected(); + } + else if (event.getId() == ACTION_FIX_POS) + { + mAutofixPos = mAutofixPosCheckBox->isSelected(); + } + else if (event.getId() == ACTION_ATTACK_MOVING) + { + mAttackMoving = mAttackMovingCheckBox->isSelected(); + } + else if (event.getId() == ACTION_QUICK_STATS) + { + mQuickStats = mQuickStatsCheckBox->isSelected(); + } + else if (event.getId() == ACTION_WARP_PARTICLE) + { + mWarpParticle = mWarpParticleCheckBox->isSelected(); + } + else if (event.getId() == ACTION_AUTO_SHOP) + { + mAutoShop = mAutoShopCheckBox->isSelected(); + } + else if (event.getId() == ACTION_SHOW_MOB_HP) + { + mShowMobHP = mShowMobHPCheckBox->isSelected(); + } +} + +void Setup_Other::cancel() +{ + mShowMonstersTakedDamage = config.getBoolValue( + "showMonstersTakedDamage"); + mShowMonstersTakedDamageCheckBox->setSelected(mShowMonstersTakedDamage); + + mTargetOnlyReachable = config.getBoolValue("targetOnlyReachable"); + mTargetOnlyReachableCheckBox->setSelected(mTargetOnlyReachable); + + mHighlightPortals = config.getBoolValue("highlightMapPortals"); + mHighlightPortalsCheckBox->setSelected(mHighlightPortals); + + mHighlightAttackRange = config.getBoolValue("highlightAttackRange"); + mHighlightAttackRangeCheckBox->setSelected(mHighlightAttackRange); + + mHighlightMonsterAttackRange = config.getBoolValue( + "highlightMonsterAttackRange"); + mHighlightMonsterAttackRangeCheckBox->setSelected( + mHighlightMonsterAttackRange); + + mCyclePlayers = config.getBoolValue("cyclePlayers"); + mCyclePlayersCheckBox->setSelected(mCyclePlayers); + + mCycleMonsters = config.getBoolValue("cycleMonsters"); + mCycleMonstersCheckBox->setSelected(mCycleMonsters); + + mEnableBotChecker = config.getBoolValue("enableBotCheker"); + mEnableBotCheckerCheckBox->setSelected(mEnableBotChecker); + + mFloorItemsHighlight = config.getBoolValue("floorItemsHighlight"); + mFloorItemsHighlightCheckBox->setSelected(mFloorItemsHighlight); + + mMoveProgram = config.getStringValue("crazyMoveProgram"); + mMoveProgramField->setText(mMoveProgram); + + mAfk = config.getStringValue("afkMessage"); + mAfkField->setText(mAfk); + + mTradeBot = config.getBoolValue("tradebot"); + mTradeBotCheckBox->setSelected(mTradeBot); + + mBuggyServers = serverConfig.getValueBool("enableBuggyServers", true); + mBuggyServersCheckBox->setSelected(mBuggyServers); + + mDebugLog = config.getBoolValue("debugLog"); + mDebugLogCheckBox->setSelected(mDebugLog); + + mServerAttack = config.getBoolValue("serverAttack"); + mServerAttackCheckBox->setSelected(mServerAttack); + + mAutofixPos = config.getBoolValue("autofixPos"); + mAutofixPosCheckBox->setSelected(mAutofixPos); + + mAttackMoving = config.getBoolValue("attackMoving"); + mAttackMovingCheckBox->setSelected(mAttackMoving); + + mQuickStats = config.getBoolValue("quickStats"); + mQuickStatsCheckBox->setSelected(mQuickStats); + + mWarpParticle = config.getBoolValue("warpParticle"); + mWarpParticleCheckBox->setSelected(mWarpParticle); + + mAutoShop = config.getBoolValue("autoShop"); + mAutoShopCheckBox->setSelected(mAutoShop); + + mShowMobHP = config.getBoolValue("showMobHP"); + mShowMobHPCheckBox->setSelected(mShowMobHP); +} + +void Setup_Other::apply() +{ + config.setValue("showMonstersTakedDamage", mShowMonstersTakedDamage); + config.setValue("targetOnlyReachable", mTargetOnlyReachable); + config.setValue("errorsInDebug", mErrorsInDebug); + config.setValue("highlightMapPortals", mHighlightPortals); + config.setValue("highlightAttackRange", mHighlightAttackRange); + config.setValue("highlightMonsterAttackRange", + mHighlightMonsterAttackRange); + config.setValue("cyclePlayers", mCyclePlayers); + config.setValue("cycleMonsters", mCycleMonsters); + config.setValue("enableBotCheker", mEnableBotChecker); + config.setValue("floorItemsHighlight", mFloorItemsHighlight); + config.setValue("crazyMoveProgram", mMoveProgramField->getText()); + config.setValue("afkMessage", mAfkField->getText()); + config.setValue("tradebot", mTradeBot); + serverConfig.setValue("enableBuggyServers", mBuggyServers); + config.setValue("debugLog", mDebugLog); + config.setValue("serverAttack", mServerAttack); + config.setValue("autofixPos", mAutofixPos); + config.setValue("attackMoving", mAttackMoving); + config.setValue("quickStats", mQuickStats); + config.setValue("warpParticle", mWarpParticle); + config.setValue("autoShop", mAutoShop); + config.setValue("showMobHP", mShowMobHP); + logger->setDebugLog(mDebugLog); +} + +void Setup_Other::externalUpdated() +{ + mBuggyServers = serverConfig.getValueBool("enableBuggyServers", true); + mBuggyServersCheckBox->setSelected(mBuggyServers); +}
\ No newline at end of file |