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);
            }
        }
예제 #2
0
파일: AIGame.cs 프로젝트: siupa/AIGame
        /// <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();
        }
예제 #3
0
    // 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;
            }
        }
    }