protected void CreateSubParams() { SubParams.Clear(); var health = MainElement.GetChildElement("health"); if (health != null) { Health = new HealthParams(health, this); SubParams.Add(Health); } // TODO: support for multiple ai elements? var ai = MainElement.GetChildElement("ai"); if (ai != null) { AI = new AIParams(ai, this); SubParams.Add(AI); } foreach (var element in MainElement.GetChildElements("bloodemitter")) { var emitter = new ParticleParams(element, this); BloodEmitters.Add(emitter); SubParams.Add(emitter); } foreach (var element in MainElement.GetChildElements("gibemitter")) { var emitter = new ParticleParams(element, this); GibEmitters.Add(emitter); SubParams.Add(emitter); } foreach (var element in MainElement.GetChildElements("damageemitter")) { var emitter = new ParticleParams(element, this); GibEmitters.Add(emitter); SubParams.Add(emitter); } foreach (var soundElement in MainElement.GetChildElements("sound")) { var sound = new SoundParams(soundElement, this); Sounds.Add(sound); SubParams.Add(sound); } foreach (var inventoryElement in MainElement.GetChildElements("inventory")) { var inventory = new InventoryParams(inventoryElement, this); Inventories.Add(inventory); SubParams.Add(inventory); } }
/// <summary> /// Allows the game to perform any initialization it needs to before starting to run. /// This is where it can query for any required services and load any non-graphic /// related content. Calling base.Initialize will enumerate through any components /// and initialize them as well. /// </summary> protected override void Initialize() { AIParams.SetUpAIParams(Path.Combine(Directory.GetCurrentDirectory(), "AIConfig.txt")); device = graphics.GraphicsDevice; spriteBatch = new SpriteBatch(device); world = new World(this); _windowWidth = 1000; // GraphicsDevice.DisplayMode.Width / 2; _windowHeight = 600; // GraphicsDevice.DisplayMode.Height / 2; // Setup frame buffer. graphics.SynchronizeWithVerticalRetrace = false; graphics.PreferredBackBufferWidth = _windowWidth; graphics.PreferredBackBufferHeight = _windowHeight; graphics.PreferMultiSampling = true; graphics.ApplyChanges(); // Setup the initial input states. currentKeyboardState = Keyboard.GetState(); // Setup Fog // NOTE: migration to XNA 4.0 // NOTE: graphics.GraphicsDevice.RenderState.FogStart = Settings.FOG_START; // NOTE: graphics.GraphicsDevice.RenderState.FogEnd = Settings.FOG_END; // NOTE: graphics.GraphicsDevice.RenderState.FogDensity = Settings.FOG_DENSITY; // NOTE: graphics.GraphicsDevice.RenderState.FogColor = Settings.FOG_COLOR; // NOTE: graphics.GraphicsDevice.RenderState.FogTableMode = Settings.FOG_MODE; // NOTE: graphics.GraphicsDevice.RenderState.FogVertexMode = Settings.FOG_MODE; HUD = new ScreenOutput.HUD(); _console = new ScreenOutput.Console(); cursor = new Cursor(this, device, spriteBatch); Components.Add(cursor); camera = new CameraComponent(this); Components.Add(camera); // NOTE: migration to XNA 4.0 basicEffect = new BasicEffect(graphics.GraphicsDevice, null); basicEffect = new BasicEffect(graphics.GraphicsDevice); base.Initialize(); }
// Update is called once per frame void Update() { if (!setup) { bool doStart = true; //There are three scenarios: Either we're against an AI, in local co-op, or online. Each one needs a different seed. //If against an AI, look at its info and extract a scene from it. AIParams pars = MissionManager.instance.mission.GetAIParams(); if (pars != null) { AIPlayer ai = grid2.LoadAI(pars.robotic, pars.robotSpeed, pars.loop, pars.text); randomSeed = ai.seed; } //elseif connecting then get the seed from the host. (To Be Implemented) else //Single player { randomSeed = UnityEngine.Random.Range(1, 65535); } if (MissionManager.instance.mission.GameType() == EngineRoomGameType.LOCAL_PVP) { grid1.SetLocalPVPMover(true); grid2.SetLocalPVPMover(false); } if (MissionManager.instance.mission.GameType() == EngineRoomGameType.SERVER_PVP) { EngineRoomNetworkManager ernm = MissionManager.instance.engineRoomNetworkManager; ernm.SetupLocalClient(); ernm.SetupServer(); grid2.SetRemotePVPPlayer(); grid1.SetLocalPVPPlayer(); } if (MissionManager.instance.mission.GameType() == EngineRoomGameType.CLIENT_PVP) { EngineRoomNetworkManager ernm = MissionManager.instance.engineRoomNetworkManager; ernm.SetupClient(); grid2.SetRemotePVPPlayer(); grid1.SetLocalPVPPlayer(); doStart = false; //Client waits to start until server says what the seed is. } if (doStart) { grid1.SetSeedAndStart(randomSeed); grid2.SetSeedAndStart(randomSeed); } setup = true; } if (isDying) { deathExplosionTime += Time.deltaTime; if (deathExplosionTime > 4) { p1Menu.SetActive(true); p2Menu.SetActive(true); endMenu.SetActive(true); if (grid1.player.IsAlive() && !grid2.player.IsAlive()) { p1Text.sprite = victory; p2Text.sprite = defeat; } if (grid2.player.IsAlive() && !grid1.player.IsAlive()) { p2Text.sprite = victory; p1Text.sprite = defeat; } if (!grid1.player.IsAlive() && !grid2.player.IsAlive()) { p1Text.sprite = defeat; p2Text.sprite = defeat; } if (grid1.player.IsAlive() && grid2.player.IsAlive()) { p1Text.sprite = victory; p2Text.sprite = victory; } //Time.timeScale = 0; isDying = false; } } }