public void execute(GameSession gameSession, byte[] bytes) { var read = new BuildStationRequest(); read.readCommand(bytes); var player = gameSession.Player; var battleStation = player.Spacemap.GetActivatableMapEntity(read.battleStationId) as BattleStation; if (battleStation != null) { if (player.Position.DistanceTo(battleStation.Position) > 700) { player.SendCommand(BattleStationErrorCommand.write(BattleStationErrorCommand.OUT_OF_RANGE)); return; } if (battleStation.EquippedStationModule[player.Clan.Id].Count != 10 || battleStation.InBuildingState || battleStation.Clan.Id != 0) { return; } if (battleStation.Destroyed) { battleStation.Destroyed = false; } battleStation.InBuildingState = true; battleStation.Clan = player.Clan; foreach (var module in battleStation.EquippedStationModule[player.Clan.Id]) { module.Clan = player.Clan; module.FactionId = module.Clan.FactionId; } battleStation.FactionId = battleStation.Clan.FactionId; battleStation.BuildTimeInMinutes = 0; battleStation.buildTime = DateTime.Now; Program.TickManager.AddTick(battleStation); battleStation.AddVisualModifier(VisualModifierCommand.BATTLESTATION_CONSTRUCTING, 0, "", 0, true); player.SendCommand(BattleStationBuildingStateCommand.write(battleStation.Id, battleStation.Id, battleStation.Name, (int)TimeSpan.FromMinutes(battleStation.BuildTimeInMinutes).TotalSeconds, 3600, battleStation.Clan.Name, new FactionModule((short)battleStation.FactionId))); QueryManager.BattleStations.BattleStation(battleStation); QueryManager.BattleStations.Modules(battleStation); } }
public override void Click(GameSession gameSession) { var player = gameSession.Player; int secondsLeft = (int)(TimeSpan.FromMinutes(BuildTimeInMinutes).TotalSeconds - (DateTime.Now - buildTime).TotalSeconds); if (InBuildingState) { player.SendCommand(BattleStationBuildingStateCommand.write(Id, Id, Name, secondsLeft, 0, Clan.Name, new FactionModule((short)FactionId))); } else { if (player.Clan.Id == 0) { player.SendCommand(BattleStationNoClanUiInitializationCommand.write(Id)); } else { var stationModuleModule = new List <StationModuleModule>(); if (EquippedStationModule.ContainsKey(player.Clan.Id)) { foreach (var mm in EquippedStationModule[player.Clan.Id]) { if (mm.Type == StationModuleModule.HULL || mm.Type == StationModuleModule.DEFLECTOR) { mm.CurrentHitPoints = CurrentHitPoints; mm.MaxHitPoints = MaxHitPoints; mm.CurrentShieldPoints = CurrentShieldPoints; mm.MaxShieldPoints = MaxShieldPoints; } stationModuleModule.Add(new StationModuleModule(Id, mm.ItemId, mm.SlotId, mm.Type, mm.CurrentHitPoints, mm.MaxHitPoints, mm.CurrentShieldPoints, mm.MaxShieldPoints, 16, QueryManager.GetUserPilotName(mm.OwnerId), 0, mm.InstallationSecondsLeft, 0, 0, 500)); } } var playerModules = new List <StationModuleModule>(); for (var i = 0; i < player.Storage.BattleStationModules.Count; i++) { if (!player.Storage.BattleStationModules[i].InUse) { playerModules.Add(new StationModuleModule(Id, player.Storage.BattleStationModules[i].Id, i, player.Storage.BattleStationModules[i].Type, 1, 1, 1, 1, 16, QueryManager.GetUserPilotName(player.Id), 0, 0, 0, 0, 500)); } } if (Clan.Id != 0 && player.Clan.Id == Clan.Id) { player.SendCommand(BattleStationManagementUiInitializationCommand.write( Id, Id, Name, Clan.Name, new FactionModule((short)FactionId), new BattleStationStatusCommand(Id, Id, Name, DeflectorActive, 0, DeflectorSecondsMax, 0, 0, 0, 0, 0, 0, 0, 0, new EquippedModulesModule(stationModuleModule)), new AvailableModulesCommand(playerModules), 0, 0, 0, false)); } else { var bestClan = EquippedStationModule.Values.Where(x => x.Where(y => y.Installed).ToList().Count() > 0).ToList().Count > 0 ? EquippedStationModule.OrderByDescending(x => x.Value.Count) : null; player.SendCommand(BattleStationBuildingUiInitializationCommand.write(Id, Id, Name, new AsteroidProgressCommand( Id, (float)(EquippedStationModule.ContainsKey(player.Clan.Id) ? EquippedStationModule[player.Clan.Id].Where(x => x.Installed).ToList().Count : 0) / 10, (float)(bestClan != null ? bestClan.FirstOrDefault().Value.Where(x => x.Installed).ToList().Count : 0) / 10, player.Clan.Name, bestClan != null ? GameManager.GetClan(bestClan.FirstOrDefault().Key)?.Name : "Leading clan's progress", new EquippedModulesModule(EquippedStationModule.ContainsKey(player.Clan.Id) ? stationModuleModule : new List <StationModuleModule>()), (EquippedStationModule.ContainsKey(player.Clan.Id) ? EquippedStationModule[player.Clan.Id].Where(x => x.Installed).ToList().Count : 0) == 10), new AvailableModulesCommand(playerModules), 1, 60, 0)); } } } }