Пример #1
0
        public override void Init(MyObjectBuilder_SessionComponent sessionComponent)
        {
            NetworkAPI.LogNetworkTraffic = false;
            Tools.DebugMode = true;

            IsNotificationInitialized = MyAPIGateway.Utilities.IsDedicated;

            if (!NetworkAPI.IsInitialized)
            {
                NetworkAPI.Init(ModId, ModName, ModKeyword);
            }

            NetSettings = new NetSync <Settings>(this, TransferType.ServerToClient, Settings.Static);
            NetSettings.ValueChangedByNetwork += UpdateSettings;
            //NetSettings.BeforeFetchRequestResponse += SettingsRequest;

            if (!MyAPIGateway.Session.IsServer)
            {
                NetworkAPI.Instance.RegisterChatCommand("load", (args) => NetworkAPI.Instance.SendCommand("load"));
            }
            else
            {
                NetworkAPI.Instance.RegisterNetworkCommand("load", ServerCallback_Load);

                NetworkAPI.Instance.RegisterChatCommand("load", (args) => {
                    Settings.Load();
                    NetSettings.Value = Settings.Static;
                });
            }

            Settings.Load();
            NetSettings.Value = Settings.Static;
        }
Пример #2
0
        //private Dictionary<string, Seat> seatsByCID;

        private void Awake()
        {
            seatsByGUID = new Dictionary <string, Seat>();
            //seatsByCID = new Dictionary<string, Seat>();
            foreach (Seat seat in seats)
            {
                NetSync ns = seat.GetComponent <NetSync>();
                seatsByGUID.Add(ns.GUID, seat);
            }
        }
Пример #3
0
        /// <summary>
        /// Called before update loop begins
        /// </summary>
        public virtual void Start()
        {
            WeaponDefinition = CubeBlock.BlockDefinition.Id;

            State = new NetSync <WeaponState>(ControlLayer, TransferType.Both, WeaponState.None);
            State.ValueChanged += StateChanged;
            Reloading           = new NetSync <bool>(ControlLayer, TransferType.ServerToClient, false);
            DeviationIndex      = new NetSync <sbyte>(ControlLayer, TransferType.ServerToClient, (sbyte)MyRandom.Instance.Next(0, sbyte.MaxValue));
            InventoryComponent.GetOrAddComponent(CubeBlock.CubeGrid);
            Inventory = CubeBlock.GetInventory();
        }
Пример #4
0
        public override void Init(MyObjectBuilder_SessionComponent sessionComponent)
        {
            NetworkAPI.LogNetworkTraffic = true;

            if (!NetworkAPI.IsInitialized)
            {
                NetworkAPI.Init(ModId, ModName, ModKeyword);
            }

            MyLog.Default.WriteLine($"[Session Test] <InitializeSessionComponent>");
            SessionTest = new NetSync <string>(this, TransferType.Both);
        }
Пример #5
0
        // storage objects to avoid constant memory allocation and deallocation. e.g. "new" keyword abuse.

        void Awake()
        {
            netSync = GetComponent <NetSync>();
            if (netSync == null)
            {
                Debug.LogWarning("Rigidbody2D must contain NetSync component to sync across network.");
                enabled = false;
                return;
            }

            doUpdate        = false;
            syncEndPosition = transform.position;

            rb = GetComponent <UnityEngine.Rigidbody2D>();
        }
Пример #6
0
        public override void Init(MyObjectBuilder_EntityBase objectBuilder)
        {
            MyLog.Default.WriteLine($"[Block Test] {Status()} <InitializeGameLogicComponent>");
            gamelogic = new NetSync <string>(this, TransferType.Both, string.Empty);

            MyLog.Default.WriteLine($"[Block Test] {Status()} <InitializeIMyEntity>");
            imyentity = new NetSync <string>(Entity, TransferType.Both, string.Empty);

            MyLog.Default.WriteLine($"[Block Test] {Status()} <InitializeMyEntity>");
            myentity = new NetSync <string>(Entity as MyEntity, TransferType.Both, string.Empty);

            sync = new NetSync <int>(this, TransferType.Both);

            serverToClient = new NetSync <float>(Entity as MyEntity, TransferType.ServerToClient);

            clientToServer = new NetSync <double>(Entity as MyEntity, TransferType.ClientToServer);

            NeedsUpdate |= VRage.ModAPI.MyEntityUpdateEnum.BEFORE_NEXT_FRAME;
        }
Пример #7
0
    //public GameObject btn;
    // Use this for initialization
    void Start()
    {
        isReady        = false;
        isConnected    = false;
        opSelectedGeis = new ArrayList();
        l     = GameObject.Find("HUD").GetComponent <VersusUI>();
        gen   = GameObject.Find("Reader").GetComponent <NoteGenMan>();
        audio = GameObject.Find("Audio Source").GetComponent <AudioSource>();
        if (l.myDataSync == null || l.opDataSync == null)
        {
            ns = GameObject.FindGameObjectsWithTag("Syncs");
            foreach (GameObject n in ns)
            {
                NetSync nv = n.GetComponent <NetSync>();
                if (nv.isLocalPlayer)
                {
                    l.myDataSync   = nv;
                    gen.myDataSync = nv;
                }
                else
                {
                    l.opDataSync   = nv;
                    gen.opDataSync = nv;
                }
            }
            if (ns.Length == 2)
            {
                isConnected = true;
                l.DeactivitateInitPanel();
                //l.ActivitateGeiPanel();

                Time.timeScale = 1;
                l.ActivitateMe();
                l.ActivitateOp();
                audio.Play();
            }
        }
        //btn.GetComponent<Button>().onClick.RemoveAllListeners();
        score = 0;
    }
Пример #8
0
        public override void Init(MyObjectBuilder_SessionComponent sessionComponent)
        {
            thrustTypeId  = MyObjectBuilderType.ParseBackwardsCompatible("Thrust");
            cockpitTypeId = MyObjectBuilderType.ParseBackwardsCompatible("Cockpit");

            NetworkAPI.LogNetworkTraffic = false;

            if (!NetworkAPI.IsInitialized)
            {
                NetworkAPI.Init(ComId, ModName, CommandKeyword);
            }

            if (!RtsApiBackend.IsInitialized)
            {
                RtsApiBackend.Init(this);
            }

            cfg = new NetSync <Settings>(this, TransferType.ServerToClient, Settings.Load(), true, false);
            cfg.ValueChangedByNetwork += SettingChanged;
            Settings.Instance          = cfg.Value;

            Network.RegisterChatCommand(string.Empty, Chat_Help);
            Network.RegisterChatCommand("help", Chat_Help);
            Network.RegisterChatCommand("hud", Chat_Hud);
            Network.RegisterChatCommand("config", Chat_Config);

            if (!MyAPIGateway.Multiplayer.IsServer)
            {
                Network.RegisterChatCommand("load", (args) => { Network.SendCommand("load"); });
            }
            else
            {
                Network.RegisterNetworkCommand("load", ServerCallback_Load);
                Network.RegisterChatCommand("load", (args) => { cfg.Value = Settings.Load(); });
            }

            MyLog.Default.Info("[RelativeTopSpeed] Starting.");
            MyAPIGateway.Entities.OnEntityAdd    += AddGrid;
            MyAPIGateway.Entities.OnEntityRemove += RemoveGrid;
        }
		/// <summary>
		/// Add a network variable to the NetworkedMonoBehavior to use
		/// </summary>
		/// <param name="getter">Variable to get</param>
		/// <param name="setter">Variable to set</param>
		protected void AddNetworkVariable(Func<object> getter, Action<object> setter, NetSync netSync = null, bool manualProperty = false, bool serverOnly = false)
		{
			if (IsSetup)
				throw new NetworkException(6, "Network variables can not be added after the Awake method of this MonoBehaviour");

			Action callback = null;
			NetworkCallers callers = NetworkCallers.Everyone;
			NetSync.Interpolate useInterpolation = NetSync.Interpolate.True;

			if (netSync != null)
			{
				if (!string.IsNullOrEmpty(netSync.method))
				{
#if NETFX_CORE
					callback = () => { this.GetType().GetRuntimeMethod(netSync.method, null).Invoke(this, new object[] { }); };
#else
					callback = (Action)Delegate.CreateDelegate(typeof(Action), this, netSync.method);
#endif
				}

				callers = netSync.callers;
				useInterpolation = netSync.interpolate;
			}

			if (manualProperty)
				ManualProperties.Add(new NetRef<object>(getter, setter, callback, callers, useInterpolation == NetSync.Interpolate.False));
			else
				Properties.Add(new NetRef<object>(getter, setter, callback, callers, useInterpolation == NetSync.Interpolate.False, serverOnly));
		}
Пример #10
0
        public void Init(NetworkAPI net, NetSync <Settings> settings)
        {
            net.RegisterChatCommand("", OnHelp);
            net.RegisterChatCommand("help", OnHelp);
            net.RegisterChatCommand("debug", (args) =>
            {
                switch (args)
                {
                case "on":
                    OnToggleDebug?.Invoke(true);
                    break;

                case "off":
                    OnToggleDebug?.Invoke(false);
                    break;

                default:
                    Log.UI.Error($"Invalid argument to debug: '{args}'");
                    break;
                }
            });

            net.RegisterChatCommand("config", (argsStr) =>
            {
                try
                {
                    Log.Game.Debug($"Got cmd: {argsStr}");
                    var first = argsStr.IndexOf(' ');
                    if (first == -1)
                    {
                        first = argsStr.Length;
                    }
                    var arg = argsStr.Substring(0, first);
                    Log.Game.Debug($"Arg: '{arg}'");
                    switch (arg)
                    {
                    case "add":
                    case "remove":
                    case "view":
                    case "set":
                        OnConfigEdit(argsStr);
                        break;

                    case "reload":
                        if (!MyAPIGateway.Multiplayer.IsServer)
                        {
                            net.SendCommand(RELOAD_CONF_CMD);
                        }
                        else
                        {
                            OnConfigReloadServer(0, null, null, DateTime.MinValue);
                        }
                        break;

                    case "save":
                        if (!MyAPIGateway.Multiplayer.IsServer)
                        {
                            net.SendCommand(SAVE_CONF_CMD);
                        }
                        else
                        {
                            OnConfigSaveServer(0, null, null, DateTime.MinValue);
                        }
                        break;

                    case "list":
                        OnConfigList();
                        break;

                    default:
                        var msg = $"Unknown command: '{argsStr}'";
                        Log.Game.Error(msg);
                        Log.UI.Error(msg);
                        break;
                    }
                }
                catch (Exception e)
                {
                    Log.Game.Error(e);
                    Log.UI.Error($"Failed to parse command: {e.Message}. This is a bug, please report it along with the contents of your log file");
                }
            });
            if (MyAPIGateway.Multiplayer.IsServer || MyAPIGateway.Utilities.IsDedicated)
            {
                net.RegisterNetworkCommand(RELOAD_CONF_CMD, OnConfigReloadServer);
                net.RegisterNetworkCommand(SAVE_CONF_CMD, OnConfigSaveServer);
            }

            net_settings_ = settings;
        }
		/// <summary>
		/// Add a network variable to the NetworkedMonoBehavior to use
		/// </summary>
		/// <param name="getter">Variable to get</param>
		/// <param name="setter">Variable to set</param>
		protected void AddNetworkVariable(Func<object> getter, Action<object> setter, NetSync netSync = null)
		{
			if (IsSetup)
				throw new NetworkException(6, "Network variables can not be added after the Awake method of this MonoBehaviour");

			if (Properties == null)
				Properties = new List<NetRef<object>>();

			Action callback = null;
			NetworkCallers callers = NetworkCallers.Everyone;

			if (netSync != null)
			{
				if (!string.IsNullOrEmpty(netSync.method))
					callback = (Action)Delegate.CreateDelegate(typeof(Action), this, netSync.method);

				callers = netSync.callers;
			}

			Properties.Add(new NetRef<object>(getter, setter, callback, callers));
		}