public void RefreshFireControlList(int a, int b) { _fireControlList.Clear(); if (SelectedShip == null) { return; } if (!SelectedShip.HasDataBlob <BeamWeaponsDB>()) { _fireControlList.Clear(); return; } var instanceDB = SelectedShip.GetDataBlob <ComponentInstancesDB>(); if (instanceDB.TryGetComponentsByAttribute <BeamFireControlAtbDB>(out var fcList)) { int fcCount = 0; foreach (var item in fcList) { fcCount++; _fireControlList.Add(item, item.GetName()); } } //List<KeyValuePair<Entity, List<Entity>>> fcList = EntityStoreHelpers.GetComponentsOfType<BeamFireControlAtbDB>(instanceDB.SpecificInstances); //new List<KeyValuePair<Entity, List<Entity>>>(instanceDB.SpecificInstances.ToDictionary().Where(item => item.Key.HasDataBlob<BeamFireControlAtbDB>()).ToList()); /* * foreach (KeyValuePair<Entity, List<Entity>> kvp in fcList) * { * int fcCount = 0; * if (kvp.Key.HasDataBlob<BeamFireControlAtbDB>()) * foreach(Entity instance in kvp.Value) * { * fcCount++; * _fireControlList.Add(instance, kvp.Key.GetDataBlob<NameDB>().DefaultName + fcCount); * } * * * } */ _fireControlList.SelectedIndex = 0; RefreshBeamWeaponsList(0, 0); // OnPropertyChanged(nameof(FireControlList)); }
public void RefreshBeamWeaponsList(int a, int b) { _attachedBeamList.Clear(); _freeBeamList.Clear(); if (SelectedShip == null || _shipList.SelectedIndex == -1) { return; } if (_fireControlList.Count > 0 && _fireControlList.SelectedIndex != -1) { int beamCount = 0; foreach (Entity beam in SelectedFireControl.GetDataBlob <FireControlInstanceAbilityDB>().AssignedWeapons) { beamCount++; _attachedBeamList.Add(beam, beam.GetDataBlob <ComponentInstanceInfoDB>().DesignEntity.GetDataBlob <NameDB>().DefaultName + " " + beamCount); } } else { _attachedBeamList.Clear(); } var instancesDB = SelectedShip.GetDataBlob <ComponentInstancesDB>(); List <KeyValuePair <Entity, List <Entity> > > beamList = EntityStoreHelpers.GetComponentsOfType <BeamWeaponAtbDB>(instancesDB.SpecificInstances); beamList.AddRange(EntityStoreHelpers.GetComponentsOfType <SimpleBeamWeaponAtbDB>(instancesDB.SpecificInstances)); //new List<KeyValuePair<Entity, List<Entity>>>(SelectedShip.GetDataBlob<ComponentInstancesDB>().SpecificInstances.Where(item => item.Key.HasDataBlob<BeamWeaponAtbDB>() || item.Key.HasDataBlob<SimpleBeamWeaponAtbDB>()).ToList()); bool isBeamControlled = false; _freeBeamList.Clear(); // Get a list of all beam weapons not currently controlled by a fire control // @todo: make sure you check all fire controls - currently only lists // beams not set to the current fire control foreach (KeyValuePair <Entity, List <Entity> > kvp in beamList) { int beamCount = 0; foreach (Entity instance in kvp.Value) { if (instance.GetDataBlob <WeaponStateDB>().FireControl == null) { _freeBeamList.Add(new KeyValuePair <Entity, string>(instance, kvp.Key.GetDataBlob <NameDB>().DefaultName + " " + ++beamCount)); } } } OnPropertyChanged(nameof(AttachedBeamList)); OnPropertyChanged(nameof(FreeBeamList)); }
public void RefreshOrderList(int a, int b) { if (SelectedShip == null) { return; } List <BaseOrder> orders = new List <BaseOrder>();//(SelectedShip.GetDataBlob<ShipInfoDB>().Orders); _moveOrderList.Clear(); foreach (BaseOrder order in orders) { string orderDescription = ""; switch (order.OrderType) { case orderType.MOVETO: //MoveOrder moveOrder = (MoveOrder)order; orderDescription += "Move to "; //orderDescription += moveOrder.Target.GetDataBlob<NameDB>().GetName(_gameVM.CurrentFaction); break; default: break; } _moveOrderList.Add(order, orderDescription); } OnPropertyChanged(nameof(MoveOrderList)); OnPropertyChanged(nameof(MoveOrdersPossible)); }
public void RefreshOrders(int a, int b) { if (SelectedShip == null) { return; } _moveOrdersPossible.Clear(); //if (SelectedShip.HasDataBlob<PropulsionDB>()) // _moveOrdersPossible.Add(new MoveOrder(), "Move to"); _moveOrdersPossible.SelectedIndex = 0; RefreshOrderList(0, 0); OnPropertyChanged(nameof(SelectedMoveOrder)); OnPropertyChanged(nameof(SelectedPossibleMoveOrder)); OnPropertyChanged(nameof(ShipSpeed)); OnPropertyChanged(nameof(XSpeed)); OnPropertyChanged(nameof(YSpeed)); OnPropertyChanged(nameof(XPos)); OnPropertyChanged(nameof(YPos)); OnPropertyChanged(nameof(MaxSpeed)); return; }
// Updates the list of ships to give orders to and targets when the system changes public void RefreshShips(int a, int b) { if (SelectedSystem == null || _starSystems.SelectedIndex == -1) { return; } _shipList.Clear(); foreach (Entity ship in SelectedSystem.GetAllEntitiesWithDataBlob <ShipInfoDB>(_gameVM.CurrentAuthToken)) { if (ship.HasDataBlob <PropulsionDB>()) { ShipList.Add(ship, ship.GetDataBlob <NameDB>().GetName(_gameVM.CurrentFaction)); } } _shipList.SelectedIndex = 0; //RefreshTarget(0, 0); OnPropertyChanged(nameof(ShipList)); OnPropertyChanged(nameof(MoveTargetList)); OnPropertyChanged(nameof(SelectedShip)); OnPropertyChanged(nameof(SelectedMoveTarget)); return; }
public void RefreshFireControlList(int a, int b) { _fireControlList.Clear(); if (SelectedShip == null) { return; } if (!SelectedShip.HasDataBlob <BeamWeaponsDB>()) { _fireControlList.Clear(); return; } // The component instances all seem to think that their parent entity is Ensuing Calm, regardless of SelectedShip var instanceDB = SelectedShip.GetDataBlob <ComponentInstancesDB>(); List <KeyValuePair <Entity, List <Entity> > > fcList = EntityStoreHelpers.GetComponentsOfType <BeamFireControlAtbDB>(instanceDB.SpecificInstances); //new List<KeyValuePair<Entity, List<Entity>>>(instanceDB.SpecificInstances.ToDictionary().Where(item => item.Key.HasDataBlob<BeamFireControlAtbDB>()).ToList()); foreach (KeyValuePair <Entity, List <Entity> > kvp in fcList) { int fcCount = 0; if (kvp.Key.HasDataBlob <BeamFireControlAtbDB>()) { foreach (Entity instance in kvp.Value) { fcCount++; _fireControlList.Add(instance, kvp.Key.GetDataBlob <NameDB>().DefaultName + fcCount); } } } _fireControlList.SelectedIndex = 0; RefreshBeamWeaponsList(0, 0); // OnPropertyChanged(nameof(FireControlList)); }
public void RefreshTarget(int a, int b) { if (_starSystems.SelectedIndex == -1) //if b is not a valid selection { return; } _moveTargetList.Clear(); _attackTargetList.Clear(); int moveTargetIndex = _moveTargetList.SelectedIndex; int attackTargetIndex = _attackTargetList.SelectedIndex; foreach (Entity target in SelectedSystem.GetAllEntitiesWithDataBlob <PositionDB>(_gameVM.CurrentAuthToken)) { if (target != SelectedShip) { _moveTargetList.Add(target, target.GetDataBlob <NameDB>().GetName(_gameVM.CurrentFaction)); if (target.HasDataBlob <SensorProfileDB>()) { _attackTargetList.Add(target, target.GetDataBlob <NameDB>().GetName(_gameVM.CurrentFaction)); } } } _moveTargetList.SelectedIndex = moveTargetIndex; _attackTargetList.SelectedIndex = attackTargetIndex; if (SelectedPossibleMoveOrder == null) { TargetShown = false; } else if (SelectedPossibleMoveOrder.OrderType == orderType.MOVETO) { TargetShown = true; } else { TargetShown = false; } if (TargetShown) { TargetAreaWidth = 200; } else { TargetAreaWidth = 2; } OnPropertyChanged(nameof(TargetShown)); OnPropertyChanged(nameof(TargetAreaWidth)); }