Exemplo n.º 1
0
        public override void Update(TimeSpan delta, TimeSpan absolute)
        {
            var transform     = GameObject.Transform;
            var isHit         = GameObject.States.HasState(States.IS_HIT);
            var leftDirection = GameObject.States.HasState(States.LEFT_DIR);

            var copterSpeed = GameObjectManager.Get.FindGameObjectBySubType(Subtypes.INFO).FindAtt <float>(GameAttr.COPTERSPEED);
            var hitFrame    = GameObject.FindAtt <int>(GameAttr.HITFRAME);

            // update copter

            int next = rnd.Next(0, 60);

            transform.LocalPos.X += copterSpeed.Value * (leftDirection ? -1 : 1);

            if (isHit && hitFrame.Value++ > 10)
            {
                GameObject.States.ResetState(States.IS_HIT);
                hitFrame.Value = 0;

                var targetLives = GameObject.FindAtt <int>(GameAttr.PPLIVES);
                if (targetLives.Value == 0)
                {
                    SendMessage(new State(Traverses.SCENEROOT, Traverses.CHILD_FIRST), GameActions.GAMEOBJECT_KILLED, GameObject);
                    GameObject.Destroy();
                }
            }

            if (transform.LocalPos.X < -111 || transform.LocalPos.X > 640)
            {
                if (leftDirection)
                {
                    GameObject.States.ResetState(States.LEFT_DIR);
                }
                else
                {
                    GameObject.States.SetState(States.LEFT_DIR);
                }
            }

            if (!isHit && next == 15 && (transform.LocalPos.X <= 280 || transform.LocalPos.X >= 340) && (transform.LocalPos.X > 150 || transform.LocalPos.X < 580))
            {
                GameObject para =
                    new GameBuilder().CreatePara(new Transform(transform.LocalPos.X + 55, transform.LocalPos.Y + 50));

                GameObject.Parent.AddChild(para);
            }
        }
Exemplo n.º 2
0
        private void Shoot(float rotation, float speed, Weapon actualWeapon)
        {
            float canonLength = 37;
            float posX        = (float)(318 + 2 + canonLength * Math.Sin(rotation / 180 * Math.PI));
            float posY        = (float)(223 + (canonLength - canonLength * Math.Cos(rotation / 180 * Math.PI)));

            float velX = (float)Math.Sin(rotation / 180 * Math.PI) / 4;
            float velY = -(float)Math.Cos(rotation / 180 * Math.PI) / 4;

            velX *= speed;
            velY *= speed;

            var bullet = new GameBuilder().CreateBullet(new Transform(posX, posY, rotation, 6),
                                                        new Vector2d(velX, velY), actualWeapon.ImgSource, actualWeapon.IsImmortal);

            GameObject.SceneRoot.AddChild(bullet);
        }