public override void Init(McGame game, InputHandler input) { base.Init(game, input); var options = new List <Option> { new ChangeMenuOption("Options", new OptionsMenu(this, "Go back"), game), new ChangeMenuOption("Back to Game", null, game), new ActionOption("Return to Title", ReturnToTitleAction) }; RenderScrollingListTable(options, Location.Right); const int width = 16; var seconds = Game.GameTime / 60; var minutes = seconds / 60; var hours = minutes / 60; minutes %= 60; seconds %= 60; var ts = $"{(hours > 0 ? hours + ":" + (minutes < 10 ? "0" : "") + minutes + ":" : minutes + ":" + (seconds < 10 ? "0" : "") + seconds)}"; _lines = new List <string> { Utils.SpacesCenter(ts, width, 0, 1), $"Score:{Utils.SpacesPushleft(Game.Player.Score.ToString(), width, 6)}", $"Mode:{Utils.SpacesPushleft(McGame.Difficulty.ShortName, width, 5)}", $"Size:{Utils.SpacesPushleft($"{GameConts.Instance.MaxWidth}x{GameConts.Instance.MaxHeight}", width, 5)}" }; _titleLabel = new Label(Game.UiManager, "Game is Paused", (GameConts.ScreenMiddleWidth - ("Game is Paused".Length * 8 / 2)), 15, Color.White); Game.UiManager.Add(_titleLabel); }
public override void Init(McGame game, InputHandler input) { base.Init(game, input); ConfigMenuOptions(); _titleLabel = new Label(Game.UiManager, "Options", (GameConts.ScreenMiddleWidth - ("Options".Length * 8 / 2)), 15, Color.White); Game.UiManager.Add(_titleLabel); RenderScrollingListTable(_menus["main"]); }
public override void Init(McGame game, InputHandler input) { base.Init(game, input); string text = "UI Object Testing"; _titleLabel = new Label(Game.UiManager, text, -text.Length, 20, Color.White); _progBar = new ProgressBar(Game.UiManager) { X = 10, Y = 30, Width = 20, Progress = 0 }; Game.UiManager.Add(_titleLabel); Game.UiManager.Add(_progBar); }
public override void Init(McGame game, InputHandler input) { base.Init(game, input); if (_credits == null) { _credits = File.Exists(Path.Combine(Game.Content.RootDirectory, "credits.txt")) ? File.ReadAllLines(Path.Combine(Game.Content.RootDirectory, "credits.txt")) : new[] { "Credits are missing why?" } } ; ScoreBoardManager.Load(); _score = ScoreBoardManager.Scores.Score; _bottomLabel = new Label(Game.UiManager) { Text = "", Color = Color.Get(-100, 222, 222, 222) }; _bottomLabel.X = -(_bottomLabel.Text.Length * 8); _bottomLabel.Y = GameConts.Height - 8; Game.UiManager.Add(_bottomLabel); var options = new List <Option> { new ChangeMenuOption("New Game", new NewGameMenu(this), Game), new ChangeMenuOption("How to play", new InstructionsMenu(this), Game), new LabelOption("Mods") { Enabled = false }, #if DEBUG new ChangeMenuOption("Debug", new DebugMenu(this), Game), #endif new ChangeMenuOption("Options", new OptionsMenu(this), Game), new ActionOption("Exit", () => Game.Exit()) { ClickSound = false } }; RenderScrollingListTable(options, Location.Right); }
public ConsoleCommands(McGame game) { _game = game; ManualInterpreter.RegisterCommand("game-seed", _ => $"Current game seed is: {LevelGen.Seed}"); ManualInterpreter.RegisterCommand("give-item", GiveItemCommand); ManualInterpreter.RegisterCommand("spawn-mob", SpawnMobCommand); ManualInterpreter.RegisterCommand("kill-me", KillMeCommand); ManualInterpreter.RegisterCommand("save-image", SaveWorldImageCommand); ManualInterpreter.RegisterCommand("play-sound", PlaySoundCommand); ManualInterpreter.RegisterCommand("goto-level", MoveToLevel); ManualInterpreter.RegisterCommand("player-color", NewRandomPlayerColorCommand); #if DEBUG ManualInterpreter.RegisterCommand("etx", ExportTileXmlCommand); #endif //Normal commands XD ManualInterpreter.RegisterCommand("clear", _ => game.Console.Clear()); ManualInterpreter.RegisterCommand("exit", _ => game.Exit()); ManualInterpreter.RegisterCommand("fps", _ => $"Current FPS: {game.FpsCounterComponent.FrameRate}"); }
public override void Init(McGame game, InputHandler input) { base.Init(game, input); _worldSizeOption = new WorldSizeOption(); _difficultyOption = new DifficultyOption(); _options = new List <Option> { _worldSizeOption, _difficultyOption, new ActionOption("Create and Start", CreateAndStartWorld), new ChangeMenuOption("Cancel", Parent, game) }; _titleLabel = new Label(Game.UiManager, "New Game", (GameConts.ScreenMiddleWidth - ("New Game".Length * 8 / 2)), 15, Color.White); Game.UiManager.Add(_titleLabel); RenderScrollingListTable(_options); }
public override void Init(McGame game, InputHandler input) { base.Init(game, input); var options = new List <Option> { new ChangeMenuOption("Color Test", new ColorTestMenu(this), game), new ChangeMenuOption("UI Object Test", new UiObjectTestMenu(this), game), new ActionOption("Alert Dialog", () => { game.SetMenu(new AlertMenu(this, new[] { "I am a test", "So am i", "But also am i" }, YesAction)); }), new ChangeMenuOption("Main Menu", Parent, game) }; _titleLabel = new Label(Game.UiManager, "Debug Tools", (GameConts.ScreenMiddleWidth - ("Debug Tools".Length * 8 / 2)), 15, Color.White); Game.UiManager.Add(_titleLabel); RenderScrollingListTable(options); }
public Player(McGame game, InputHandler input) { Game = game; _input = input; X = 24; Y = 24; Stamina = MaxStamina; Inventory.Add(new FurnitureItem(new Workbench())); Inventory.Add(new PowerGloveItem()); var rnd = new Random((int)LevelGen.Seed); ChangePlayerColor(100, rnd.NextInt(555) + 1, rnd.NextInt(555) + 1); #if DEBUG foreach (var item in Resource.AllResources) { Inventory.Add(new ResourceItem(item, 1000)); } #endif }
public override void Init(McGame game, InputHandler input) { base.Init(game, input); _options.Clear(); for (var i = 0; i < _rand.Next(9, 100) + 1; i++) { var a = -1; var b = _rand.Next(1, 555) + 1; var c = _rand.Next(1, 555) + 1; var d = _rand.Next(1, 555) + 1; _options.Add(new LabelOption(Color.GetHex(a, b, c, d)) { SelectedColor = Color.Get(a, b, c, d), Enabled = true }); } _options.Add(new ChangeMenuOption("Debug Menu", Parent, Game)); RenderScrollingListTable(_options, Location.Right); }
public virtual void Init(McGame game, InputHandler input) { Input = input; Game = game; }
public async System.Threading.Tasks.Task StopGame() { McGame.Get()?.OnGameStop(mGameInstance); foreach (var i in AutoMembers) { i.Key.OnGameStop(i.Value); } var savedLogic = CEngine.Instance.ThreadLogic.LimitTime; var savedRender = CEngine.Instance.ThreadRHI.LimitTime; CEngine.Instance.ThreadLogic.LimitTime = long.MaxValue; CEngine.Instance.ThreadRHI.LimitTime = long.MaxValue; await EngineNS.CEngine.Instance.EventPoster.Post(() => { while (mGameInstance != null && mGameInstance.GameState != GamePlay.GGameInstance.enGameState.Initialized) { System.Threading.Thread.Sleep(50); } if (mGameInstance == null) { return(false); } mGameInstance.GameState = GamePlay.GGameInstance.enGameState.Stopping; mGameInstance.FinalGame(); mGameInstance.GameState = GamePlay.GGameInstance.enGameState.Stopped; CEngine.Instance.TickManager.RemoveTickInfo(mGameInstance); mGameInstance = null; return(true); }, Thread.Async.EAsyncTarget.Logic); //EngineNS.CEngine.Instance.EventPoster.RunOn(() => //{ // if (mGameInstance == null) // return false; // mGameInstance.GameState = GamePlay.GGameInstance.enGameState.Stopping; // mGameInstance.FinalGame(); // mGameInstance.GameState = GamePlay.GGameInstance.enGameState.Stopped; // CEngine.Instance.TickManager.RemoveTickInfo(mGameInstance); // mGameInstance = null; // return true; //}, Thread.Async.EAsyncTarget.Logic); OnGameStoped(); McGame.Reset(); CEngine.Instance.MacrossDataManager.CleanDebugContextGCRefrence(); CEngine.Instance.ThreadLogic.LimitTime = savedLogic; CEngine.Instance.ThreadRHI.LimitTime = savedRender; //CEngine.Instance.MacrossDataManager.ClearDebugContext(); GC.Collect(); GC.WaitForFullGCComplete(); GC.Collect(); GC.WaitForFullGCComplete(); if (TickableNum != CEngine.Instance.TickManager.GetTickableNum()) { System.Diagnostics.Debug.Assert(false); } }
public async System.Threading.Tasks.Task <bool> StartGame(Type gameInstanceType, IntPtr WinHandle, UInt32 width, UInt32 height, EngineNS.GamePlay.GGameInstanceDesc desc, EngineNS.Graphics.CGfxCamera camera, RName startScript) { #if PWindow //Bricks.RemoteServices.RPCExecManager.Insance.SaveCode(); #endif McGame = CEngine.Instance.MacrossDataManager.NewObjectGetter <GamePlay.McGameInstance>(startScript); TickableNum = CEngine.Instance.TickManager.GetTickableNum(); if (mGameInstance != null && mGameInstance.GameState != GamePlay.GGameInstance.enGameState.Stopped) { return(false); } var savedLogic = CEngine.Instance.ThreadLogic.LimitTime; var savedRender = CEngine.Instance.ThreadRHI.LimitTime; CEngine.Instance.ThreadLogic.LimitTime = long.MaxValue; CEngine.Instance.ThreadRHI.LimitTime = long.MaxValue; mGameInstance = System.Activator.CreateInstance(gameInstanceType) as GamePlay.GGameInstance; mGameInstance.GameState = GamePlay.GGameInstance.enGameState.initializing; try { if (false == await mGameInstance.InitGame(WinHandle, width, height, desc, camera)) { CEngine.Instance.ThreadLogic.LimitTime = savedLogic; CEngine.Instance.ThreadRHI.LimitTime = savedRender; return(false); } } catch (Exception ex) { Profiler.Log.WriteException(ex); } foreach (var i in AutoMembers) { await i.Key.OnGameStart(i.Value); } OnGameStarted(); CEngine.Instance.ThreadLogic.LimitTime = savedLogic; CEngine.Instance.ThreadRHI.LimitTime = savedRender; var smp = Thread.ASyncSemaphore.CreateSemaphore(1); EngineNS.CEngine.Instance.EventPoster.RunOn(async() => { var mcGame = McGame.Get(); if (mcGame != null) { Profiler.Log.WriteLine(Profiler.ELogTag.Info, "Macross", "Macross begin mcGame.OnGameStart"); try { await mcGame.OnGameStart(mGameInstance); } catch (Exception ex) { Profiler.Log.WriteException(ex); } Profiler.Log.WriteLine(Profiler.ELogTag.Info, "Macross", "Macross end mcGame.OnGameStart"); } smp.Release(); return(true); }, Thread.Async.EAsyncTarget.Logic); await smp.Await(); mGameInstance.GameState = GamePlay.GGameInstance.enGameState.Initialized; await mGameInstance.OnGameInited(); return(true); }
public override void Init(McGame game, InputHandler input) { base.Init(game, input); ScoreBoardManager.AddItem(DateTime.Now, game.GameTime, Game.Player.Score, McGame.Difficulty.ShortName, _youWon); }
public ChangeMenuOption(string label, Menu @goto, McGame game) : base(label) { _goto = @goto; _game = game; }
public UiManager(McGame game, InputHandler inputHandler) { Game = game; InputHandler = inputHandler; _uiObjects = new List <UiObject>(); }