class LevelChange : ZilchComponent { var Level0 : Level = Level.Find("Opening"); var Level1 : Level = Level.Find("Level1"); var Level2 : Level = Level.Find("Level2"); var Level3 : Level = Level.Find("Level3"); var EndScreen : Level = Level.Find("Win"); var DeathScreen : Level = Level.Find("Death"); [Property] var Timer : Real = 5.0; function Initialize(init : CogInitializer) { Zero.Connect(Zero.Keyboard, Events.KeyDown, this.OnKeyDown); Zero.Connect(this.Space, Events.LogicUpdate, this.OnLogicUpdate); } function OnKeyDown(event : KeyboardEvent) { var currentLevel = this.Space.CurrentLevel; if(event.Key == Keys.Enter && currentLevel == this.Level0) { this.LoadLevel1(); currentLevel = this.Space.CurrentLevel; } if(event.Key == Keys.Enter && currentLevel == this.EndScreen) { this.LoadLevel0(); currentLevel = this.Space.CurrentLevel; } } function OnLogicUpdate(event : UpdateEvent) { var currentLevel = this.Space.CurrentLevel; if(currentLevel == this.Level1) { var player = this.Space.FindObjectByName("Player"); var playerPos = player.Transform.Translation; if(this.Space.FindObjectByName("Player") != null) { if(player.Health.CurrentHealth <= 0){ this.LoadDeathScreen(); currentLevel = this.Space.CurrentLevel; } }if(playerPos.X >= 25) { this.LoadLevel2(); currentLevel = this.Space.CurrentLevel; } } if(currentLevel == this.Level2) { var player = this.Space.FindObjectByName("Player"); var playerPos = player.Transform.Translation; if(this.Space.FindObjectByName("Player") != null) { if(player.Health.CurrentHealth <= 0){ this.LoadDeathScreen(); currentLevel = this.Space.CurrentLevel; } }if(playerPos.X >= 50) { this.LoadLevel3(); currentLevel = this.Space.CurrentLevel; } } if(currentLevel == this.Level3) { var player = this.Space.FindObjectByName("Player"); var playerPos = player.Transform.Translation; if(this.Space.FindObjectByName("Enemy") != null) { if(player.Health.CurrentHealth <= 0){ this.LoadDeathScreen(); currentLevel = this.Space.CurrentLevel; } }if(playerPos.X >= 75) { this.LoadLevelEndScreen(); currentLevel = this.Space.CurrentLevel; } } if(this.Space.FindObjectByName("Player") == null && currentLevel != this.Level0 && currentLevel != this.EndScreen && currentLevel != this.DeathScreen ) { this.LoadDeathScreen(); currentLevel = this.Space.CurrentLevel; } if(currentLevel == this.DeathScreen) { this.Timer -= event.Dt; if(this.Timer <= 0) { this.LoadLevel0(); currentLevel = this.Space.CurrentLevel; } } } function LoadLevel0() { this.Space.LoadLevel(this.Level0); } function LoadLevel1() { this.Space.LoadLevel(this.Level1); } function LoadLevel2() { this.Space.LoadLevel(this.Level2); } function LoadLevel3() { this.Space.LoadLevel(this.Level3); } function LoadDeathScreen() { this.Space.LoadLevel(this.DeathScreen); } function LoadLevelEndScreen() { this.Space.LoadLevel(this.EndScreen); } }