Пример #1
0
        private static ReactivePricingStruct InitPricing()
        {
            EconomyScript.Instance.ServerLogger.WriteInfo("Creating new ReactivePricingStruct.");
            ReactivePricingStruct pricing = new ReactivePricingStruct();

            // This entire section should instead load / create the list at server start so that nothing but simple maths is performed in reactive pricing so there is
            // negligable performance impact to lcds
            pricing.Prices.Add(new PricingStruct(10, 1.1m, "Critical stock 10 or less 10% increase"));
            pricing.Prices.Add(new PricingStruct(50, 1.1m, "Low Stock 11 to 50 10% increase"));
            pricing.Prices.Add(new PricingStruct(100, 1.05m, "Could be better 51 to 100 5% increase"));
            pricing.Prices.Add(new PricingStruct(1000, 1m, "About right 101 to 5000 no change"));
            pricing.Prices.Add(new PricingStruct(5000, 0.95m, "Bit high  5001- 10000 drop price 5%"));
            pricing.Prices.Add(new PricingStruct(10000, 0.95m, "Getting fuller 10001 to 50000 drop another 5%"));
            pricing.Prices.Add(new PricingStruct(50000, 0.90m, "Way too much now drop another 10%"));
            pricing.Prices.Add(new PricingStruct(100000, 0.50m, "Getting out of hand drop another 50%"));
            pricing.Prices.Add(new PricingStruct(200000, 0.25m, "Ok we need to dump this stock now 75% price drop"));
            return pricing;
        }
Пример #2
0
 public static void SaveReactivePricing(ReactivePricingStruct pricingData)
 {
     TextWriter writer = MyAPIGateway.Utilities.WriteFileInWorldStorage(WorldStoragePricescaleFilename, typeof(ReactivePricingStruct));
     writer.Write(MyAPIGateway.Utilities.SerializeToXML<ReactivePricingStruct>(pricingData));
     writer.Flush();
     writer.Close();
 }
Пример #3
0
        private void InitServer()
        {
            _isInitialized = true; // Set this first to block any other calls from UpdateAfterSimulation().
            _isServerRegistered = true;
            ServerLogger.Init("EconomyServer.Log", false, DebugOn ? 0 : 20); // comment this out if logging is not required for the Server.
            ServerLogger.WriteStart("Economy Server Log Started");
            ServerLogger.WriteInfo("Economy Server Version {0}", EconomyConsts.ModCommunicationVersion);
            if (ServerLogger.IsActive)
                VRage.Utils.MyLog.Default.WriteLine(string.Format("##Mod## Economy Server Logging File: {0}", ServerLogger.LogFile));

            ServerLogger.WriteStart("RegisterMessageHandler");
            MyAPIGateway.Multiplayer.RegisterMessageHandler(EconomyConsts.ConnectionId, _messageHandler);

            ServerLogger.WriteStart("LoadBankContent");

            ServerConfig = EconDataManager.LoadConfig(); // Load config first.
            Data = EconDataManager.LoadData(ServerConfig.DefaultPrices);
            ReactivePricing = EconDataManager.LoadReactivePricing();

            SetLanguage();

            // start the timer last, as all data should be loaded before this point.
            // TODO: use a single timer, and a counter.
            ServerLogger.WriteStart("Attaching Event 1 timer.");
            _timer1Events = new Timer(1000);
            _timer1Events.Elapsed += Timer1EventsOnElapsed;
            _timer1Events.Start();

            ServerLogger.WriteStart("Attaching Event 10 timer.");
            _timer10Events = new Timer(10000);
            _timer10Events.Elapsed += Timer10EventsOnElapsed;
            _timer10Events.Start();

            ServerLogger.WriteStart("Attaching Event 3600 timer.");
            _timer3600Events = new Timer(3600000);
            _timer3600Events.Elapsed += Timer3600EventsOnElapsed;
            _timer3600Events.Start();

            ServerLogger.Flush();
        }