public void CopyFrom(TicCmd cmd) { forwardMove = cmd.forwardMove; sideMove = cmd.sideMove; angleTurn = cmd.angleTurn; buttons = cmd.buttons; }
public void CopyFrom(TicCmd cmd) { ForwardMove = cmd.ForwardMove; SideMove = cmd.SideMove; AngleTurn = cmd.AngleTurn; Consistancy = cmd.Consistancy; ChatChar = cmd.ChatChar; Buttons = cmd.Buttons; }
//private Demo demo; public DoomApplication() { try { var style = Styles.Close | Styles.Titlebar; window = new RenderWindow(new VideoMode(640, 400), "Managed Doom", style); window.Clear(new Color(128, 128, 128)); window.Display(); resource = new CommonResource("DOOM2.WAD"); renderer = new SfmlRenderer(window, resource, true); audio = new SfmlAudio(resource.Wad); menu = new DoomMenu(this); state = ApplicationState.Opening; opening = new OpeningSequence(); players = new Player[Player.MaxPlayerCount]; cmds = new TicCmd[Player.MaxPlayerCount]; for (var i = 0; i < Player.MaxPlayerCount; i++) { players[i] = new Player(i); cmds[i] = new TicCmd(); } players[0].InGame = true; options = new GameOptions(); options.Skill = GameSkill.Hard; options.GameMode = resource.Wad.GameMode; options.Episode = 1; options.Map = 1; //demo = new Demo("test.lmp"); //options = demo.Options; game = new DoomGame(players, resource, options); game.Audio = audio; events = new List <DoomEvent>(); window.Closed += (sender, e) => window.Close(); window.KeyPressed += KeyPressed; window.KeyReleased += KeyReleased; window.SetFramerateLimit(35); } catch (Exception e) { ExceptionDispatchInfo.Capture(e).Throw(); } }
public OpeningSequence(CommonResource resource, GameOptions options) { this.resource = resource; this.options = options; cmds = new TicCmd[Player.MaxPlayerCount]; for (var i = 0; i < Player.MaxPlayerCount; i++) { cmds[i] = new TicCmd(); } currentStage = 0; nextStage = 0; reset = false; StartTitleScreen(); }
public OpeningSequence(GameContent content, GameOptions options) { this.content = content; this.options = options; cmds = new TicCmd[Player.MaxPlayerCount]; for (var i = 0; i < Player.MaxPlayerCount; i++) { cmds[i] = new TicCmd(); } currentStage = 0; nextStage = 0; reset = false; StartTitleScreen(); }
public Player(int number) { Number = number; Cmd = new TicCmd(); Powers = new int[(int)PowerType.Count]; Cards = new bool[(int)CardType.Count]; Frags = new int[MaxPlayerCount]; WeaponOwned = new bool[(int)WeaponType.Count]; Ammo = new int[(int)WeaponType.Count]; MaxAmmo = new int[(int)WeaponType.Count]; PlayerSprites = new PlayerSpriteDef[(int)PlayerSprite.Count]; for (var i = 0; i < PlayerSprites.Length; i++) { PlayerSprites[i] = new PlayerSpriteDef(); } }
public DemoPlayback(CommonResource resource, GameOptions options, string demoName) { if (File.Exists(demoName)) { demo = new Demo(demoName); } else if (File.Exists(demoName + ".lmp")) { demo = new Demo(demoName + ".lmp"); } else { var lumpName = demoName.ToUpper(); if (resource.Wad.GetLumpNumber(lumpName) == -1) { throw new Exception("Demo '" + demoName + "' was not found!"); } demo = new Demo(resource.Wad.ReadLump(lumpName)); } demo.Options.GameVersion = options.GameVersion; demo.Options.GameMode = options.GameMode; demo.Options.MissionPack = options.MissionPack; demo.Options.Renderer = options.Renderer; demo.Options.Sound = options.Sound; demo.Options.Music = options.Music; cmds = new TicCmd[Player.MaxPlayerCount]; for (var i = 0; i < Player.MaxPlayerCount; i++) { cmds[i] = new TicCmd(); } game = new DoomGame(resource, demo.Options); game.DeferedInitNew(); stopwatch = new Stopwatch(); }
public Player(int number) { this.number = number; name = defaultPlayerNames[number]; cmd = new TicCmd(); powers = new int[(int)PowerType.Count]; cards = new bool[(int)CardType.Count]; frags = new int[MaxPlayerCount]; weaponOwned = new bool[(int)WeaponType.Count]; ammo = new int[(int)AmmoType.Count]; maxAmmo = new int[(int)AmmoType.Count]; playerSprites = new PlayerSpriteDef[(int)PlayerSprite.Count]; for (var i = 0; i < playerSprites.Length; i++) { playerSprites[i] = new PlayerSpriteDef(); } }
public DoomApplication(CommandLineArgs args) { config = new Config(ConfigUtilities.GetConfigPath()); try { config.video_screenwidth = Math.Clamp(config.video_screenwidth, 320, 3200); config.video_screenheight = Math.Clamp(config.video_screenheight, 200, 2000); var videoMode = new VideoMode((uint)config.video_screenwidth, (uint)config.video_screenheight); var style = Styles.Close | Styles.Titlebar; if (config.video_fullscreen) { style = Styles.Fullscreen; } window = new RenderWindow(videoMode, ApplicationInfo.Title, style); window.Clear(new Color(64, 64, 64)); window.Display(); if (args.deh.Present) { DeHackEd.ReadFiles(args.deh.Value); } resource = new CommonResource(GetWadPaths(args)); renderer = new SfmlRenderer(config, window, resource); if (!args.nosound.Present && !args.nosfx.Present) { sound = new SfmlSound(config, resource.Wad); } if (!args.nosound.Present && !args.nomusic.Present) { music = ConfigUtilities.GetSfmlMusicInstance(config, resource.Wad); } userInput = new SfmlUserInput(config, window, !args.nomouse.Present); events = new List <DoomEvent>(); options = new GameOptions(); options.GameVersion = resource.Wad.GameVersion; options.GameMode = resource.Wad.GameMode; options.MissionPack = resource.Wad.MissionPack; options.Renderer = renderer; options.Sound = sound; options.Music = music; options.UserInput = userInput; menu = new DoomMenu(this); opening = new OpeningSequence(resource, options); cmds = new TicCmd[Player.MaxPlayerCount]; for (var i = 0; i < Player.MaxPlayerCount; i++) { cmds[i] = new TicCmd(); } game = new DoomGame(resource, options); wipe = new WipeEffect(renderer.WipeBandCount, renderer.WipeHeight); wiping = false; currentState = ApplicationState.None; nextState = ApplicationState.Opening; needWipe = false; sendPause = false; quit = false; quitMessage = null; CheckGameArgs(args); window.Closed += (sender, e) => window.Close(); window.KeyPressed += KeyPressed; window.KeyReleased += KeyReleased; if (!args.timedemo.Present) { window.SetFramerateLimit(35); } mouseGrabbed = false; } catch (Exception e) { Dispose(); ExceptionDispatchInfo.Throw(e); } }
public DoomApplication(CommandLineArgs args, String[] configLines, HttpClient http, Stream wadStream, IJSRuntime jsRuntime, IJSInProcessRuntime jSInProcessRuntime, WebAssemblyJSRuntime webAssemblyJSRuntime, string wadUrl) { Http = http; WadStream = wadStream; JsRuntime = jsRuntime; JSInProcessRuntime = jSInProcessRuntime; WebAssemblyJSRuntime = webAssemblyJSRuntime; configLines = new string[] { "video_screenwidth=320", "video_screenHeight=200", }; config = new Config(configLines); try { config.video_screenwidth = Math.Clamp(config.video_screenwidth, 320, 3200); config.video_screenheight = Math.Clamp(config.video_screenheight, 200, 2000); var videoMode = VideoMode.CanvasMode; var style = Styles.Close | Styles.Titlebar; if (config.video_fullscreen) { style = Styles.Fullscreen; } window = new RenderWindow(videoMode, ApplicationInfo.Title, style); window.Clear(new Color(64, 64, 64)); window.Display(); if (args.deh.Present) { DeHackEd.ReadFiles(args.deh.Value); } // resource = new CommonResource(GetWadPaths(args)); resource = new CommonResource(new string[] { wadUrl }); renderer = new SfmlRenderer(config, window, resource); if (!args.nosound.Present && !args.nosfx.Present) { sound = new SfmlSound(config, resource.Wad); } if (!args.nosound.Present && !args.nomusic.Present) { music = ConfigUtilities.GetSfmlMusicInstance(config, resource.Wad); } userInput = new SfmlUserInput(config, window, !args.nomouse.Present); options = new GameOptions(); options.GameVersion = resource.Wad.GameVersion; options.GameMode = resource.Wad.GameMode; options.MissionPack = resource.Wad.MissionPack; options.Renderer = renderer; options.Sound = sound; options.Music = music; options.UserInput = userInput; menu = new DoomMenu(this); opening = new OpeningSequence(resource, options); cmds = new TicCmd[Player.MaxPlayerCount]; for (var i = 0; i < Player.MaxPlayerCount; i++) { cmds[i] = new TicCmd(); } game = new DoomGame(resource, options); wipe = new WipeEffect(renderer.WipeBandCount, renderer.WipeHeight); wiping = false; currentState = ApplicationState.None; nextState = ApplicationState.Opening; needWipe = false; sendPause = false; quit = false; quitMessage = null; CheckGameArgs(args); } catch (Exception e) { Dispose(); ExceptionDispatchInfo.Throw(e); } }
public static void BuildTicCmd(TicCmd cmd) { var keyLeft = Keyboard.IsKeyPressed(Keyboard.Key.Left); var keyRight = Keyboard.IsKeyPressed(Keyboard.Key.Right); var keyUp = Keyboard.IsKeyPressed(Keyboard.Key.Up); var keyDown = Keyboard.IsKeyPressed(Keyboard.Key.Down); var keySpeed = Keyboard.IsKeyPressed(Keyboard.Key.LShift); var keyStrafe = Keyboard.IsKeyPressed(Keyboard.Key.LAlt); var keyFire = Keyboard.IsKeyPressed(Keyboard.Key.LControl); var keyUse = Keyboard.IsKeyPressed(Keyboard.Key.Space); weaponKeys[0] = Keyboard.IsKeyPressed(Keyboard.Key.Num1); weaponKeys[1] = Keyboard.IsKeyPressed(Keyboard.Key.Num2); weaponKeys[2] = Keyboard.IsKeyPressed(Keyboard.Key.Num3); weaponKeys[3] = Keyboard.IsKeyPressed(Keyboard.Key.Num4); weaponKeys[4] = Keyboard.IsKeyPressed(Keyboard.Key.Num5); weaponKeys[5] = Keyboard.IsKeyPressed(Keyboard.Key.Num6); weaponKeys[6] = Keyboard.IsKeyPressed(Keyboard.Key.Num7); cmd.Clear(); var strafe = keyStrafe; var speed = keySpeed ? 1 : 0; Fixed forward = Fixed.Zero; Fixed side = Fixed.Zero; if (keyLeft || keyRight) { turnheld++; } else { turnheld = 0; } int tspeed; if (turnheld < slowTurnTics) { tspeed = 2; } else { tspeed = speed; } if (strafe) { if (keyRight) { side += sidemove[speed]; } if (keyLeft) { side -= sidemove[speed]; } } else { if (keyRight) { cmd.AngleTurn -= (short)angleturn[tspeed].Data; } if (keyLeft) { cmd.AngleTurn += (short)angleturn[tspeed].Data; } } if (keyUp) { forward += forwardmove[speed]; } if (keyDown) { forward -= forwardmove[speed]; } if (keyFire) { cmd.Buttons |= TicCmdButtons.Attack; } if (keyUse) { cmd.Buttons |= TicCmdButtons.Use; } // If the previous or next weapon button is pressed, the // next_weapon variable is set to change weapons when // we generate a ticcmd. Choose a new weapon. /* * if (gamestate == GS_LEVEL && next_weapon != 0) * { * i = G_NextWeapon(next_weapon); * cmd->buttons |= BT_CHANGE; * cmd->buttons |= i << BT_WEAPONSHIFT; * } * else */ { // Check weapon keys. for (var i = 0; i < weaponKeys.Length; i++) { if (weaponKeys[i]) { cmd.Buttons |= TicCmdButtons.Change; cmd.Buttons |= (byte)(i << TicCmdButtons.WeaponShift); break; } } } next_weapon = 0; if (forward > maxplmove) { forward = maxplmove; } else if (forward < -maxplmove) { forward = -maxplmove; } if (side > maxplmove) { side = maxplmove; } else if (side < -maxplmove) { side = -maxplmove; } cmd.ForwardMove += (sbyte)forward.Data; cmd.SideMove += (sbyte)side.Data; }
public Doom(CommandLineArgs args, Config config, GameContent content, IVideo video, ISound sound, IMusic music, IUserInput userInput) { video = video ?? NullVideo.GetInstance(); sound = sound ?? NullSound.GetInstance(); music = music ?? NullMusic.GetInstance(); userInput = userInput ?? NullUserInput.GetInstance(); this.args = args; this.config = config; this.content = content; this.video = video; this.sound = sound; this.music = music; this.userInput = userInput; if (args.deh.Present) { DeHackEd.ReadFiles(args.deh.Value); } if (!args.nodeh.Present) { DeHackEd.ReadDeHackEdLump(content.Wad); } events = new List <DoomEvent>(); options = new GameOptions(); options.GameVersion = content.Wad.GameVersion; options.GameMode = content.Wad.GameMode; options.MissionPack = content.Wad.MissionPack; options.Video = video; options.Sound = sound; options.Music = music; options.UserInput = userInput; menu = new DoomMenu(this); opening = new OpeningSequence(content, options); cmds = new TicCmd[Player.MaxPlayerCount]; for (var i = 0; i < Player.MaxPlayerCount; i++) { cmds[i] = new TicCmd(); } game = new DoomGame(content, options); wipeEffect = new WipeEffect(video.WipeBandCount, video.WipeHeight); wiping = false; currentState = DoomState.None; nextState = DoomState.Opening; needWipe = false; sendPause = false; quit = false; quitMessage = null; mouseGrabbed = false; CheckGameArgs(); }