示例#1
0
        public void CanAddDrillers()
        {
            Outpost outpost         = new Outpost(new RftVector(_map, 0, 0), new Player(1), OutpostType.Mine);
            int     initialDrillers = outpost.GetDrillerCount();

            outpost.AddDrillers(40);
            Assert.AreEqual(initialDrillers + 40, outpost.GetDrillerCount());
        }
示例#2
0
        public void AddEvent()
        {
            Player  player1 = new Player("1");
            Rft     map     = new Rft(3000, 3000);
            Outpost outpost = new Outpost("0", new RftVector(map, 0, 0), player1, OutpostType.Generator);

            outpost.AddDrillers(10);
            Sub         sub         = new Sub("1", outpost, outpost, new GameTick(), 10, player1);
            CombatEvent arriveEvent = new CombatEvent(sub, outpost, new GameTick());

            game.TimeMachine.AddEvent(arriveEvent);
            Assert.AreEqual(1, game.TimeMachine.GetQueuedEvents().Count);
            Assert.AreEqual(arriveEvent, game.TimeMachine.GetQueuedEvents()[0]);
        }
示例#3
0
        public void AddEvent()
        {
            Player  player1 = new Player(1);
            Rft     map     = new Rft(3000, 3000);
            Outpost outpost = new Outpost(new RftVector(map, 0, 0), player1, OutpostType.Generator);

            outpost.AddDrillers(10);
            Sub         sub         = new Sub(outpost, outpost, new GameTick(), 10, player1);
            CombatEvent arriveEvent = new CombatEvent(sub, outpost, new GameTick(), outpost.GetTargetPosition(sub.GetCurrentPosition(), sub.GetSpeed()));

            Game.TimeMachine.AddEvent(arriveEvent);
            Assert.AreEqual(1, Game.TimeMachine.GetQueuedEvents().Count);
            Assert.AreEqual(arriveEvent, Game.TimeMachine.GetQueuedEvents()[0]);
        }
示例#4
0
        public void Setup()
        {
            _player1 = new Player(1);
            List <Player> players = new List <Player>();

            GameConfiguration config = new GameConfiguration(players);

            Assert.IsNotNull(config);

            _state   = new GameState(config);
            _map     = new Rft(300, 300);
            _outpost = new Outpost(new RftVector(_map, 0, 0), _player1, OutpostType.Generator);
            _outpost.AddDrillers(10);
            _tempSub = new Sub(_outpost, _outpost, new GameTick(), 10, _player1);
        }
示例#5
0
        public void EventsSwitchQueuesWhenPassedForward()
        {
            Player  player1 = new Player(1);
            Rft     map     = new Rft(3000, 3000);
            Outpost outpost = new Outpost(new RftVector(map, 0, 0), player1, OutpostType.Generator);

            outpost.AddDrillers(10);
            Sub         sub         = new Sub(outpost, outpost, new GameTick(), 10, player1);
            CombatEvent arriveEvent = new CombatEvent(sub, outpost, GameTick.FromTickNumber(5), outpost.GetTargetPosition(sub.GetCurrentPosition(), sub.GetSpeed()));

            Game.TimeMachine.AddEvent(arriveEvent);
            Assert.AreEqual(1, Game.TimeMachine.GetQueuedEvents().Count);
            Assert.AreEqual(arriveEvent, Game.TimeMachine.GetQueuedEvents()[0]);

            // Go past the tick
            Game.TimeMachine.Advance(6);
            Assert.AreEqual(0, Game.TimeMachine.GetQueuedEvents().Count);
        }
示例#6
0
        /// <summary>
        /// Forward production event
        /// </summary>
        public override bool ForwardAction()
        {
            if (Validator.ValidateOutpost(_outpost))
            {
                if (this._outpost.GetOwner() != null && this._outpost.GetOutpostType() == OutpostType.Factory &&
                    this._outpost.GetOwner().GetDrillerCount() < this._outpost.GetOwner().GetDrillerCapacity())
                {
                    this._nextEvent = new FactoryProduceDrillersEvent(this._outpost, this._productionTick.Advance(40));
                    Game.TimeMachine.AddEvent(this._nextEvent);
                    int drillerDifference = this._outpost.GetOwner().GetDrillerCapacity() - this._outpost.GetOwner().GetDrillerCount();

                    // If capacity would be exceeded, produce only as much drillers as possible without exceeding capacity
                    if (drillerDifference >= Constants.BASE_FACTORY_PRODUCTION)
                    {
                        _outpost.AddDrillers(Constants.BASE_FACTORY_PRODUCTION);
                    }
                    else
                    {
                        //_outpost.AddDrillers(drillerDifference); // TODO: revert this properly

                        // Temporary solution, Factories produce 6 drillers or nothing.
                        this._eventSuccess = false;
                        return(this._eventSuccess);
                    }

                    _eventSuccess = true;
                }
                else
                {
                    this._eventSuccess = false;
                }
            }
            else
            {
                this._eventSuccess = false;
            }

            return(this._eventSuccess);
        }
示例#7
0
        public void EventsSwitchQueuesWhenRewind()
        {
            Player  player1 = new Player("1");
            Rft     map     = new Rft(3000, 3000);
            Outpost outpost = new Outpost("0", new RftVector(map, 0, 0), player1, OutpostType.Generator);

            outpost.AddDrillers(10);
            Sub         sub         = new Sub("1", outpost, outpost, new GameTick(), 10, player1);
            CombatEvent arriveEvent = new CombatEvent(sub, outpost, new GameTick(5));

            game.TimeMachine.AddEvent(arriveEvent);
            Assert.AreEqual(1, game.TimeMachine.GetQueuedEvents().Count);
            Assert.AreEqual(arriveEvent, game.TimeMachine.GetQueuedEvents()[0]);

            // Go past the tick
            game.TimeMachine.Advance(6);
            Assert.AreEqual(0, game.TimeMachine.GetQueuedEvents().Count);

            // Rewind back
            game.TimeMachine.Rewind(6);
            Assert.AreEqual(1, game.TimeMachine.GetQueuedEvents().Count);
            Assert.AreEqual(arriveEvent, game.TimeMachine.GetQueuedEvents()[0]);
        }
示例#8
0
        /// <summary>
        /// Forward production event
        /// </summary>
        public override bool ForwardAction()
        {
            if (Validator.ValidateOutpost(_outpost))
            {
                if (this._outpost.GetOwner() != null && this._outpost.GetOutpostType() == OutpostType.Factory)
                {
                    this._nextEvent = new FactoryProduceDrillersEvent(this._outpost, this._productionTick.Advance(40));
                    Game.TimeMachine.AddEvent(this._nextEvent);
                    _outpost.AddDrillers(6);
                    _eventSuccess = true;
                }
                else
                {
                    this._eventSuccess = false;
                }
            }
            else
            {
                this._eventSuccess = false;
            }

            return(this._eventSuccess);
        }