Advertisement
Guest User

Untitled

a guest
Jul 5th, 2017
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 10.28 KB | None | 0 0
  1.     [PropertyObject, Serializable, XmlRoot( "Options" )]
  2.     public sealed class DistroServerOptions : ServerOptions
  3.     {
  4.         private bool m_AntiMacroCode;
  5.         private double m_GainFactorBonusPerLevel;
  6.         private double m_PowerHourBoost;
  7.         private double m_SuperPowerHourBoost;
  8.         private int m_MaxIndiviualCap;
  9.         private bool m_TrackerEnabled;
  10.         private double m_TicketBonusAmount;
  11.         private bool m_UseOnlineBuffer;
  12.         private int m_MinOnlineBuffer;
  13.         private int m_MaxOnlineBuffer;
  14.  
  15.         [XmlElement( "MinOnlineBuffer" ), CommandProperty( AccessLevel.Administrator, AccessLevel.SeniorAdministrator )]
  16.         public int MinOnlineBuffer
  17.         {
  18.             get { return m_MinOnlineBuffer; }
  19.             set { m_MinOnlineBuffer = value; }
  20.         }
  21.  
  22.         [XmlElement( "MaxOnlineBuffer" ), CommandProperty( AccessLevel.Administrator, AccessLevel.SeniorAdministrator )]
  23.         public int MaxOnlineBuffer
  24.         {
  25.             get { return m_MaxOnlineBuffer; }
  26.             set { m_MaxOnlineBuffer = value; }
  27.         }
  28.  
  29.         private bool m_DungeonChestsEnabled;
  30.         private bool m_TownStealablesEnabled;
  31.  
  32.         [XmlElement( "TownStealablesEnabled" ), CommandProperty( AccessLevel.GameMaster, AccessLevel.SeniorAdministrator )]
  33.         public bool TownStealablesEnabled
  34.         {
  35.             get { return m_TownStealablesEnabled; }
  36.             set { m_TownStealablesEnabled = value; }
  37.         }
  38.  
  39.         [XmlElement( "DungeonChestsEnabled" ), CommandProperty( AccessLevel.GameMaster, AccessLevel.SeniorAdministrator )]
  40.         public bool DungeonChestsEnabled
  41.         {
  42.             get { return m_DungeonChestsEnabled; }
  43.             set { m_DungeonChestsEnabled = value; }
  44.         }
  45.  
  46.         [XmlElement( "UseOnlineBuffer" ), CommandProperty( AccessLevel.GameMaster, AccessLevel.SeniorAdministrator )]
  47.         public bool UseOnlineBuffer
  48.         {
  49.             get { return m_UseOnlineBuffer; }
  50.             set { m_UseOnlineBuffer = value; }
  51.         }
  52.  
  53.         [XmlElement( "TicketBonusAmount" ), CommandProperty( AccessLevel.GameMaster, AccessLevel.SeniorAdministrator )]
  54.         public double TicketBonusAmount
  55.         {
  56.             get { return m_TicketBonusAmount; }
  57.             set { m_TicketBonusAmount = value; }
  58.         }
  59.  
  60.         [XmlElement( "TrackerEnabled" ), CommandProperty( AccessLevel.GameMaster, AccessLevel.SeniorAdministrator )]
  61.         public bool TrackerEnabled
  62.         {
  63.             get { return m_TrackerEnabled; }
  64.             set { m_TrackerEnabled = value; }
  65.         }
  66.  
  67.         [XmlElement( "AntiMacroCode" ), CommandProperty( AccessLevel.GameMaster, AccessLevel.SeniorAdministrator )]
  68.         public bool AntiMacroCode
  69.         {
  70.             get { return m_AntiMacroCode; }
  71.             set { m_AntiMacroCode = value; }
  72.         }
  73.  
  74.         [XmlElement( "GainFactorBonusPerLevel" ), CommandProperty( AccessLevel.GameMaster, AccessLevel.SeniorAdministrator )]
  75.         public double GainFactorBonusPerLevel
  76.         {
  77.             get { return m_GainFactorBonusPerLevel; }
  78.             set { m_GainFactorBonusPerLevel = value; }
  79.         }
  80.  
  81.         [XmlElement( "PowerHourBoost" ), CommandProperty( AccessLevel.GameMaster, AccessLevel.SeniorAdministrator )]
  82.         public double PowerHourBoost
  83.         {
  84.             get { return m_PowerHourBoost; }
  85.             set { m_PowerHourBoost = value; }
  86.         }
  87.  
  88.         [XmlElement( "SuperPowerHourBoost" ), CommandProperty( AccessLevel.GameMaster, AccessLevel.SeniorAdministrator )]
  89.         public double SuperPowerHourBoost
  90.         {
  91.             get { return m_SuperPowerHourBoost; }
  92.             set { m_SuperPowerHourBoost = value; }
  93.         }
  94.  
  95.         [XmlElement( "MaxIndiviualCap" ), CommandProperty( AccessLevel.GameMaster, AccessLevel.SeniorAdministrator )]
  96.         public int MaxIndiviualCap
  97.         {
  98.             get { return m_MaxIndiviualCap; }
  99.             set { m_MaxIndiviualCap = value; }
  100.         }
  101.  
  102.         private WeaponSettings m_WeaponSettings;
  103.  
  104.         [XmlElement( "WeaponSettings" )]
  105.         public WeaponSettings WeaponSettingsXml
  106.         {
  107.             get { return m_WeaponSettings; }
  108.             set { m_WeaponSettings = value; }
  109.         }
  110.  
  111.         [XmlIgnore, CommandProperty( AccessLevel.GameMaster, AccessLevel.Administrator )]
  112.         public WeaponSettings WeaponSettings
  113.         {
  114.             get { return m_WeaponSettings; }
  115.             set { m_WeaponSettings = value; }
  116.         }
  117.  
  118.         private SpellSettings m_SpellSettings;
  119.  
  120.         [XmlElement( "SpellSettings" )]
  121.         public SpellSettings SpellSettingsXml
  122.         {
  123.             get { return m_SpellSettings; }
  124.             set { m_SpellSettings = value; }
  125.         }
  126.  
  127.         [XmlIgnore, CommandProperty( AccessLevel.GameMaster, AccessLevel.Administrator )]
  128.         public SpellSettings SpellSettings
  129.         {
  130.             get { return m_SpellSettings; }
  131.             set { m_SpellSettings = value; }
  132.         }
  133.  
  134.         public DistroServerOptions()
  135.         {
  136.             m_WeaponSettings= new WeaponSettings();
  137.             m_SpellSettings = new SpellSettings();
  138.  
  139.             m_AntiMacroCode = false;
  140.             m_GainFactorBonusPerLevel = 5.0; // Gain Factor Bonus Per Level
  141.             m_PowerHourBoost = 1.20; // Power Hour Boost!
  142.             m_SuperPowerHourBoost = 1.65; // Super Powerhour Boost!
  143.             m_MaxIndiviualCap = 100;
  144.             m_TrackerEnabled = true;
  145.             m_TicketBonusAmount = 2.0;
  146.             m_UseOnlineBuffer = false;
  147.  
  148.             m_MinOnlineBuffer = 3;
  149.             m_MaxOnlineBuffer = 10;
  150.         }
  151.     }
  152.  
  153. // I had this in the core...
  154.     [Flags]
  155.     public enum OptionFlags
  156.     {
  157.         None                = 0x0000,
  158.         SiegePerlious       = 0x0001,
  159.         PacketDebug         = 0x0002,
  160.         Debug               = 0x0004,
  161.         UseRateOverTime     = 0x0008
  162.     }
  163.  
  164.     [PropertyObject, Serializable, XmlRoot( "Options" )]
  165.     public class ServerOptions
  166.     {
  167.         private MySqlConnectionStringBuilder m_ConnectionString;
  168.  
  169.         private OptionFlags m_Flags;
  170.         private double m_GoldModifier;
  171.         private Expansion m_Expansion;
  172.  
  173.         private uint m_ServerID;
  174.         private string m_DataPath;
  175.  
  176.         private string m_DatabaseServer;
  177.         private uint m_DatabasePort;
  178.         private string m_DatabaseUser;
  179.         private string m_DatabasePassword;
  180.         private string m_DatabaseSchema;
  181.  
  182.         [XmlElement]
  183.         [CommandProperty( AccessLevel.SeniorAdministrator, true )]
  184.         public uint ServerID
  185.         {
  186.             get { return m_ServerID; }
  187.             set { m_ServerID = value; }
  188.         }
  189.  
  190.         [XmlElement]
  191.         [CommandProperty( AccessLevel.SeniorAdministrator, true )]
  192.         public bool IsDebugMode
  193.         {
  194.             get { return GetFlag( OptionFlags.Debug ); }
  195.             set { SetFlag( OptionFlags.Debug, value ); }
  196.         }
  197.  
  198.         [XmlElement]
  199.         [CommandProperty( AccessLevel.SeniorAdministrator, true )]
  200.         public bool IsPacketDebug
  201.         {
  202.             get { return GetFlag( OptionFlags.PacketDebug ); }
  203.             set { SetFlag( OptionFlags.PacketDebug, value ); }
  204.         }
  205.  
  206.         [XmlElement]
  207.         [CommandProperty( AccessLevel.SeniorAdministrator, true )]
  208.         public bool UseRateOverTime
  209.         {
  210.             get { return GetFlag( OptionFlags.UseRateOverTime ); }
  211.             set { SetFlag( OptionFlags.UseRateOverTime, value ); }
  212.         }
  213.  
  214.         [XmlElement]
  215.         [CommandProperty( AccessLevel.SeniorAdministrator )]
  216.         public string DatabaseServer
  217.         {
  218.             get
  219.             {
  220.                 return m_DatabaseServer;
  221.             }
  222.             set
  223.             {
  224.                 m_DatabaseServer = value;
  225.                 m_ConnectionString.Server = value;
  226.             }
  227.         }
  228.  
  229.         [XmlElement]
  230.         [CommandProperty( AccessLevel.SeniorAdministrator )]
  231.         public uint DatabasePort
  232.         {
  233.             get
  234.             {
  235.                 return m_DatabasePort;
  236.             }
  237.             set
  238.             {
  239.                 m_DatabasePort = value;
  240.                 m_ConnectionString.Port = value;
  241.             }
  242.         }
  243.  
  244.         [XmlElement]
  245.         [CommandProperty( AccessLevel.SeniorAdministrator )]
  246.         public string DatabaseUser
  247.         {
  248.             get
  249.             {
  250.                 return m_DatabaseUser;
  251.             }
  252.             set
  253.             {
  254.                 m_DatabaseUser = value;
  255.                 m_ConnectionString.UserID = value;
  256.             }
  257.         }
  258.  
  259.         [XmlElement]
  260.         [CommandProperty( AccessLevel.SeniorAdministrator )]
  261.         public string DatabasePassword
  262.         {
  263.             get
  264.             {
  265.                 return m_DatabasePassword;
  266.             }
  267.             set
  268.             {
  269.                 m_DatabasePassword = value;
  270.                 m_ConnectionString.Password = value;
  271.             }
  272.         }
  273.  
  274.         [XmlElement]
  275.         [CommandProperty( AccessLevel.SeniorAdministrator )]
  276.         public string DatabaseSchema
  277.         {
  278.             get
  279.             {
  280.                 return m_DatabaseSchema;
  281.             }
  282.             set
  283.             {
  284.                 m_DatabaseSchema = value;
  285.                 m_ConnectionString.Database = value;
  286.             }
  287.         }
  288.  
  289.         [XmlIgnore]
  290.         [CommandProperty( AccessLevel.SeniorAdministrator, true )]
  291.         public bool IsLocalDatabase
  292.         {
  293.             get
  294.             {
  295.                 return ( m_DatabaseServer == "localhost" );
  296.             }
  297.         }
  298.  
  299.         [XmlIgnore]
  300.         public string DatabaseConnectionString
  301.         {
  302.             get
  303.             {
  304.                 return m_ConnectionString.ConnectionString;
  305.             }
  306.         }
  307.  
  308.         [XmlElement]
  309.         [CommandProperty( AccessLevel.SeniorAdministrator, true )]
  310.         public string DataPath
  311.         {
  312.             get { return m_DataPath; }
  313.             set { m_DataPath = value; }
  314.         }
  315.  
  316.         [XmlIgnore]
  317.         public OptionFlags Flags { get { return m_Flags; } }
  318.  
  319.         /**
  320.          * Gold Modifier is a purpose to adjust the gold that drops
  321.          * The default is 1.0 which is 100% drop...
  322.          *
  323.          * Increasing it does this, suppose you normally see a Earth Elemental
  324.          * drop around 300-400gp it will with a 1.25 (125% bonus) will drop 375-500gp.
  325.          *
  326.          * Decreasing will lower the drop so at 0.75 will make the loot drop to 225-300gp.
  327.          */
  328.         [XmlElement]
  329.         [CommandProperty( AccessLevel.GameMaster, AccessLevel.SeniorAdministrator )]
  330.         public double GoldModifier { get { return m_GoldModifier; } set { m_GoldModifier = value; } }
  331.  
  332.         [XmlElement]
  333.         [CommandProperty( AccessLevel.GameMaster, AccessLevel.SeniorDeveloper )]
  334.         public Expansion Expansion
  335.         {
  336.             get { return m_Expansion; }
  337.             set { m_Expansion = value; }
  338.         }
  339.  
  340.         [XmlElement]
  341.         [CommandProperty( AccessLevel.GameMaster, AccessLevel.SeniorDeveloper )]
  342.         public bool SiegePerlious
  343.         {
  344.             get { return GetFlag( OptionFlags.SiegePerlious ); }
  345.             set { SetFlag( OptionFlags.SiegePerlious, value ); }
  346.         }
  347.  
  348.         private bool GetFlag( OptionFlags flag )
  349.         {
  350.             return (m_Flags & flag) != 0;
  351.         }
  352.  
  353.         private void SetFlag( OptionFlags flag, bool on )
  354.         {
  355.             m_Flags = on ? (m_Flags | flag) : (m_Flags & ~flag);
  356.         }
  357.  
  358.         public ServerOptions()
  359.         {
  360.             m_GoldModifier = 1.0;
  361.             m_Expansion = Expansion.Highest;
  362.             m_Flags = OptionFlags.None;
  363.  
  364.             SetFlag( OptionFlags.Debug, true );
  365.  
  366.             m_ServerID = 0;
  367.             m_ConnectionString = new MySqlConnectionStringBuilder();
  368.         }
  369.  
  370.         public static T Load<T>() where T : ServerOptions
  371.         {
  372.             string settingFiles = Path.Combine( Core.BaseDirectory, "serveroptions.xml" );
  373.  
  374.             if ( File.Exists( settingFiles ) )
  375.             {
  376.                 using ( FileStream fs = new FileStream( settingFiles, FileMode.Open, FileAccess.Read, FileShare.Read ) )
  377.                 {
  378.                     XmlSerializer xml = new XmlSerializer( typeof( T ) );
  379.                     return (T)xml.Deserialize( fs );
  380.                 }
  381.             }
  382.             return default( T );
  383.         }
  384.  
  385.         public static void Save<T>( T value )
  386.         {
  387.             string settingFiles = Path.Combine( Core.BaseDirectory, "serveroptions.xml" );
  388.  
  389.             using ( FileStream fs = new FileStream( settingFiles, FileMode.Create, FileAccess.Write, FileShare.Write ) )
  390.             {
  391.                 XmlSerializer xml = new XmlSerializer( typeof( T ) );
  392.                 xml.Serialize( fs, value );
  393.             }
  394.         }
  395.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement