private void SearchForAnotherRock(MinerShip miner) { _targetAsteroid = Utils.ClosestDistance(OrderPosition.X, OrderPosition.Y, _game.ResourceAsteroids.Where(_ => _.Active && !_.BeingMined && _.SectorId == miner.SectorId && _.IsVisibleToTeam(miner.Team - 1) && _.AvailableResources >= 50)); if (_targetAsteroid != null) { var p = _targetAsteroid.CenterPoint; OrderPosition = new PointF(p.X + Offset.X, p.Y + Offset.Y); OrderSectorId = miner.SectorId; miner.Target = _targetAsteroid; miner.Target.BeingMined = true; if (miner.Team == 1) { SoundEffect.Play(ESounds.vo_miner_intransit); } } else { // No more rocks to mine, done for now... OrderComplete = true; if (miner.Team == 1) { SoundEffect.Play(ESounds.vo_sal_minerpartial); } miner.OrderShip(new DockOrder(_game, miner, true), true); } }
public RefineOrder(StrategyGame game, MinerShip ship, Base baseTarget) : base(game, ship.SectorId) { OrderPen.Color = Color.DarkGoldenrod; // Find the closest friendly station we can refine at _target = baseTarget; if (_target != null) { OrderPosition = _target.CenterPoint; } }
public override void Update(float dt) { base.Update(dt); if(m_ShipLine.Count <= 0) return; if(m_ShipPool.Count >= m_ShipCapacity) m_CurrShipTime = 0.001f; else m_CurrShipTime -= dt; if(m_CurrShipTime <= 0.0f) { m_CurrShipTime = m_BuildCoolDown; if(m_ShipLine.Count > 0 && m_ShipPool.Count < m_ShipCapacity) { ShipQItem qItem = m_ShipLine.Dequeue(); BaseShip newShip = null; if(qItem.ConfigName.EndsWith("carrierconfig.txt", StringComparison.OrdinalIgnoreCase)) newShip = new CarrierShip(); else if(qItem.ConfigName.EndsWith("destroyerconfig.txt", StringComparison.OrdinalIgnoreCase)) newShip = new DestroyerShip(); else if(qItem.ConfigName.EndsWith("fighterconfig.txt", StringComparison.OrdinalIgnoreCase)) newShip = new FighterShip(); else if(qItem.ConfigName.EndsWith("minerconfig.txt", StringComparison.OrdinalIgnoreCase)) newShip = new MinerShip(this); else Debug.LogError("No matching ship type found: " + qItem.ConfigName); newShip.SetPos(Position + qItem.Offset); Globals.WorldView.ShipManager.ShipsList.Add(newShip); m_ShipPool.Add(newShip); } } }