// This file is generated by kconfig_compiler_kf5 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();


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

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


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

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


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

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


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

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

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

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

    /**
      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

