// This file is generated by kconfig_compiler_kf6 from killbots.kcfg.
// All changes you do to this file will be lost.
#ifndef KILLBOTS_SETTINGS_H
#define KILLBOTS_SETTINGS_H

#include <kconfigskeleton.h>
#include <QCoreApplication>
#include <QDebug>

namespace Killbots {

class Settings : public KConfigSkeleton
{
  public:
    enum ClickAction { Nothing, Step, RepeatedStep, Teleport, TeleportSafely, TeleportSafelyIfPossible, WaitOutRound };

    static Settings *self();
    ~Settings() override;

    /**
      Get MiddleClickAction
    */
    static
    ClickAction middleClickAction()
    {
      return static_cast<ClickAction>(self()->mMiddleClickAction);
    }

    /**
      Is MiddleClickAction Immutable
    */
    static
    bool isMiddleClickActionImmutable()
    {
      return self()->isImmutable( QStringLiteral( "MiddleClickAction" ) );
    }

    /**
      Get Item object corresponding to MiddleClickAction()
    */
    ItemEnum *middleClickActionItem()
    {
      return mMiddleClickActionItem;
    }

    /**
      Get RightClickAction
    */
    static
    ClickAction rightClickAction()
    {
      return static_cast<ClickAction>(self()->mRightClickAction);
    }

    /**
      Is RightClickAction Immutable
    */
    static
    bool isRightClickActionImmutable()
    {
      return self()->isImmutable( QStringLiteral( "RightClickAction" ) );
    }

    /**
      Get Item object corresponding to RightClickAction()
    */
    ItemEnum *rightClickActionItem()
    {
      return mRightClickActionItem;
    }

    /**
      Get AnimationSpeed
    */
    static
    int animationSpeed()
    {
      return self()->mAnimationSpeed;
    }

    /**
      Is AnimationSpeed Immutable
    */
    static
    bool isAnimationSpeedImmutable()
    {
      return self()->isImmutable( QStringLiteral( "AnimationSpeed" ) );
    }

    /**
      Get Item object corresponding to AnimationSpeed()
    */
    ItemInt *animationSpeedItem()
    {
      return mAnimationSpeedItem;
    }

    /**
      Get PreventUnsafeMoves
    */
    static
    bool preventUnsafeMoves()
    {
      return self()->mPreventUnsafeMoves;
    }

    /**
      Is PreventUnsafeMoves Immutable
    */
    static
    bool isPreventUnsafeMovesImmutable()
    {
      return self()->isImmutable( QStringLiteral( "PreventUnsafeMoves" ) );
    }

    /**
      Get Item object corresponding to PreventUnsafeMoves()
    */
    ItemBool *preventUnsafeMovesItem()
    {
      return mPreventUnsafeMovesItem;
    }

    /**
      Set Ruleset
    */
    static
    void setRuleset( const QString & v )
    {
      if (!self()->isRulesetImmutable())
        self()->mRuleset = v;
    }

    /**
      Get Ruleset
    */
    static
    QString ruleset()
    {
      return self()->mRuleset;
    }

    /**
      Is Ruleset Immutable
    */
    static
    bool isRulesetImmutable()
    {
      return self()->isImmutable( QStringLiteral( "Ruleset" ) );
    }

    /**
      Get Ruleset default value
    */
    static
    QString defaultRulesetValue()
    {
        return defaultRulesetValue_helper();
    }

    /**
      Get Item object corresponding to Ruleset()
    */
    ItemString *rulesetItem()
    {
      return mRulesetItem;
    }

  protected:
    Settings();
    friend class SettingsHelper;


    // General
    int mMiddleClickAction;
    int mRightClickAction;
    int mAnimationSpeed;
    bool mPreventUnsafeMoves;
    QString mRuleset;
    static QString defaultRulesetValue_helper();

  private:
    ItemEnum *mMiddleClickActionItem;
    ItemEnum *mRightClickActionItem;
    ItemInt *mAnimationSpeedItem;
    ItemBool *mPreventUnsafeMovesItem;
    ItemString *mRulesetItem;
};

}

#endif

