private void Awake() { if (Dependencies.RemoteGameServer != null && Dependencies.RemoteGameServer.IsConnected) { gameObject.SetActive(false); return; } m_gState = Dependencies.State; m_job = Dependencies.Job; m_serializer = new ProtobufSerializer(); //Adding neutral player to room m_neutralPlayer = new Player(); m_neutralPlayer.BotType = BotType.Neutral; m_neutralPlayer.Name = "Neutral"; m_neutralPlayer.Id = Guid.NewGuid(); enabled = false; //Will be set to true when match engine will be ready }
private void Start() { m_gState = Dependencies.State; m_progress = Dependencies.Progress; m_eventSystemManager = Dependencies.EventSystemManager; for (int i = 0; i < m_eventSystemManager.EventSystemCount; ++i) { IndependentEventSystem eventSystem = m_eventSystemManager.GetEventSystem(i); eventSystem.EventSystemUpdate += OnEventSystemUpdate; } if (m_eventSystemManager.CommonEventSystem != null) { m_eventSystemManager.CommonEventSystem.EventSystemUpdate += OnCommonEventSystemUpdate; } m_isPointerOverGameObject = new bool[m_eventSystemManager.EventSystemCount]; m_isInputFieldSelected = new bool[m_eventSystemManager.EventSystemCount]; m_selectedGameObject = new GameObject[m_eventSystemManager.EventSystemCount]; InputManager.OnDeviceAttached += OnDeviceAttached; InputManager.OnDeviceDetached += OnDeviceDetached; InputManager.OnActiveDeviceChanged += OnActiveDeviceChanged; if (!m_gState.HasKey(DevicesPersistentKey)) { m_devices = new List <InputDevice>(InputManager.Devices.Count); m_gState.SetValue(DevicesPersistentKey, m_devices); } else { m_devices = m_gState.GetValue <List <InputDevice> >(DevicesPersistentKey); for (int i = 0; i < m_devices.Count; ++i) { UnityInputDevice device = m_devices[i] as UnityInputDevice; if (device == null) { if (m_devices[i] != null) { m_devices[i].IsSuspended = true; } m_devices[i] = null; } else { InputDevice replacementDevice = InputManager.Devices.OfType <UnityInputDevice>().Where(dev => dev.JoystickId == device.JoystickId).FirstOrDefault(); if (replacementDevice != null) { replacementDevice.IsSuspended = false; m_devices[i] = replacementDevice; } else { if (m_devices[i] != null) { m_devices[i].IsSuspended = true; } m_devices[i] = null; } } } } LogDevices(); }
public void Activate() { if (Dependencies.RemoteGameServer != null && Dependencies.RemoteGameServer.IsConnected) { return; } if (m_gState == null) { m_gState = Dependencies.State; } if (m_job == null) { m_job = Dependencies.Job; } //m_persistentDataPath = Application.persistentDataPath; m_persistentDataPath = Application.streamingAssetsPath; m_loggedInPlayers = m_gState.GetValue <HashSet <Guid> >("LocalGameServer.m_loggedInPlayers"); if (m_loggedInPlayers == null) { m_loggedInPlayers = new HashSet <Guid>(); } m_room = m_gState.GetValue <Room>("LocalGameServer.m_room"); if (m_room == null) { m_room = new Room(); m_room.Players = new List <Guid>(); m_room.MapInfo = new MapInfo { Name = "Default", MaxPlayers = GameConstants.MaxPlayers, SupportedModes = GameMode.All }; } m_players = m_gState.GetValue <Dictionary <Guid, Player> >("LocalGameServer.m_players"); if (m_players == null) { m_players = new Dictionary <Guid, Player>(); } if (!m_players.ContainsKey(m_neutralPlayer.Id)) { m_players.Add(m_neutralPlayer.Id, m_neutralPlayer); } if (!m_room.Players.Contains(m_neutralPlayer.Id)) { m_room.Players.Insert(0, m_neutralPlayer.Id); } m_abilities = new Dictionary <Guid, VoxelAbilities[]>(); m_tasks = new Dictionary <Guid, SerializedTask[]>(); m_serializedTaskTemplates = new Dictionary <Guid, SerializedNamedTaskLaunchInfo[]>(); for (int i = 0; i < m_room.Players.Count; ++i) { m_abilities.Add(m_room.Players[i], CreateDefaultAbilities()); m_tasks.Add(m_room.Players[i], CreateDefaultTaskTemplates()); m_serializedTaskTemplates.Add(m_room.Players[i], CreateDefaultTaskTemplateData()); } Guid[] clientIds = new[] { Guid.Empty }; m_pingTimer = new PingTimer(clientIds, 3); ReplayData replay = m_gState.GetValue <ReplayData>("LocalGameServer.m_replay"); if (replay != null) { m_replay = MatchFactory.CreateReplayPlayer(); m_replay.Load(replay); } Connect(); }