Ejemplo n.º 1
0
        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);
            }
        }
Ejemplo n.º 2
0
        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;
            }
        }
Ejemplo n.º 3
0
    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);
            }
        }
    }