private void Update() { if (projectileNumber <= 0) { if (!lose) { projectileNumber = 0; Time.timeScale = 0; GameOverMenu.Open(); lose = true; } } }
protected override void Die() { if (isLocalPlayer) { if (!GameManager.Singleton.GameFinished) { GameOverMenu.Activate(RespawnTime); } m_playerController.enabled = false; m_aim.CanAim = false; } base.Die(); }
private void GameOverMenuCall() { Console.Clear(); GameOverMenu gameOverMenu = new GameOverMenu(X, Y, Width, Height); gameOverMenu.TitleMenu.Label = $"Game over. Best score {player.GetPlayerScore}"; gameOverMenu.OnMenuLeave += (sender, args) => { OnMenuLeave?.Invoke(gameOverMenu, args); }; gameOverMenu.Show(); }
protected override void Respawn(Vector2Int respawnPoint) { if (isLocalPlayer) { GameOverMenu.Deactivate(); // Activate player controller if the escape menu is not activated if (!EscapeMenu.IsActive()) { m_playerController.enabled = true; } m_aim.CanAim = true; } base.Respawn(respawnPoint); }
IEnumerator WaitGameOver(GameObject GameOverScreen, GameOverMenu gameOverMenu) { AnalyticsEvent.GameOver(); Coroutine req = StartCoroutine(GetRequest("https://tagbull-prod.appspot.com/activities/available")); yield return(new WaitForSeconds(0.5f)); GameOverScreen.SetActive(true); yield return(new WaitForSeconds(1.5f)); yield return(req); gameOverMenu.ShowButtons(tagbullActivitiesAvailable, gameState.showUnityAds); }
public override void Draw(GameTime gameTime) { if (Game1.CurrentGameState == GameState.GameOver) { SpriteBatch spriteBatch = Game.Services.GetService(typeof(SpriteBatch)) as SpriteBatch; spriteBatch.Begin(); spriteBatch.Draw(texture2D, position, texture2D.Bounds, Color.White, 0, new Vector2(texture2D.Bounds.Width / 2, texture2D.Bounds.Height / 2), 1, 0, 0); spriteBatch.End(); GameOverMenu.Draw(spriteBatch); } base.Draw(gameTime); }
public GameOverWorld(GameStateAgent agent) : base(agent) { MusicManager.Instance.PlayGameOverMusic(); _screen = new GameOverMenu(agent); _controllerKeyboard = new GameOverControllerKeyboard(agent, _screen); _updatables = new IUpdatable[] { new QuitResetControllerKeyboard(agent), StateAgent.Player, this }; _cameraDrawables = new IDrawable[] { StateAgent.Player }; }
private void InitializeGameObjects() { // // Arena // m_Arena = new Arena("Arena", new SFML.System.Vector2f(Settings.Scale, Settings.Scale)); m_Arena.Parent = this; //m_Arena.ArenaScale = new SFML.System.Vector2f(2f, 2f); // // PlayerController // m_PlayerController = new PlayerController("PlayerController", m_Arena); m_PlayerController.Parent = this; // // GameMenu // m_GameMenu = new GameMenu("GameMenu", Application.Game.Window, m_PlayerController, m_Arena); m_GameMenu.SetLayer(9998); m_GameMenu.Parent = this; // // PauseMenu // m_PauseMenu = new PauseMenu("PauseMenu", Application.Game.Window, this); m_PauseMenu.SetLayer(9999); m_PauseMenu.Parent = this; m_PauseMenu.IsVisible = false; m_PauseMenu.IsUpdateDisabled = true; // // GameOverMenu // m_GameOverMenu = new GameOverMenu("GameOverMenu", Application.Game.Window, this); m_GameOverMenu.SetLayer(9999); m_GameOverMenu.Parent = this; m_GameOverMenu.IsVisible = false; m_GameOverMenu.IsUpdateDisabled = true; // // Add all gameobjects to the scene // AddGameObject(m_Arena); AddGameObject(m_PlayerController); AddGameObject(m_GameMenu); AddGameObject(m_PauseMenu); AddGameObject(m_GameOverMenu); }
void OnDeath() { if (!gameCanEnd) { return; } Pause(); GameOverMenu gameOver = Instantiate(gameOverMenuPrefab, canvas.transform); eventSystem.SetSelectedGameObject(gameOver.GetComponentInChildren <Button>().gameObject); gameOver.Lost(); }
public void OnWin() { Pause(); if (!gameCanEnd) { Restart(); } GameOverMenu gameOver = Instantiate(gameOverMenuPrefab, canvas.transform); eventSystem.SetSelectedGameObject(gameOver.GetComponentInChildren <Button>().gameObject); gameOver.Won(); }
private new void FixedUpdate() { if (!isLocalPlayer) { return; } base.FixedUpdate(); Cursor.visible = GameOverMenu.IsActive() || EscapeMenu.IsActive(); m_hud.UpdateHUD(); if (GameManager.Singleton.GameFinished && GameOverMenu.IsActive()) { GameOverMenu.Deactivate(); } }
IEnumerator GameOverRoutine() { if (gameOverFx) { gameOverFx.Play(); } yield return(new WaitForSeconds(0.3f)); // turn on the Game Over Panel //if (gameOverPanel) //{ // gameOverPanel.SetActive(true); //} GameOverMenu.Open(); }
// Use this for initialization void Start() { _mainMenu = gameObject.FindComponentInChildren <MainMenu>(true); _optionsMenu = gameObject.FindComponentInChildren <OptionsMenu>(true); _gameMenu = gameObject.FindComponentInChildren <GameMenu>(true); _pauseMenu = gameObject.FindComponentInChildren <PauseMenu>(true); _gameOverMenu = gameObject.FindComponentInChildren <GameOverMenu>(true); _shareMenu = gameObject.FindComponentInChildren <ShareMenu>(true); _levelSelectMenu = gameObject.FindComponentInChildren <LevelSelectMenu>(true); _aboutMenu = gameObject.FindComponentInChildren <AboutMenu>(true); HideAllMenus(); currentMenu = CrossSceneMenuInfo.use.nextMenuOnReload; ShowMenu(currentMenu); }
// Use this for initialization void Start() { timerController = GetComponent <SurvivalModeTimerController>(); soundController = GetComponent <SoundController>(); centerItem = GetComponentInChildren <CenterItem>(); clickableObjects = GetComponentsInChildren <SurvivalModeClickableItem>(); gameOverMenu = GetComponentInChildren <GameOverMenu>(); soundTrackController = GetComponentInChildren <SoundTrackController>(); survivalScoreSavingController = GetComponent <SurvivalScoreSavingController>(); //highscore = PlayerPrefs.GetInt("HighScore"); soundTrackController.startSoundtrack(); }
public override void OnInspectorGUI() { serializedObject.Update(); GameOverMenu myScript = (GameOverMenu)target; EditorGUILayout.ObjectField("Score Child", myScript.Score, typeof(Text), false); if (GUILayout.Button("Get Components & Prefabs")) { var scoreChieldField = serializedObject.FindProperty("scoreChild"); var scoreChild = myScript.gameObject.GetComponentInChildren <Text>(); scoreChieldField.objectReferenceValue = scoreChild; } serializedObject.ApplyModifiedProperties(); }
public MenuReturnType RunGame() { Render(); bool needToContinue = true; int CurrentPlayerIndex = 0; do { while (Console.KeyAvailable) { ConsoleKeyInfo pressedChar = Console.ReadKey(true); if (pressedChar.Key == ConsoleKey.Escape) { needToContinue = false; } } Recalculate(CurrentPlayerIndex); CurrentPlayerIndex++; //System.Threading.Thread.Sleep(250); } while (needToContinue && CurrentPlayerIndex < Players.Count); StatusLabel.Label = "Game finished. Press any key to continue..."; StatusLabel.Render(); Console.ReadKey(); Console.Clear(); int MaxScoresValue = Players.Max(p => p.Scores); var Winners = from p in Players where p.Scores == MaxScoresValue select new { Name = p.GetPlayerName(), Score = p.Scores }; foreach (var item in Winners) { Winner = Winner + " " + item.Name + " with " + item.Score + " scores;"; } GameOverMenu gameOverMenu = new GameOverMenu(App.ScreenX, App.ScreenY, App.ScreenWidth - 1, App.ScreenY - 1, Winner); //gameOverMenu.Render(); MenuReturnType menu = gameOverMenu.SelectedMenu(); //Console.ReadKey(); return(menu); }
void OnSceneLoaded(Scene scene, LoadSceneMode mode) { if (scene.buildIndex == Constants.SCENE_INDEX_GAME) { // Since the Game Manager is loaded on the main menu, and the awake is called only once, we look for the managers when we enter in the game scene, and generate the map if (!mapGenerator) { mapGenerator = FindObjectOfType <MapGenerator>(); } if (!gameOverUI) { gameOverUI = FindObjectOfType <GameOverMenu>(); } mapGenerator.GenerateMap(); } }
public GameMain() { graphics = new GraphicsDeviceManager(this); room = new Room(800, 480, mediator); Mediator.Game = this; Content.RootDirectory = "Content"; mediator = new Mediator(allObjects, itemsToBeAdded, itemsToBeDeleted, player, room, gameState); room.mediator = mediator; room.initRandomLevel(); itemsToBeAdded.Add(player); player.mediator = mediator; allObjects.Add(new HUD(800, 100, mediator)); startMenu = new StartMenu(800, 580, mediator, gameTime); gameOverMenu = new GameOverMenu(800, 580, mediator, gameTime); mediator.gameOverMenu = gameOverMenu; graphics.PreferredBackBufferHeight = 580; graphics.ApplyChanges(); }
/// <summary> /// Alls menu controls /// </summary> /// <param name="menu"></param> /// <param name="op"></param> private void MainMenu_OnMenuLeave(Menu menu, MenuOperations op) { Console.Clear(); Render(); switch (op) { case MenuOperations.GotoMainMenu: mainMenu.Show(); break; case MenuOperations.Play: gameController = new GameController(X, Y, Width, Height); gameController.OnMenuLeave += MainMenu_OnMenuLeave; gameController.StartGame(); break; case MenuOperations.Replay: Console.Clear(); //start game gameController.ResetGame(); //TODO: start again game break; case MenuOperations.GotoGameOverMenu: if (gameOverMenu == null) { gameOverMenu = new GameOverMenu(X, Y, Width, Height); gameOverMenu.OnMenuLeave += MainMenu_OnMenuLeave; } gameOverMenu.Show(); break; case MenuOperations.Quit: Console.Clear(); Environment.Exit(0); break; default: break; } }
void Awake() { if (instance == null) { instance = this; DontDestroyOnLoad(gameObject); } else { Destroy(gameObject); } gameover = GetComponent<GameOverMenu>(); fader = GetComponent<Fader>(); gman = GetComponent<GUIManager>(); pauseScreen = GetComponent<PauseScreen>(); bgmm = GetComponent<BGMManager>(); semm = GetComponent<SEManager>(); GameObject storyController = GameObject.FindGameObjectWithTag(Tags.storyController); if (storyController != null) { storysemm = storyController.GetComponent<SEManager>(); } paused = false; }
void Start() { // activate weapon activatedWeaponIdx = 0; EnableActivatedWeapon(); // init gates GameObjects GameObject gateParent = transform.Find("gate").gameObject; gateOpen = gateParent.transform.Find("gate_open").gameObject; gateClosed = gateParent.transform.Find("gate_closed").gameObject; setGateOpen(false); //init UI elements healthbar = GameObject.Find(string.Format("HealthBar{0}", playerNumber)).GetComponent <HealthBar>(); healthbar.SetHealth(this.healthPoints); manabar = GameObject.Find(string.Format("ManaBar{0}", playerNumber)).GetComponent <ManaBar>(); manabar.SetMana(0); gameover = GameObject.Find("Canvas").GetComponent <GameOverMenu>(); // spawn first soldiers numOfDeadSoldiers = 0; for (int i = 0; i < maxNumOfSoldiers; i++) { StartCoroutine(instantiateSoldierEnumerator((i + 1) * delayBeforeInstantiating)); } // set manaAmount amount to 0 manaAmount = 0; // get a shuffled holes transforms stack Transform[] holes = new Transform[holesParentTransform.childCount]; for (int i = 0; i < holes.Length; i++) { holes[i] = holesParentTransform.GetChild(i); } Array.Sort(holes, (i_Transform, i_Transform1) => Random.Range(-2, 1)); holesTransformsStack = new Stack <Transform>(holes); }
public void SetGameOver(Player[] loser) { GameObject instanted = gameOverFreezeMenu.EnableMenuWithPause(true); GameOverMenu menu = instanted.GetComponent <GameOverMenu>(); TimerController.Instance.StopAllCoroutines(); if (loser.Length > 1) { Player morePointsPlayer = loser.Aggregate((x, y) => x.Points > y.Points ? x : y); if (morePointsPlayer == GetOtherPlayer(morePointsPlayer)) { menu.WinInformation.text = "Draw! Both players had the same number of points."; return; } menu.WinInformation.text = $"Draw! The more points had <b>{morePointsPlayer.Nickname}</b> player."; return; } // Team team = GetOtherPlayer(loser[0]).CurrentTeam; // string k = team == Team.Black ? "#1F1F1F" : "#C2C2C2"; menu.WinInformation.text = $"<b>{GetOtherPlayer(loser[0]).Nickname}</b> as {GetOtherPlayer(loser[0]).CurrentTeam} team wins!"; }
// Called when player is dead public void GameOver() { int hiscore = PlayerPrefs.GetInt("hiscore", 0); if (score > hiscore) { // Save the new hiscore PlayerPrefs.SetInt("hiscore", score); newHiscoreText.enabled = true; gameOverHiscoreText.enabled = false; StartCoroutine(updateHiscore(score)); } else if (hiscore == 0) { newHiscoreText.enabled = false; gameOverHiscoreText.enabled = false; } else { newHiscoreText.enabled = false; gameOverHiscoreText.enabled = true; gameOverHiscoreText.text = "HIGH SCORE: " + hiscore; } gameOverScoreText.text = "SCORE: " + score; // Destroy player player.KillPlayer(); // Stop background music and play "game over" audio audioController.GameOver(); // Switch UI HUD.SetActive(false); GameOverMenu.SetActive(true); isGamePaused = true; }
/// <summary> /// LoadContent will be called once per game and is the place to load /// all of your content. /// </summary> protected override void LoadContent() { SpriteBatch = new SpriteBatch(GraphicsDevice); Player = new Player(new Vector2(EntityWidth * (float)PlayerStartColumn, EntityHeight * (float)(PlayerStartRow + 1))); m_DebugText = Content.Load <SpriteFont>("Fonts/Joystix_12"); MapManager.LoadMaps(); //Maps must be loaded before levels - H.E. LevelManager.LoadLevels(); MainMenu.LoadContent(); LevelTransition.LoadContent(); HUD.LoadContent(); GameOverMenu.LoadContent(); GameWinMenu.LoadContent(); LevelTransition.LoadContent(); Leaderboard.LoadContent(); GetLeaderBoardResultsAsync(); m_DebugPixel = new Texture2D(GraphicsDevice, 1, 1, false, SurfaceFormat.Color); m_DebugPixel.SetData(new[] { Color.White }); ScanLines = Content.Load <Texture2D>("UI/ScanLines"); Border = Content.Load <Texture2D>("UI/Border"); MenuMusic = Content.Load <SoundEffect>("Sounds/Menu"); GameMusic = Content.Load <SoundEffect>("Sounds/Main"); //Sounds/Last_slice_hiphop }
private void OnStateChange() { if (CurrentMusicInstance != null) { if (!(NextGameState == GameState.Menu && GameState == GameState.Menu)) { CurrentMusicInstance.Stop(); } else if (CurrentMusicInstance.State == SoundState.Paused) { CurrentMusicInstance.Play(); } } if (NextGameState == GameState.GameOver) //Answer me Snake...Snake?! SNAKEEEEEEE!!!" { if (GameOverMenu.GameOverReason == GameOverReason.Win) { CurrentScreen = GameWinMenu; GameWinMenu.LastPlayerScore = Player.Score; } else { CurrentScreen = GameOverMenu; GameOverMenu.Awake(); } GameState = GameState.Menu; Player.OnGameOver(); LevelManager.OnGameOver(); NextGameState = GameState.None; CurrentMusicInstance = MenuMusic.CreateInstance(); CurrentMusicInstance.IsLooped = true; CurrentMusicInstance.Play(); } else { if (NextGameState == GameState.Menu) { switch (NextUIType) { case UIType.MainMenu: { CurrentScreen = MainMenu; break; } case UIType.LevelTransition: { LevelTransition.ResetState(); CurrentScreen = LevelTransition; break; } case UIType.GameOver: { CurrentScreen = GameOverMenu; break; } case UIType.Leaderboard: { CurrentScreen = Leaderboard; break; } default: { break; } } } else if (NextGameState == GameState.Game) { LevelManager.NextLevel(); } else if (NextGameState == GameState.NewGame) { NewGame(); } if (NextGameState == GameState.Game) { CurrentMusicInstance = GameMusic.CreateInstance(); CurrentMusicInstance.IsLooped = true; } else if (CurrentMusicInstance == null || (GameState == GameState.Menu && CurrentScreen != LevelTransition && !(NextGameState == GameState.Menu && GameState == GameState.Menu))) { CurrentMusicInstance = MenuMusic.CreateInstance(); CurrentMusicInstance.IsLooped = true; CurrentMusicInstance.Play(); } GameState = NextGameState; } NextGameState = GameState.None; NextUIType = UIType.None; }
// Start is called before the first frame update private void Start() { m_gameOverMenu = GameObject.FindObjectOfType <GameOverMenu>(); }
public override void Update(GameTime gameTime) { GameOverMenu.Update(); base.Update(gameTime); }
protected override void LoadContent() { texture2D = Game.Content.Load <Texture2D>("GameOver/GameOver"); GameOverMenu.LoadContent(Game.Content); base.LoadContent(); }
void Awake() { instance = this; colliders = GetComponentsInChildren <Collider> (); }
// Use this for initialization void Start() { pauseMenu = GetComponent <PauseMenu>(); goMenu = GameObject.Find("GameOverCanvas").GetComponent <GameOverMenu>(); resumeSet = false; }
//--------------------------------------- END CHANGE LEVEL --------------------------------------- public void setManager() { if ((level == 0 || level == 1) && gameObject) { DestroyImmediate(gameObject); } canChangeLevel = true; jellyFish = GameObject.FindWithTag ("Player"); rScore = (GameObject.FindGameObjectWithTag ("RedScore")).GetComponent<RedScore> ()as RedScore; bScore = (GameObject.FindGameObjectWithTag ("BlueScore")).GetComponent<BlueScore> ()as BlueScore; yScore = (GameObject.FindGameObjectWithTag ("YellowScore")).GetComponent<YellowScore> ()as YellowScore; lightVisible = jellyFish.GetComponentsInChildren<Light> (false) as Light[]; lightRange = lightVisible[0].range; jellyfishLight = jellyFish.GetComponentInChildren<lightPulse> () as lightPulse; jellyfishColorManager = jellyFish.GetComponent<ColorManager> () as ColorManager; jellyfishLight.updateJellyfishLightColor (currentLightColor); jellyfishColorManager.updateColorJellyfish (currentColor); mainCamera = Camera.main; lightImpulse = false; barrier = false; flash = false; lightImpulseCamera = false; oldSizeCamera = mainCamera.orthographicSize; anImpulse = (GameObject.FindGameObjectWithTag ("impulse")).GetComponent<Animator> () as Animator; anWarning = (GameObject.FindGameObjectWithTag ("warning")).GetComponent<Animator>() as Animator; anBarrier = (GameObject.FindGameObjectWithTag ("barrier")).GetComponent<Animator> () as Animator; anFlash = (GameObject.FindGameObjectWithTag ("flash")).GetComponent<Animator> () as Animator; anRedTimer = (GameObject.FindGameObjectWithTag ("redTimer")).GetComponent<Animator> () as Animator; anBlueTimer = (GameObject.FindGameObjectWithTag ("blueTimer")).GetComponent<Animator> () as Animator; anYellowTimer = (GameObject.FindGameObjectWithTag ("yellowTimer")).GetComponent<Animator> () as Animator; anLoading = (GameObject.Find ("Loading")).GetComponent<Animator>() as Animator; barrierCollider = (GameObject.FindGameObjectWithTag ("barrier")).GetComponent<CircleCollider2D> () as CircleCollider2D; tutorialText = GameObject.Find ("TutorialText").GetComponent<Text> () as Text; anTutorial = GameObject.Find ("TutorialText").GetComponent<Animator> () as Animator; gameOver = (GameObject.Find ("Controller")).GetComponent<GameOverMenu> () as GameOverMenu; barrierAudio = GameObject.FindGameObjectWithTag ("barrier").GetComponent<AudioSource> () as AudioSource; impulseAudio = GameObject.FindGameObjectWithTag ("impulse").GetComponent<AudioSource> () as AudioSource; flashAudio = GameObject.FindGameObjectWithTag ("flash").GetComponent<AudioSource> () as AudioSource; if (unlockBarrier) { anBlueTimer.SetTrigger("barrierUnlocked"); } if (unlockFlash) { anYellowTimer.SetTrigger("flashUnlocked"); } if (unlockImpulse) { anRedTimer.SetTrigger("impulseUnlocked"); } tryBlue = 0; tryRed = 0; tryYellow = 0; if (level != 1) anLoading.SetTrigger ("stopLoading"); if (level == 2) { StartCoroutine(initTutorial()); } }
//Revision: 3636 //Author: zproxy //Date: 22. aprill 2012. a. 11:16:53 //Message: //---- //Added : /examples/java/OutRun4KTemplate //Added : /examples/java/OutRun4KTemplate/OutRun4KTemplate // http://www.digitalinsane.com/archives/2007/01/21/space_invaders/ public SpaceInvaders() { ImageResources gfx = "http://server/"; var overlay = new Overlay(); overlay.BackgroundColor = Color.Black; overlay.MaximumOpacity = 1; overlay.ControlInBack.style.zIndex = 100000; overlay.ControlInFront.style.zIndex = 100001; var view = overlay.ControlInFront; view.style.textAlign = IStyle.TextAlignEnum.center; view.style.SetSize(480, 480); view.style.backgroundColor = Color.Green; view.style.color = Color.White; view.style.fontFamily = IStyle.FontFamilyEnum.Fixedsys; //Native.Document.body.appendChild( // new IHTMLElement(IHTMLElement.HTMLElementEnum.center, // view) // ); //Native.Document.body.style.backgroundColor = Color.Black; // Native.Document.body.style.overflow = IStyle.OverflowEnum.hidden; System.Func<IHTMLDiv> CreateCanvas = delegate { var c = new IHTMLDiv(); c.style.overflow = IStyle.OverflowEnum.hidden; c.style.SetLocation(1, 1, 478, 478); return c; }; view.style.position = IStyle.PositionEnum.relative; var canvas = CreateCanvas(); var menu = CreateCanvas(); canvas.style.backgroundColor = Color.Black; view.appendChild(canvas, menu); var msg_loading = new IHTMLDiv("loading..."); msg_loading.style.color = Color.Green; menu.appendChild(msg_loading); // at this point we want our images overlay.Visible = true; ScriptCoreLib.JavaScript.Runtime.Timer.DoAsync(overlay.UpdateLocation); // now wait while all images are loaded/complete ((fbool)(() => !gfx.IsComplete)).Trigger( delegate { // loading images is done now. // build the scoreboard var MyEnemyDirectory = new EnemyDirectory(gfx); var board = new ScoreBoard(gfx); board.Control.style.SetLocation(8, 8, 464, 64); canvas.appendChild(board.Control); board.Lives = 2; board.Score = 450; // now we can see lives and score. // ie does not issue keypress for control keys. // scriptcorelib should filter firefox events... // lets show main menu var mmenu = new MainMenu(MyEnemyDirectory, gfx); var gameovermenu = new GameOverMenu(); menu.appendChild(mmenu.Control, gameovermenu.Control); gameovermenu.Visible = false; gameovermenu.Control.style.SetLocation(0, 100, 468, 468 - 100); mmenu.Control.style.SetLocation(0, 64, 468, 468 - 64); mmenu.Visible = true; var Enemy_Ammo = new AmmoInfo { Color = Color.White, Speed = 8 }; var Player = (IHTMLImage)gfx.biggun.Clone(); var Player_Ammo = new AmmoInfo { Color = Color.Green, Speed = -8 }; var Map_Top = 64; var Map_Left = 20; var Map_Right = 450; var Map_Bottom = 470; var Map_Rect = new Rectangle(); Map_Rect.Top = Map_Top; Map_Rect.Left = Map_Left; Map_Rect.Right = Map_Right; Map_Rect.Bottom = Map_Bottom; var Player_Y = 460; var Player_X = 200; var Player_X_step = 8; Action<int> UpdatePlayer = delegate(int v) { Player_X += v; if (Player_X < Map_Left) Player_X = Map_Left; if (Player_X > Map_Right) Player_X = Map_Right; Player.SetCenteredLocation(Player_X, Player_Y); Player.style.position = IStyle.PositionEnum.absolute; }; Player.Hide(); canvas.appendChild(Player, Player_Ammo.Control, Enemy_Ammo.Control); AmmoInfo[] KnownAmmo = new[] { Player_Ammo, Enemy_Ammo }; var KnownConcrete = new List<Concrete>(); var ConcreteTop = 432; KnownConcrete.AddRange(Concrete.BuildAt(new Point(62 + 120 * 0, ConcreteTop))); KnownConcrete.AddRange(Concrete.BuildAt(new Point(62 + 120 * 1, ConcreteTop))); KnownConcrete.AddRange(Concrete.BuildAt(new Point(62 + 120 * 2, ConcreteTop))); KnownConcrete.AddRange(Concrete.BuildAt(new Point(62 + 120 * 3, ConcreteTop))); foreach (Concrete v in KnownConcrete.ToArray()) { canvas.appendChild(v.Control); } var UFO = new EnemyUnit(MyEnemyDirectory.UFO); var UFO_Direction = 1; UFO.Visible = false; canvas.appendChild(UFO.Control); var EnemyTop = 128; var EnemySpacing = 32; var EnemyCount = 9; var KnownEnemies = new List<EnemyUnit>(); KnownEnemies.AddRange(EnemyUnit.Build(MyEnemyDirectory.A, 20, EnemyTop + 0 * EnemySpacing, EnemyCount, EnemySpacing)); KnownEnemies.AddRange(EnemyUnit.Build(MyEnemyDirectory.B, 20, EnemyTop + 1 * EnemySpacing, EnemyCount, EnemySpacing)); KnownEnemies.AddRange(EnemyUnit.Build(MyEnemyDirectory.B, 20, EnemyTop + 2 * EnemySpacing, EnemyCount, EnemySpacing)); KnownEnemies.AddRange(EnemyUnit.Build(MyEnemyDirectory.C, 20, EnemyTop + 3 * EnemySpacing, EnemyCount, EnemySpacing)); KnownEnemies.AddRange(EnemyUnit.Build(MyEnemyDirectory.C, 20, EnemyTop + 4 * EnemySpacing, EnemyCount, EnemySpacing)); foreach (EnemyUnit v in KnownEnemies.ToArray()) { canvas.appendChild(v.Control); } var HitDamage = 40; var GameTimer = new ScriptCoreLib.JavaScript.Runtime.Timer(); int GangDirection = 1; Action<string> EndGame = delegate { gameovermenu.Visible = true; GameTimer.Stop(); }; #region DoAmmoDamage Func<AmmoInfo, bool> DoAmmoDamage = delegate(AmmoInfo a) { bool hit = false; #region did we hit ufo? if (UFO.Visible) { if (UFO.Bounds.Contains(a.Location)) { board.Score += UFO.Info.Points; UFO.Visible = false; hit = true; } } #endregion #region did we hit player if (Player.Bounds.Contains(a.Location)) { board.Lives--; hit = true; if (board.Lives < 1) { EndGame("Ship destroied"); } } #endregion foreach (Concrete v in KnownConcrete.ToArray()) { if (v.Visible) { if (v.Bounds.Contains(a.Location)) { v.Health -= HitDamage; if (v.Health > 0) { hit = true; } else { v.Visible = false; } } } } foreach (EnemyUnit v in KnownEnemies.ToArray()) { if (v.Visible) { if (v.Bounds.Contains(a.Location)) { v.Visible = false; hit = true; new SpaceInvadersTemplate.HTML.Audio.FromAssets.invaderexplode().play(); board.Score += v.Info.Points; } } } return hit; }; #endregion var MyRandom = new System.Random(); var mothershiploop = new SpaceInvadersTemplate.HTML.Audio.FromAssets.mothershiploopx { loop = true }; var duh = new IHTMLAudio[] { new SpaceInvadersTemplate.HTML.Audio.FromAssets.duh0(), new SpaceInvadersTemplate.HTML.Audio.FromAssets.duh1(), new SpaceInvadersTemplate.HTML.Audio.FromAssets.duh2(), new SpaceInvadersTemplate.HTML.Audio.FromAssets.duh3(), }; var duh_cycle = duh.ToCyclicAction(a => a.play()); #region EnemyAction Action EnemyAction = delegate { #region create ufo if (!UFO.Visible) { if (MyRandom.NextDouble() < 0.1) { Console.WriteLine("UFO!"); mothershiploop.play(); if (MyRandom.NextDouble() > 0.5) { UFO_Direction = 1; UFO.MoveTo(0, EnemyTop - UFO.Control.height * 2); } else { UFO_Direction = -1; UFO.MoveTo(478, EnemyTop - UFO.Control.height * 2); } UFO.Visible = true; } } #endregion var ev = Enumerable.Where(KnownEnemies.ToArray(), i => i.Visible); if (!Enemy_Ammo.Visible) { var ei = (int)System.Math.Round(MyRandom.NextDouble() * Enumerable.Count(ev)); EnemyUnit et = Enumerable.ElementAt(ev, ei); if (et == null) System.Console.WriteLine("element at " + ei + " not found"); else { int ey = Enumerable.Max( from i in ev where i.X == et.X select i.Y // Enumerable.Select(Enumerable.Where(ev, i => i.X == et.X), i => i.Y) ); Enemy_Ammo.MoveTo(et.X, ey + 20); Enemy_Ammo.Visible = true; } } #region MoveAll Action<Point> MoveAll = delegate(Point to) { var ConcreteReached = false; foreach (EnemyUnit v in ev) { var vy = v.Y + to.Y; if (vy > ConcreteTop) { ConcreteReached = true; } v.MoveTo(v.X + to.X, vy); } if (ConcreteReached) { EndGame("The walls have been breached."); } }; #endregion Action MoveAllDown = delegate { MoveAll(new Point(0, 8)); }; duh_cycle(); #region move the gang if (GangDirection > 0) { int ex_max = Enumerable.Max(Enumerable.Select(ev, i => i.X)); // gang goes right if (ex_max >= Map_Rect.Right) { GangDirection = -1; MoveAllDown(); } else { MoveAll(new Point(4, 0)); } } else { int ex_min = Enumerable.Min(Enumerable.Select(ev, i => i.X)); // gang goes left if (ex_min <= Map_Rect.Left) { GangDirection = 1; MoveAllDown(); } else { MoveAll(new Point(-4, 0)); } } #endregion }; #endregion bool GamePaused = false; GameTimer.Tick += delegate { #region only blink while paused if (GamePaused) { if (GameTimer.Counter % 15 == 0) { Player.ToggleVisible(); } return; } #endregion Player.Show(); #region move ufo if (UFO.Visible) { if (UFO_Direction > 0) { UFO.MoveTo(UFO.X + 4, UFO.Y); if (UFO.X > 478 + UFO.Control.width) { UFO.Visible = false; mothershiploop.pause(); } } else { UFO.MoveTo(UFO.X - 4, UFO.Y); if (UFO.X < -UFO.Control.width) { UFO.Visible = false; mothershiploop.pause(); } } } #endregion #region do ammo stuff foreach (AmmoInfo v in KnownAmmo) { if (v.Visible) { var y = v.Y + v.Speed; if (Map_Rect.Contains(new Point(v.X, y))) { // did we hit? if (DoAmmoDamage(v)) { v.Visible = false; } else { v.MoveTo(v.X, y); } } else { v.Visible = false; } } } #endregion var AliveEnemies = Enumerable.Where(KnownEnemies.ToArray(), i => i.Visible); var AliveCount = Enumerable.Count(AliveEnemies); if (AliveCount == 0) { EndGame("Aliens destoried"); return; } if (GameTimer.Counter % (AliveCount / 2) == 0) { EnemyAction(); } }; #region ResetGame Action ResetGame = delegate { mmenu.Visible = false; Player_X = 220; board.Score = 0; board.Lives = 3; Player.Show(); foreach (Concrete v in KnownConcrete.ToArray()) { v.Health = 255; v.Visible = true; } foreach (EnemyUnit v in KnownEnemies.ToArray()) { v.ResetPosition(); v.Visible = true; } EnemyAction(); GameTimer.StartInterval(50); UpdatePlayer(0); }; #endregion Action EgoShoot = delegate { if (!Player_Ammo.Visible) { Player_Ammo.MoveTo(Player_X, Player_Y - 20); new SpaceInvadersTemplate.HTML.Audio.FromAssets.firemissile().play(); Player_Ammo.Visible = true; } }; overlay.ControlInBack.onclick += delegate { if (mmenu.Visible) ResetGame(); else EgoShoot(); }; double gamma = 0; //Native.window.ondeviceorientation += // eventData => // { // if (eventData.gamma < -50) // gamma = eventData.beta; // else // gamma = eventData.gamma; // }; new ScriptCoreLib.JavaScript.Runtime.Timer( t => { // gamma is the left-to-right tilt in degrees, where right is positive if (gamma < -15) { if (mmenu.Visible) ResetGame(); else UpdatePlayer(-Player_X_step); } if (gamma > 15) { if (mmenu.Visible) ResetGame(); else UpdatePlayer(Player_X_step); } } ).StartInterval(100); Native.Document.onkeydown += delegate(IEvent ev) { Console.WriteLine(new { ev.KeyCode }.ToString()); if (mmenu.Visible) { if (ev.IsReturn) { ResetGame(); } return; } else { if (ev.IsEscape) { GameTimer.Stop(); Player.Hide(); mmenu.Visible = true; foreach (AmmoInfo v in KnownAmmo) { v.Visible = false; } foreach (Concrete v in KnownConcrete.ToArray()) { v.Visible = false; } foreach (EnemyUnit v in KnownEnemies.ToArray()) { v.Visible = false; } UFO.Visible = false; gameovermenu.Visible = false; // the animated gifs would stop after escape key ev.preventDefault(); GamePaused = false; } } int key_p = 80; if (ev.KeyCode == key_p) { GamePaused = !GamePaused; } // player shouldn't really move while game is paused // its cheating:) if (GamePaused) return; int key_right = 39; int key_left = 37; if (ev.KeyCode == key_left) { UpdatePlayer(-Player_X_step); } else if (ev.KeyCode == key_right) { UpdatePlayer(Player_X_step); } else if (ev.IsSpaceOrEnterKey()) { // the animated gifs would stop after escape key ev.preventDefault(); EgoShoot(); } else { Console.WriteLine(new { UnknownKeyCode = ev.KeyCode }.ToString()); } }; msg_loading.Orphanize(); } , 50); }
private void Awake() { instance = this; }
void Awake() { instance = this; }