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; }
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); }
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; }