Beispiel #1
0
        public override void PrimarySkill()
        {
            if (PrimarySkillRemainingCooldown > 0)
            {
                return;
            }

            Vector2    direction  = GetHeroToMouseDirection();
            Projectile projectile = new Projectile(CurrentMap);

            projectile.Initialize();
            projectile.Load();
            projectile.Center = Center;
            projectile.Speed  = direction * projectile.StartingSpeed;
            CurrentMap.AddEntity(projectile);

            const int force = 100;

            if (Speed.X > 0 && -direction.X * force > Speed.X || Speed.X < 0 && -direction.X * force < Speed.X || Speed.X * -direction.X <= 0)
            {
                Speed = new Vector2(-direction.X * force, Speed.Y);
            }
            if (Speed.Y > 0 && -direction.Y * force > Speed.Y || Speed.Y < 0 && -direction.Y * force < Speed.Y || Speed.Y * -direction.Y <= 0)
            {
                Speed = new Vector2(Speed.X, -direction.Y * force);
            }

            PrimarySkillRemainingCooldown = PrimarySkillCooldown;
        }
Beispiel #2
0
        private static void Init()
        {
            // Generate map
            CurrentMap = TestGameMap.CreateDungeonMap(100, 100);

            // Entity to test layering
            var testItem = new Entity(Color.White, Color.Transparent, 'i', (2, 2), 1, true, true);

            CurrentMap.AddEntity(testItem);

            Player = new Player(CurrentMap.WalkabilityView.RandomPosition(true));
            CurrentMap.AddEntity(Player);

            MapConsole = new ScrollingConsole(width: CurrentMap.Width, height: CurrentMap.Height,
                                              font: SadConsole.Global.FontDefault,
                                              viewPort: new XnaRect(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT),
                                              initialCells: CurrentMap.RenderingCellData);
            MapConsole.CenterViewPortOnPoint(Player.Position);

            CurrentMap.ConfigureAsRenderer(MapConsole);

            // Set our new console as the main object SadConsole processes, and set up keyboard input
            SadConsole.Global.CurrentScreen = MapConsole;
            SadConsole.Global.FocusedConsoles.Push(Player);
        }
Beispiel #3
0
        public override void MovementSkill()
        {
            if (MovementSkillRemainingCooldown > 0)
            {
                return;
            }

            Vector2 direction = GetHeroToMouseDirection();
            AcceleratingProjectile projectile = new AcceleratingProjectile(CurrentMap);

            projectile.Initialize();
            projectile.Load();
            projectile.Center = new Point(Center.X + (int)(direction.X * 40), Center.Y + (int)(direction.Y * 40));
            projectile.Speed  = direction * projectile.StartingSpeed;
            CurrentMap.AddEntity(projectile);

            const int force             = 700;
            Vector2   newSpeed          = Vector2.Zero;
            bool      needToChangeSpeed = false;

            if (Speed.X > 0 && -direction.X * force > Speed.X || Speed.X < 0 && -direction.X * force < Speed.X || Speed.X * -direction.X <= 0)
            {
                newSpeed          = new Vector2(-direction.X * force, Speed.Y);
                needToChangeSpeed = true;
            }
            if (Speed.Y > 0 && -direction.Y * force > Speed.Y || Speed.Y < 0 && -direction.Y * force < Speed.Y || Speed.Y * -direction.Y <= 0)
            {
                newSpeed          = new Vector2(newSpeed.X, -direction.Y * force);
                needToChangeSpeed = true;
            }
            if (needToChangeSpeed)
            {
                Speed = new Vector2(newSpeed.X, Speed.Y);
                ChangeSpeedSmoothly(newSpeed, 4);
            }

            const int
                shakePower    = 5,
                flickCount    = 2,
                flickDuration = 3;

            CurrentMap.MapCamera.GenerateShake(shakePower, flickCount, flickDuration);

            MovementSkillRemainingCooldown = MovementSkillCooldown;
        }