public Dictionary <BDTeam, List <GPSTargetInfo> > Load() { var value = new Dictionary <BDTeam, List <GPSTargetInfo> >(); for (int i = 0; i < Team.Count; ++i) { value.Add(BDTeam.Get(Team[i]), JsonUtility.FromJson <SerializableGPSList>(Data[i]).Load()); } return(value); }
public bool ProcessMessage(MissileFireEventArgs message) { if (message == null) { return(false); } Vessel vessel = FlightGlobals.VesselsLoaded.FirstOrDefault(v => v.id == message.VesselId); if (vessel == null || vessel.packed) { if (!LunaMultiplayerSystem.missileMessagePending.Contains(message)) { LunaMultiplayerSystem.missileMessagePending.Enqueue(message); } return(false); } else { if (!vessel.loaded) { vessel.Load(); } } MissileBase missile = vessel.FindPartModuleImplementing <MissileBase>(); if (missile == null) { return(false); } if (BDArmorySettings.MULTIPLAYER_VESSELS_OWNED.Contains(message.VesselId)) { return(true); } if (missile.SourceVessel != null && BDArmorySettings.MULTIPLAYER_VESSELS_OWNED.Contains(missile.SourceVessel.id)) { return(true); } missile.Team = BDTeam.Get(message.TeamName); missile.ActivateMissileMultiplayer(); return(true); }
public bool ProcessMessage(VesselTeamChangeEventArgs message) { if (message == null) { return(false); } Vessel vessel = FlightGlobals.VesselsLoaded.FirstOrDefault(v => v.id == message.VesselId); if (vessel == null || vessel.packed) { return(false); } List <MissileFire> weaponManagerList = vessel.FindPartModulesImplementing <MissileFire>(); foreach (var weaponManager in weaponManagerList) { Debug.Log($"VesselTeamChangeMessageHandler.ProcessMessage for {message.VesselId}"); weaponManager.SetTeam(BDTeam.Get(message.Team), false); } return(true); }
private void TeamSelectorWindow(int id) { height = margin; // Team input field newTeamName = GUI.TextField(new Rect(margin, margin, width - buttonGap - 2 * margin - newTeanButtonWidth, buttonHeight), newTeamName, 30); // New team button Rect newTeamButtonRect = new Rect(width - margin - newTeanButtonWidth, height, newTeanButtonWidth, buttonHeight); if (GUI.Button(newTeamButtonRect, Localizer.Format("#LOC_BDArmory_Generic_New"), BDArmorySetup.BDGuiSkin.button))//"New" { if (!string.IsNullOrEmpty(newTeamName.Trim())) { targetWeaponManager.SetTeam(BDTeam.Get(newTeamName.Trim())); open = false; } } height += buttonHeight; // Scrollable list of existing teams scrollable = (BDArmorySetup.Instance.Teams.Count * (buttonHeight + buttonGap) * 2 > Screen.height); if (scrollable) { scrollPosition = GUI.BeginScrollView( new Rect(margin, height, width - margin * 2 + scrollWidth, Screen.height / 2), scrollPosition, new Rect(margin, height, width - margin * 2, BDArmorySetup.Instance.Teams.Count * (buttonHeight + buttonGap)), false, true); } using (var teams = BDArmorySetup.Instance.Teams.Values.GetEnumerator()) while (teams.MoveNext()) { if (teams.Current == null || !teams.Current.Name.ToLowerInvariant().StartsWith(newTeamName.ToLowerInvariant().Trim())) { continue; } height += buttonGap; Rect buttonRect = new Rect(margin, height, width - 2 * margin, buttonHeight); GUIStyle buttonStyle = (teams.Current == targetWeaponManager.Team) ? BDArmorySetup.BDGuiSkin.box : BDArmorySetup.BDGuiSkin.button; if (GUI.Button(buttonRect, teams.Current.Name, buttonStyle)) { targetWeaponManager.SetTeam(teams.Current); open = false; } height += buttonHeight; } if (scrollable) { GUI.EndScrollView(); } // Buttons if (Event.current.type == EventType.KeyUp) { if ((Event.current.keyCode == KeyCode.Return || Event.current.keyCode == KeyCode.KeypadEnter) && !string.IsNullOrEmpty(newTeamName.Trim())) { targetWeaponManager.SetTeam(BDTeam.Get(newTeamName.Trim())); open = false; } else if (Event.current.keyCode == KeyCode.Escape) { open = false; } } height += margin; BDGUIUtils.RepositionWindow(ref window); BDGUIUtils.UseMouseEventInRect(window); }
private void OnGUI() { if (_ready) { if (_showGui && BDArmorySetup.GAME_UI_ENABLED) { SetNewHeight(_windowHeight); // this Rect initialization ensures any save issues with height or width of the window are resolved BDArmorySetup.WindowRectVesselSwitcher = new Rect(BDArmorySetup.WindowRectVesselSwitcher.x, BDArmorySetup.WindowRectVesselSwitcher.y, _windowWidth, _windowHeight); BDArmorySetup.WindowRectVesselSwitcher = GUI.Window(10293444, BDArmorySetup.WindowRectVesselSwitcher, WindowVesselSwitcher, Localizer.Format("#LOC_BDArmory_BDAVesselSwitcher_Title"),//"BDA Vessel Switcher" BDArmorySetup.BDGuiSkin.window); Misc.Misc.UpdateGUIRect(BDArmorySetup.WindowRectVesselSwitcher, _guiCheckIndex); } else { Misc.Misc.UpdateGUIRect(new Rect(), _guiCheckIndex); } if (_teamSwitchDirty) { if (_wmToSwitchTeam) { _wmToSwitchTeam.NextTeam(); } else { // if no team is specified toggle between FFA and all friends // FFA button starts timer running //ResetSpeeds(); _freeForAll = !_freeForAll; char T = 'A'; // switch everyone to their own teams var allPilots = new List <MissileFire>(); using (var teamManagers = weaponManagers.GetEnumerator()) while (teamManagers.MoveNext()) { using (var wm = teamManagers.Current.Value.GetEnumerator()) while (wm.MoveNext()) { if (wm.Current == null) { continue; } allPilots.Add(wm.Current); } } foreach (var pilot in allPilots) { Debug.Log("[BDArmory] assigning " + pilot.vessel.GetDisplayName() + " to team " + T.ToString()); pilot.SetTeam(BDTeam.Get(T.ToString())); if (_freeForAll) { T++; } } } _teamSwitchDirty = false; _wmToSwitchTeam = null; } } }