static void RunSampleGame_Scrypt() { Console.WriteLine("input a seed (2112): "); var strSeed = Console.ReadLine(); if (!int.TryParse(strSeed, out int seed)) { seed = 2112; } var rng = new RNG(seed); var mobGen = new GameMobGenerator( rng, () => new GameActor(GameActor.Alignment.Mob, "rat", 10, new GameWeapon("teeth", 4)), () => new GameActor(GameActor.Alignment.Mob, "mole", 8, new GameWeapon("claw", 6)), () => new GameActor(GameActor.Alignment.Mob, "lynx", 15, new GameWeapon("pounce", 10)) ); RunGame(CreateSampleGame2(rng), mobGen, GameMobGenerator.ActionType.Scrypt); }
static void RunGame(Game game, GameMobGenerator mobGen, GameMobGenerator.ActionType actionType) { GameEvents.Instance.ActorAdded += (g, a) => { Console.WriteLine($"ActorAdded: {a}"); }; GameEvents.Instance.RoundStart += g => { Console.WriteLine("RoundStart"); Console.ReadKey(); }; GameEvents.Instance.RoundEnd += g => { Console.WriteLine("RoundEnd"); Console.ReadKey(); }; GameEvents.Instance.AttackStart += (a, b) => { Console.WriteLine($"{a.uniqueName} attacking {b.uniqueName} with {a.Weapon}"); Console.ReadKey(); }; GameEvents.Instance.ActorHealthChange += (a, o, n) => { Console.WriteLine($"{a.uniqueName} health {o} => {n}"); Console.ReadKey(); }; GameEvents.Instance.Death += a => { Console.WriteLine($"=-=-=RIP=-=-= {a.uniqueName}"); Console.ReadKey(); }; if (verbose) { GameEvents.Instance.ActorActionsStart += (g, a) => { Console.WriteLine($"{a.uniqueName} starting turn"); Console.ReadKey(); }; GameEvents.Instance.ActorActionsEnd += (g, a) => { Console.WriteLine($"{a.uniqueName} ending turn"); Console.ReadKey(); }; GameEvents.Instance.AttackEnd += (a, b) => { Console.WriteLine($"attack finished, target {b.uniqueName} health {b.Health}/{b.baseHealth}"); Console.ReadKey(); }; } while (game.GameProgress != Game.Progress.MobsWin) { if (mobGen != null) { Console.WriteLine("Generating mobs"); game.ClearActors(GameActor.Alignment.Mob); for (int i = 0; i < 4; ++i) { game.AddActor(mobGen.Gen(actionType)); } } while (game.GameProgress == Game.Progress.InProgress) { Console.WriteLine(game.ToString()); Console.WriteLine("Any key to continue..."); Console.ReadKey(); switch (actionType) { case GameMobGenerator.ActionType.IAction: game.PlayRound(); break; case GameMobGenerator.ActionType.Scrypt: game.PlayRound_Scrypt(); break; } Console.WriteLine($"Round ended with result {game.GameProgress}"); Console.ReadKey(); } } Console.WriteLine($"Game ended with result {game.GameProgress}"); GameEvents.ReleaseAllListeners(); }