Esempio n. 1
0
        /// <summary>
        ///
        /// </summary>
        public void Init()
        {
            Mod.Log.Write(Logging.Level.Info, "BuildAndRepairSystemMod: Initializing.");
            _Init = true;

            Settings      = SyncModSettings.Load();
            SettingsValid = MyAPIGateway.Session.IsServer;
            foreach (var entry in BuildAndRepairSystems)
            {
                entry.Value.SettingsChanged();
            }

            Mod.Log.LogLevel = Settings.LogLevel;

            MyAPIGateway.Session.DamageSystem.RegisterBeforeDamageHandler(0, BeforeDamageHandlerNoDamageByBuildAndRepairSystem);
            if (MyAPIGateway.Session.IsServer)
            {
                //Detect friendly damage onl needed on server
                MyAPIGateway.Session.DamageSystem.RegisterAfterDamageHandler(100, AfterDamageHandlerNoDamageByBuildAndRepairSystem);
            }

            if (MyAPIGateway.Utilities.IsDedicated)
            {
                MyAPIGateway.Multiplayer.RegisterMessageHandler(MSGID_MOD_DATAREQUEST, SyncModDataRequestReceived);
                MyAPIGateway.Multiplayer.RegisterMessageHandler(MSGID_BLOCK_DATAREQUEST, SyncBlockDataRequestReceived);
                //Same as MSGID_BLOCK_SETTINGS but SendMessageToOthers sends also to self, which will result in stack overflow
                MyAPIGateway.Multiplayer.RegisterMessageHandler(MSGID_BLOCK_SETTINGS_FROM_CLIENT, SyncBlockSettingsReceived);
            }
            else if (!MyAPIGateway.Session.IsServer)
            {
                MyAPIGateway.Multiplayer.RegisterMessageHandler(MSGID_MOD_SETTINGS, SyncModSettingsReceived);
                MyAPIGateway.Multiplayer.RegisterMessageHandler(MSGID_BLOCK_SETTINGS_FROM_SERVER, SyncBlockSettingsReceived);
                MyAPIGateway.Multiplayer.RegisterMessageHandler(MSGID_BLOCK_STATE_FROM_SERVER, SyncBlockStateReceived);

                SyncModDataRequestSend();
            }
            MyAPIGateway.Utilities.MessageEntered += Utilities_MessageEntered;

            Mod.Log.Write(Logging.Level.Info, "BuildAndRepairSystemMod: Initialized.");
        }