private void WipeToolbar(Action <IMyPlayer> successAction) { var player = MyAPIGateway.Session.Player; if (player == null) { return; } if (RegisteredPlayers.Contains(player.IdentityId)) { return; // No need, they've been in the game before } if (player.Controller.ControlledEntity == null) { // ReSharper disable once ObjectCreationAsStatement new LateToolbarClearer(player, successAction); } else { MyVisualScriptLogicProvider.ClearAllToolbarSlots(player.IdentityId); successAction(player); } }
void PlayerJoined(long playerID, ulong sender) { MyLog.Default.WriteLine($"PlayerJoined The game! {playerID}"); MyLog.Default.Flush(); try { if (sender == 0) { sender = MyAPIGateway.Session?.Player?.SteamUserId ?? 0; } userIds[playerID] = sender; if (settings.AdminUnlockAll) { bool check; if (unlockAllPlayers.TryGetValue(sender, out check)) { if (check) { UnlockAllByID(playerID); return; } } } var playerIds = (HashSet <MyDefinitionId>)null; try { using (var sw = MyAPIGateway.Utilities.ReadFileInWorldStorage(string.Format(Settings.playerFile, playerID), typeof(Core))) { PlayerFile ids = MyAPIGateway.Utilities.SerializeFromXML <PlayerFile>(sw.ReadToEnd()); playerData = new PlayerData().Load(ids); } } catch (Exception e) { try { using (var sw = MyAPIGateway.Utilities.ReadFileInWorldStorage(string.Format(Settings.playerFile, playerID), typeof(Core))) { var ids = MyAPIGateway.Utilities.SerializeFromXML <List <SerializableDefinitionId> >(sw.ReadToEnd()); playerIds = new HashSet <MyDefinitionId>(ids.Select(s => (MyDefinitionId)s), MyDefinitionId.Comparer); playerData = new PlayerData(playerIds); } } catch (Exception e1) { MyLog.Default.WriteLine($"PlayerJoinedRead: {e1.Message}"); MyLog.Default.WriteLine($"PlayerJoinedRead: {e1.HResult}"); MyLog.Default.Flush(); } } if (playerData == null) { playerData = new PlayerData(); } if (playerData.LearnedBocks.Count == 0) { MyVisualScriptLogicProvider.ClearAllToolbarSlots(playerID); } foreach (var id in settings.AlwaysUnlocked) { playerData.LearnedBocks.Add(id); } players[playerID] = playerData; foreach (var id in playerData.LearnedBocks.ToList()) { UnlockById(id, playerID, true); } } catch (Exception e) { MyLog.Default.WriteLine($"PlayerJoined: {e.Message}"); MyLog.Default.WriteLine($"PlayerJoinedStack: {e.StackTrace}"); MyLog.Default.Flush(); } MyLog.Default.Flush(); }
private void PlayerChangedController(VRage.Game.ModAPI.Interfaces.IMyControllableEntity arg1, VRage.Game.ModAPI.Interfaces.IMyControllableEntity arg2) { MyVisualScriptLogicProvider.ClearAllToolbarSlots(player.IdentityId); MyAPIGateway.Session.Player.Controller.ControlledEntityChanged -= PlayerChangedController; successAction(player); }