summaryrefslogtreecommitdiff
path: root/src/gamemodifiers.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/gamemodifiers.cpp')
-rw-r--r--src/gamemodifiers.cpp517
1 files changed, 0 insertions, 517 deletions
diff --git a/src/gamemodifiers.cpp b/src/gamemodifiers.cpp
deleted file mode 100644
index bed509dae..000000000
--- a/src/gamemodifiers.cpp
+++ /dev/null
@@ -1,517 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2011-2017 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * 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, see <http://www.gnu.org/licenses/>.
- */
-
-#include "gamemodifiers.h"
-
-#include "configuration.h"
-#include "game.h"
-#include "settings.h"
-#include "soundmanager.h"
-
-#include "being/localplayer.h"
-
-#include "gui/viewport.h"
-
-#include "gui/windows/chatwindow.h"
-#include "gui/windows/okdialog.h"
-#include "gui/windows/outfitwindow.h"
-
-#include "gui/widgets/createwidget.h"
-
-#include "gui/widgets/tabs/chat/chattab.h"
-
-#include "listeners/gamemodifierlistener.h"
-
-#include "resources/map/map.h"
-
-#include "listeners/awaylistener.h"
-#include "listeners/updatestatuslistener.h"
-
-#include "utils/gettext.h"
-
-#include "debug.h"
-
-#define addModifier(name1, name2, sz, ...) \
- const unsigned GameModifiers::m##name1##Size = sz; \
- const char *const GameModifiers::m##name1##Strings[] = \
- __VA_ARGS__; \
- std::string GameModifiers::get##name1##String() \
- { \
- return gettext(getVarItem(&m##name1##Strings[0], \
- CAST_U32(settings.name2), m##name1##Size)); \
- }
-
-#define addModifier2(name1, name2, str, sz, ...) \
- const unsigned GameModifiers::m##name1##Size = sz; \
- const char *const GameModifiers::m##name1##Strings[] = \
- __VA_ARGS__; \
- void GameModifiers::change##name1(const bool forward) \
- { \
- changeMode(&settings.name2, m##name1##Size, str, \
- &GameModifiers::get##name1##String, 0, true, forward); \
- } \
- std::string GameModifiers::get##name1##String() \
- { \
- return gettext(getVarItem(&m##name1##Strings[0], \
- settings.name2, m##name1##Size)); \
- }
-
-#define changeMethod(name1, name2, str) \
- void GameModifiers::change##name1(const bool forward) \
- { \
- changeMode(&settings.name2, m##name1##Size, str, \
- &GameModifiers::get##name1##String, 0, true, forward); \
- }
-
-void GameModifiers::init()
-{
- settings.crazyMoveType = config.getIntValue("crazyMoveType");
- settings.moveToTargetType = config.getIntValue("moveToTargetType");
- settings.followMode = config.getIntValue("followMode");
- settings.attackWeaponType = config.getIntValue("attackWeaponType");
- settings.attackType = config.getIntValue("attackType");
- settings.targetingType = config.getIntValue("targetingType");
- settings.quickDropCounter = config.getIntValue("quickDropCounter");
- settings.pickUpType = config.getIntValue("pickUpType");
- settings.magicAttackType = config.getIntValue("magicAttackType");
- settings.pvpAttackType = config.getIntValue("pvpAttackType");
- settings.imitationMode = config.getIntValue("imitationMode");
- settings.disableGameModifiers = config.getBoolValue(
- "disableGameModifiers");
- settings.awayMode = false;
- settings.mapDrawType = MapType::NORMAL;
-// UpdateStatusListener::distributeEvent();
-}
-
-void GameModifiers::changeMode(unsigned *restrict const var,
- const unsigned limit,
- const char *restrict const conf,
- std::string (*const func)(),
- const unsigned def,
- const bool save,
- const bool forward)
-{
- if (var == nullptr)
- return;
-
- if (forward)
- {
- (*var) ++;
- if (*var >= limit)
- *var = def;
- }
- else
- {
- if (*var == 0u)
- *var = limit - 1;
- else
- (*var) --;
- }
-
- if (save)
- config.setValue(conf, *var);
- UpdateStatusListener::distributeEvent();
- GameModifierListener::distributeEvent();
- const std::string str = (*func)();
- if (str.size() > 4)
- debugMsg(str.substr(4));
-}
-
-const char *GameModifiers::getVarItem(const char *const *const arr,
- const unsigned index,
- const unsigned sz)
-{
- if (index < sz)
- return arr[index];
- return arr[sz];
-}
-
-addModifier(MoveType, moveType, 5,
-{
- // TRANSLATORS: move type in status bar
- N_("(D) default moves"),
- // TRANSLATORS: move type in status bar
- N_("(I) invert moves"),
- // TRANSLATORS: move type in status bar
- N_("(c) moves with some crazy moves"),
- // TRANSLATORS: move type in status bar
- N_("(C) moves with crazy moves"),
- // TRANSLATORS: move type in status bar
- N_("(d) double normal + crazy"),
- // TRANSLATORS: move type in status bar
- N_("(?) unknown move")
-})
-
-void GameModifiers::changeMoveType(const bool forward)
-{
- localPlayer->setMoveState(0);
- changeMode(&settings.moveType, mMoveTypeSize, "invertMoveDirection",
- &GameModifiers::getMoveTypeString, 0, false, forward);
-}
-
-const unsigned GameModifiers::mCrazyMoveTypeSize = 11;
-
-void GameModifiers::changeCrazyMoveType(const bool forward)
-{
- settings.crazyMoveState = 0U;
- changeMode(&settings.crazyMoveType, mCrazyMoveTypeSize, "crazyMoveType",
- &GameModifiers::getCrazyMoveTypeString, 1, true, forward);
-}
-
-std::string GameModifiers::getCrazyMoveTypeString()
-{
- const unsigned int crazyMoveType = settings.crazyMoveType;
- if (crazyMoveType < mCrazyMoveTypeSize - 1)
- {
- // TRANSLATORS: crazy move type in status bar
- return strprintf(_("(%u) crazy move number %u"),
- crazyMoveType, crazyMoveType);
- }
- else if (crazyMoveType == mCrazyMoveTypeSize - 1)
- {
- // TRANSLATORS: crazy move type in status bar
- return _("(a) custom crazy move");
- }
- else
- {
- // TRANSLATORS: crazy move type in status bar
- return _("(?) crazy move");
- }
-}
-
-addModifier2(MoveToTargetType, moveToTargetType, "moveToTargetType", 13,
-{
- // TRANSLATORS: move to target type in status bar
- N_("(0) default moves to target"),
- // TRANSLATORS: move to target type in status bar
- N_("(1) moves to target in distance 1"),
- // TRANSLATORS: move to target type in status bar
- N_("(2) moves to target in distance 2"),
- // TRANSLATORS: move to target type in status bar
- N_("(3) moves to target in distance 3"),
- // TRANSLATORS: move to target type in status bar
- N_("(4) moves to target in distance 4"),
- // TRANSLATORS: move to target type in status bar
- N_("(5) moves to target in distance 5"),
- // TRANSLATORS: move to target type in status bar
- N_("(6) moves to target in distance 6"),
- // TRANSLATORS: move to target type in status bar
- N_("(7) moves to target in distance 7"),
- // TRANSLATORS: move to target type in status bar
- N_("(8) moves to target in distance 8"),
- // TRANSLATORS: move to target type in status bar
- N_("(9) moves to target in distance 9"),
- // TRANSLATORS: move to target type in status bar
- N_("(A) moves to target in attack range"),
- // TRANSLATORS: move to target type in status bar
- N_("(a) archer attack range"),
- // TRANSLATORS: move to target type in status bar
- N_("(B) moves to target in attack range - 1"),
- // TRANSLATORS: move to target type in status bar
- N_("(?) move to target")
-})
-
-addModifier2(FollowMode, followMode, "followMode", 4,
-{
- // TRANSLATORS: folow mode in status bar
- N_("(D) default follow"),
- // TRANSLATORS: folow mode in status bar
- N_("(R) relative follow"),
- // TRANSLATORS: folow mode in status bar
- N_("(M) mirror follow"),
- // TRANSLATORS: folow mode in status bar
- N_("(P) pet follow"),
- // TRANSLATORS: folow mode in status bar
- N_("(?) unknown follow")
-})
-
-addModifier2(AttackWeaponType, attackWeaponType, "attackWeaponType", 4,
-{
- // TRANSLATORS: switch attack type in status bar
- N_("(?) attack"),
- // TRANSLATORS: switch attack type in status bar
- N_("(D) default attack"),
- // TRANSLATORS: switch attack type in status bar
- N_("(s) switch attack without shield"),
- // TRANSLATORS: switch attack type in status bar
- N_("(S) switch attack with shield"),
- // TRANSLATORS: switch attack type in status bar
- N_("(?) attack")
-})
-
-addModifier2(AttackType, attackType, "attackType", 4,
-{
- // TRANSLATORS: attack type in status bar
- N_("(D) default attack"),
- // TRANSLATORS: attack type in status bar
- N_("(G) go and attack"),
- // TRANSLATORS: attack type in status bar
- N_("(A) go, attack, pickup"),
- // TRANSLATORS: attack type in status bar
- N_("(d) without auto attack"),
- // TRANSLATORS: attack type in status bar
- N_("(?) attack")
-})
-
-addModifier2(TargetingType, targetingType, "targetingType", 2,
-{
- // TRANSLATORS: targeting type in status bar
- N_("(D) don't switch target"),
- // TRANSLATORS: targeting type in status bar
- N_("(C) always attack closest"),
- // TRANSLATORS: targeting type in status bar
- N_("(?) targeting")
-})
-
-const unsigned GameModifiers::mQuickDropCounterSize = 31;
-
-changeMethod(QuickDropCounter, quickDropCounter, "quickDropCounter")
-
-std::string GameModifiers::getQuickDropCounterString()
-{
- const unsigned int cnt = settings.quickDropCounter;
- if (cnt > 9)
- {
- return strprintf("(%c) drop counter %u", CAST_S8(
- 'a' + cnt - 10), cnt);
- }
- return strprintf("(%u) drop counter %u", cnt, cnt);
-}
-
-void GameModifiers::setQuickDropCounter(const int n)
-{
- if (n < 1 || n >= CAST_S32(mQuickDropCounterSize))
- return;
- settings.quickDropCounter = n;
- config.setValue("quickDropCounter", n);
- UpdateStatusListener::distributeEvent();
- GameModifierListener::distributeEvent();
-}
-
-addModifier2(PickUpType, pickUpType, "pickUpType", 7,
-{
- // TRANSLATORS: pickup size in status bar
- N_("(S) small pick up 1x1 cells"),
- // TRANSLATORS: pickup size in status bar
- N_("(D) default pick up 2x1 cells"),
- // TRANSLATORS: pickup size in status bar
- N_("(F) forward pick up 2x3 cells"),
- // TRANSLATORS: pickup size in status bar
- N_("(3) pick up 3x3 cells"),
- // TRANSLATORS: pickup size in status bar
- N_("(g) go and pick up in distance 4"),
- // TRANSLATORS: pickup size in status bar
- N_("(G) go and pick up in distance 8"),
- // TRANSLATORS: pickup size in status bar
- N_("(A) go and pick up in max distance"),
- // TRANSLATORS: pickup size in status bar
- N_("(?) pick up")
-})
-
-addModifier2(MagicAttackType, magicAttackType, "magicAttackType", 5,
-{
- // TRANSLATORS: magic attack in status bar
- N_("(f) use #flar for magic attack"),
- // TRANSLATORS: magic attack in status bar
- N_("(c) use #chiza for magic attack"),
- // TRANSLATORS: magic attack in status bar
- N_("(I) use #ingrav for magic attack"),
- // TRANSLATORS: magic attack in status bar
- N_("(F) use #frillyar for magic attack"),
- // TRANSLATORS: magic attack in status bar
- N_("(U) use #upmarmu for magic attack"),
- // TRANSLATORS: magic attack in status bar
- N_("(?) magic attack")
-})
-
-addModifier2(PvpAttackType, pvpAttackType, "pvpAttackType", 4,
-{
- // TRANSLATORS: player attack type in status bar
- N_("(a) attack all players"),
- // TRANSLATORS: player attack type in status bar
- N_("(f) attack all except friends"),
- // TRANSLATORS: player attack type in status bar
- N_("(b) attack bad relations"),
- // TRANSLATORS: player attack type in status bar
- N_("(d) don't attack players"),
- // TRANSLATORS: player attack type in status bar
- N_("(?) pvp attack")
-})
-
-addModifier2(ImitationMode, imitationMode, "imitationMode", 2,
-{
- // TRANSLATORS: imitation type in status bar
- N_("(D) default imitation"),
- // TRANSLATORS: imitation type in status bar
- N_("(O) outfits imitation"),
- // TRANSLATORS: imitation type in status bar
- N_("(?) imitation")
-})
-
-addModifier(GameModifiers, disableGameModifiers, 2,
-{
- // TRANSLATORS: game modifiers state in status bar
- N_("Game modifiers are enabled"),
- // TRANSLATORS: game modifiers state in status bar
- N_("Game modifiers are disabled"),
- // TRANSLATORS: game modifiers state in status bar
- N_("Game modifiers are unknown")
-})
-
-void GameModifiers::changeGameModifiers(const bool forward A_UNUSED)
-{
- settings.disableGameModifiers = !settings.disableGameModifiers;
- config.setValue("disableGameModifiers", settings.disableGameModifiers);
- UpdateStatusListener::distributeEvent();
- GameModifierListener::distributeEvent();
-}
-
-addModifier(MapDrawType, mapDrawType, 7,
-{
- // TRANSLATORS: map view type in status bar
- N_("(N) normal map view"),
- // TRANSLATORS: map view type in status bar
- N_("(D) debug map view"),
- // TRANSLATORS: map view type in status bar
- N_("(u) ultra map view"),
- // TRANSLATORS: map view type in status bar
- N_("(U) ultra map view 2"),
- // TRANSLATORS: map view type in status bar
- N_("(e) empty map view with collision"),
- // TRANSLATORS: map view type in status bar
- N_("(E) empty map view"),
- // TRANSLATORS: map view type in status bar
- N_("(b) black & white map view"),
- // TRANSLATORS: pickup size in status bar
- N_("(?) map view")
-})
-
-void GameModifiers::changeMapDrawType(const bool forward A_UNUSED)
-{
- if (viewport != nullptr)
- viewport->toggleMapDrawType();
-}
-
-addModifier(AwayMode, awayMode, 2,
-{
- // TRANSLATORS: away type in status bar
- N_("(O) on keyboard"),
- // TRANSLATORS: away type in status bar
- N_("(A) away"),
- // TRANSLATORS: away type in status bar
- N_("(?) away")
-})
-
-void GameModifiers::changeAwayMode(const bool forward A_UNUSED)
-{
- if (localPlayer == nullptr)
- return;
-
- settings.awayMode = !settings.awayMode;
- localPlayer->setAfkTime(0);
- localPlayer->setHalfAway(false);
- localPlayer->updateName();
- Game::instance()->updateFrameRate(0);
- UpdateStatusListener::distributeEvent();
- GameModifierListener::distributeEvent();
- if (settings.awayMode)
- {
- if (chatWindow != nullptr)
- chatWindow->clearAwayLog();
-
- localPlayer->cancelFollow();
- localPlayer->navigateClean();
- if (outfitWindow != nullptr)
- outfitWindow->wearAwayOutfit();
- OkDialog *const dialog = CREATEWIDGETR(OkDialog,
- // TRANSLATORS: away message box header
- _("Away"),
- serverConfig.getValue("afkMessage", "I am away from keyboard."),
- // TRANSLATORS: ok dialog button
- _("OK"),
- DialogType::SILENCE,
- Modal_true,
- ShowCenter_false,
- nullptr,
- 260);
- localPlayer->setAwayDialog(dialog);
- dialog->addActionListener(localPlayer->getAwayListener());
- soundManager.volumeOff();
- localPlayer->addAfkEffect();
- }
- else
- {
- localPlayer->setAwayDialog(nullptr);
- soundManager.volumeRestore();
- if (chatWindow != nullptr)
- {
- chatWindow->displayAwayLog();
- chatWindow->clearAwayLog();
- }
- localPlayer->removeAfkEffect();
- }
-}
-
-addModifier(CameraMode, cameraMode, 2,
-{
- // TRANSLATORS: camera mode in status bar
- N_("(G) game camera mode"),
- // TRANSLATORS: camera mode in status bar
- N_("(F) free camera mode"),
- // TRANSLATORS: camera mode in status bar
- N_("(?) away")
-})
-
-
-void GameModifiers::changeCameraMode(const bool forward A_UNUSED)
-{
- if (viewport != nullptr)
- viewport->toggleCameraMode();
-}
-
-void GameModifiers::resetModifiers()
-{
- settings.moveType = 0;
- settings.crazyMoveType = config.resetIntValue("crazyMoveType");
- settings.moveToTargetType = config.resetIntValue("moveToTargetType");
- settings.followMode = config.resetIntValue("followMode");
- settings.attackWeaponType = config.resetIntValue("attackWeaponType");
- settings.attackType = config.resetIntValue("attackType");
- settings.magicAttackType = config.resetIntValue("magicAttackType");
- settings.pvpAttackType = config.resetIntValue("pvpAttackType");
- settings.quickDropCounter = config.resetIntValue("quickDropCounter");
- settings.pickUpType = config.resetIntValue("pickUpType");
- settings.targetingType = config.resetIntValue("targetingType");
- settings.mapDrawType = MapType::NORMAL;
- if (viewport != nullptr)
- {
- if (settings.cameraMode != 0u)
- viewport->toggleCameraMode();
- Map *const map = viewport->getMap();
- if (map != nullptr)
- map->setDrawLayersFlags(MapType::NORMAL);
- }
- settings.imitationMode = config.resetIntValue("imitationMode");
- settings.disableGameModifiers = config.resetBoolValue(
- "disableGameModifiers");
-
- UpdateStatusListener::distributeEvent();
- GameModifierListener::distributeEvent();
-}