public Tux(int top, int left) : base() { Top = top; Left = left; imgNormal = new AnimateImage(Files.tux_normal, 200, GameDirection.Left, GameDirection.Right); imgSmall = new AnimateImage(Files.tux_small, 200, GameDirection.Left, GameDirection.Right); Width = imgNormal.CurImage(direction).Width; Height = imgNormal.CurImage(direction).Height; curimg = imgNormal; direction = GameDirection.Right; firePressed = false; mode = MainGameObjectMode.Normal; immortializeEnd = DateTime.Now; immortialize = false; GamePhysics.JumpData jumping = new GamePhysics.JumpData(); jumping.direction = GameDirection.None; jumping.distance = 0; this.jumping = jumping; wantNext = new Queue<WantNext>(); }
public override void getEvent(GameEvent gevent, Dictionary<GameEventArg, object> args) { base.getEvent(gevent, args); // calls implizit AiEventHandler! if (gevent == GameEvent.crashInEnemy && !immortialize) { switch (mode) { case MainGameObjectMode.NormalFire: case MainGameObjectMode.Normal: Mode = MainGameObjectMode.Small; break; case MainGameObjectMode.Small: AiEventHandler(GameEvent.dead, args); break; } immortializeEnd = DateTime.Now.AddSeconds(1); immortialize = true; } else if (gevent == GameEvent.gotGoodMushroom) { if (mode == MainGameObjectMode.Small) Mode = MainGameObjectMode.Normal; } else if (gevent == GameEvent.gotPoisonMushroom && !immortialize) { if (mode == MainGameObjectMode.NormalFire || mode == MainGameObjectMode.Normal) Mode = MainGameObjectMode.Small; else if (mode == MainGameObjectMode.Small) AiEventHandler(GameEvent.dead, args); } else if (gevent == GameEvent.gotFireFlower) { Mode = MainGameObjectMode.NormalFire; } else if (gevent == GameEvent.gotImmortialize) { immortializeEnd = DateTime.Now.AddSeconds(5); immortialize = true; } }
private void GameAIInteract(GameEvent gevent, Dictionary<GameEventArg, object> args) { if (ai == null) return; Cursor.Show(); if (gevent == GameEvent.dead || gevent == GameEvent.outOfRange) { if (gameControlObjs.Lives > 0) { ai.Pause(false); string lastFileName = ai.World.fileName; ai = null; lastModeIsNull = true; // start with standard mode after death gameControlObjs.Lives--; if (world.PlayMode == PlayMode.Game || world.PlayMode == PlayMode.Editor) StartGame(lastFileName, world.PlayMode); else if (world.PlayMode == PlayMode.GameInEditor) CloseGame(); } else { if (world.PlayMode == PlayMode.Game || world.PlayMode == PlayMode.Editor) { MessageBox.Show("Game Over.", "Game Over", MessageBoxButtons.OK, MessageBoxIcon.Information); HighscoreForm hForm = new HighscoreForm(ai.FullScore, started); hForm.ShowDialog(); DialogResult dr = MessageBox.Show("Play again?", "Game Over", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1); lastModeIsNull = true; // start normal. if (dr == DialogResult.Yes) { ai.Quit(); ai = null; gameControlObjs = null; // set new points+sound! session = null; // new session Cheat.Reset(); started = DateTime.Now; StartGame("Data/Levelpacks/" + levelpack + LevelPackSwitcher.GetStartLevelName(levelpack, true), world.PlayMode); } else if (dr == DialogResult.No) CloseGame(); } else if (world.PlayMode == PlayMode.GameInEditor) CloseGame(); } } else if (gevent == GameEvent.finishedLevel) { if (world.PlayMode == PlayMode.Game || world.PlayMode == PlayMode.Editor) { string nextLevel = (string)args[GameEventArg.nextLevel]; if (nextLevel != null && nextLevel != "") { ai.Pause(false); // play again, so save last MGO mode lastMode = ai.World.MGO.Mode; lastModeIsNull = false; // it's set to the last mode ai = null; mgoChangeTop = 0; mgoChangeLeft = (int)args[GameEventArg.nextLevelStartAt]; StartGame("Data/Levelpacks/" + levelpack + nextLevel, world.PlayMode); } else { int gotScore = ai.FullScore; ai.Quit(); ai = null; lastModeIsNull = true; MessageBox.Show("Congratulations!\nYou 've played all predefined littleRunner levels.\n\nNow start making your own level with the level-editor :-).", "Congratulations", MessageBoxButtons.OK, MessageBoxIcon.Information); HighscoreForm hForm = new HighscoreForm(gotScore, started); hForm.ShowDialog(); CloseGame(); } } else if (world.PlayMode == PlayMode.GameInEditor) CloseGame(); } }