Beispiel #1
0
        public override bool Initialize()
        {
            if (!RetrieveSibling(out m_messenger))
            {
                return(false);
            }
            if (!RetrieveSibling(out m_physics))
            {
                return(false);
            }
            if (!RetrieveSibling(out m_state))
            {
                return(false);
            }

            m_rayOrigin = new Vector2(m_state.Dimensions.X, 0);

            m_messenger.AddListener <SensorNewContactMessage>(HandleSensorNewContact);
            m_messenger.AddListener <SensorLostContactMessage>(
                HandleSensorLostContact);
            m_messenger.AddListener <TankKilledMessage>(HandleTankKilledMessage);
            m_eventManager.AddListener <TankKilledEvent>(HandleTankKilledEvent);
            m_physicsManager.PostStep += HandlePostStep;

            SetState(AiState.Search);

            Initialized = true;
            return(true);
        }
        public override bool Initialize()
        {
            if (!RetrieveSibling(out m_state))
            {
                return(false);
            }
            if (!RetrieveSibling(out m_messenger))
            {
                return(false);
            }

            var size = m_state.Dimensions;

            size.Y += m_state.TrackWidth * 2;

            Body = BodyFactory.CreateBody(World, Parent.Id);
            FixtureFactory.AttachRectangle(size.X, size.Y, 1, Vector2.Zero, Body,
                                           Parent.Id);
            Body.BodyType            = BodyType.Dynamic;
            Body.CollisionCategories = PhysicsManager.TankCategory;
            Body.CollidesWith        = Category.All;

            PhysicsManager.PreStep += HandlePreStep;

            m_messenger.AddListener <MoveMessage>(HandleMoveMessage);
            m_messenger.AddListener <TankKilledMessage>(HandleTankKilled);

            Initialized = true;
            return(true);
        }
Beispiel #3
0
        public override bool Initialize()
        {
            if (!RetrieveSibling(out m_messenger))
            {
                return(false);
            }
            if (!RetrieveSibling(out m_state))
            {
                return(false);
            }

            m_body = BodyFactory.CreateBody(m_physicsManager.World, Parent.Id);
            FixtureFactory.AttachCircle(m_state.SensorRadius, 0, m_body, Parent.Id);
            m_body.BodyType = BodyType.Dynamic;
            m_body.IsSensor = true;

            m_body.OnCollision        += HandleSensorCollision;
            m_body.OnSeparation       += HandleSensorSeparation;
            m_physicsManager.PreStep  += HandlePreStep;
            m_physicsManager.PostStep += HandlePostStep;

            m_messenger.AddListener <TankKilledMessage>(HandleTankKilled);

            Initialized = true;
            Enabled     = true;
            return(true);
        }
        public override bool Initialize()
        {
            if (!RetrieveSibling(out m_messenger))
            {
                return(false);
            }
            if (!RetrieveBaseSibling(out m_physics))
            {
                return(false);
            }
            if (!RetrieveSibling(out m_state))
            {
                return(false);
            }

            m_messenger.AddListener <SetTargetMessage>(HandleSetTarget);
            m_messenger.AddListener <ShootingStateMessage>(HandleShootingStateChange);
            m_messenger.AddListener <TankKilledMessage>(HandleTankKilled);

            Initialized = true;
            return(true);
        }