Exemplo n.º 1
0
        public Tile(Layer1TileType layer1, Layer2TileType layer2, Layer3TileType layer3)
        {
            Flammability = 0;
            Material     = 0;
            State        = FireState.Unburned;
            Smoke        = SmokeState.WithoutSmoke;

            SetLayer1(layer1);
            SetLayer2(layer2);
            SetLayer3(layer3);
        }
Exemplo n.º 2
0
        private void SetLayer1(Layer1TileType type)
        {
            switch (type)
            {
            case Layer1TileType.Carpet1:
                _texture1 = "Carpet 1";
                SetMaterial(Global.rand.Next(2000, 3000));
                SetFlammability(.004f);
                SetSolidity(false);
                break;

            case Layer1TileType.Carpet2:
                _texture1 = "Carpet 2";
                SetMaterial(Global.rand.Next(2000, 3000));
                SetFlammability(.004f);
                SetSolidity(false);
                break;

            case Layer1TileType.Tile1:
                _texture1 = "Tiled Floor 1";
                SetMaterial(Global.rand.Next(1000, 2000));
                SetFlammability(.0001f);
                SetSolidity(false);
                break;

            case Layer1TileType.Tile2:
                _texture1 = "Tiled Floor 2";
                SetMaterial(Global.rand.Next(1000, 2000));
                SetFlammability(.0001f);
                SetSolidity(false);
                break;

            case Layer1TileType.WoodFloor:
                _texture1 = "Wooden Floor";
                SetMaterial(Global.rand.Next(3000, 4000));
                SetFlammability(.003f);
                SetSolidity(false);
                break;

            case Layer1TileType.GraniteWall:
                _texture1 = "Granite Wall";
                SetMaterial(0);
                SetFlammability(0);
                SetSolidity(true);
                break;

            case Layer1TileType.WoodWall:
                _texture1 = "Wooden Wall";
                SetMaterial(Global.rand.Next(5000, 6000));
                SetFlammability(.0001f);
                SetSolidity(true);
                break;

            case Layer1TileType.Outside:
                _texture1 = "Outside";
                SetMaterial(0);
                SetFlammability(0);
                SetSolidity(false);
                Outside = true;
                break;
            }
        }
Exemplo n.º 3
0
        public PlayState(StateManager manager, string name, Viewport viewport)
        {
            this.manager = manager;

            StreamReader reader = new StreamReader(System.Environment.CurrentDirectory + "\\Levels\\" + name + ".txt");
            string[] lines = reader.ReadToEnd().Split(new char[] { '\n' }, StringSplitOptions.RemoveEmptyEntries);
            reader.Close();

            string[] playerPosition = lines[0].Split(new char[] { ',' });
            _player = Generator.PlayerSprite(new Vector2(Convert.ToInt32(playerPosition[0].Trim()), Convert.ToInt32(playerPosition[1].Trim())));

            string[] size = lines[1].Split(new char[] { ',' });
            WorldLimits = new Vector2(Convert.ToInt32(size[0].Trim()), Convert.ToInt32(size[1].Trim()));
            Grid = new Tile[Convert.ToInt32(size[0].Trim()), Convert.ToInt32(size[1].Trim())];
            selectedNozzle = Nozzle.narrow;

            string[] victimPositions = lines[2].Split(new char[] { ';' });
            foreach (string victimPosition in victimPositions)
            {
                string[] position = victimPosition.Split(new char[] { ',' });
                Victims.Add(Generator.VictimSprite(new Vector2(Convert.ToInt32(position[0].Trim()), Convert.ToInt32(position[1].Trim()))));
            }

            string[] firePositionList = lines[3].Split(new char[] { ',' });
            Vector2 firePosition = new Vector2(Convert.ToInt32(firePositionList[0].Trim()), Convert.ToInt32(firePositionList[1].Trim()));

            for (int x = 0; x < Grid.GetLength(0); x++)
            {
                for (int y = 0; y < Grid.GetLength(1); y++)
                {
                    Layer1TileType layer1 = Layer1TileType.Outside;
                    Layer2TileType layer2 = Layer2TileType.Empty;
                    Layer3TileType layer3 = Layer3TileType.Empty;

                    switch (lines[y + 4][x])
                    {
                        case 'O': layer1 = Layer1TileType.Outside; break;
                        case '1': layer1 = Layer1TileType.Carpet1; break;
                        case '2': layer1 = Layer1TileType.Carpet2; break;
                        case '3': layer1 = Layer1TileType.Tile1; break;
                        case '4': layer1 = Layer1TileType.Tile2; break;
                        case '5': layer1 = Layer1TileType.WoodFloor; break;
                        case 'G': layer1 = Layer1TileType.GraniteWall; break;
                        case 'W': layer1 = Layer1TileType.WoodWall; break;
                    }

                    switch (lines[y + Grid.GetLength(1) + 5][x])
                    {
                        case '-': layer2 = Layer2TileType.Empty; break;
                        case 'E': layer2 = Layer2TileType.Desk; break;
                        case 'S': layer2 = Layer2TileType.Sofa; break;
                        case 'P': layer2 = Layer2TileType.Plant; break;
                        case 'C': layer2 = Layer2TileType.OpenVerticalDoor; break;
                        case 'D': layer2 = Layer2TileType.ClosedVerticalDoor; break;
                        case 'c': layer2 = Layer2TileType.OpenHorizontalDoor; break;
                        case 'd': layer2 = Layer2TileType.ClosedHorizontalDoor; break;
                        case 'T': layer2 = Layer2TileType.TrashCan; break;
                        case 'N': layer2 = Layer2TileType.Newspaper; break;
                        case 'F': layer2 = Layer2TileType.Flammables; break;
                    }

                    switch (lines[y + 2 * Grid.GetLength(1) + 6][x])
                    {
                        case 'C': layer3 = Layer3TileType.Computer; break;
                        case 'B': layer3 = Layer3TileType.Blotter; break;
                        case '-': layer3 = Layer3TileType.Empty; break;
                        case 'P': layer3 = Layer3TileType.Plant; break;
                        case 'L': layer3 = Layer3TileType.Laptop; break;
                    }

                    Grid[x, y] = new Tile(layer1, layer2, layer3);
                }
            }

            Grid[(int)firePosition.X, (int)firePosition.Y].State = FireState.Burning;

            Curve c = new Curve();
            c.Keys.Add(new CurveKey(0, 0));
            c.Keys.Add(new CurveKey(.3f, 1));
            c.Keys.Add(new CurveKey(.7f, 1));
            c.Keys.Add(new CurveKey(1, 0));

            Curve a = new Curve();
            a.Keys.Add(new CurveKey(0, 0));
            a.Keys.Add(new CurveKey(.3f, 1));
            a.Keys.Add(new CurveKey(.7f, 1));
            a.Keys.Add(new CurveKey(1, 0));
            fireHose = new ParticleSystem(Global.Textures["Water"], _player.PositionCenter, 0, 0, .5f, .7f, 500, Utils.ConstantCurve(500), .10f, Utils.ConstantCurve(0), 0, c, .05f, a, a, a, a, false, 1);

            a = new Curve();
            a.Keys.Add(new CurveKey(0, 0));
            a.Keys.Add(new CurveKey(.3f, .5f));
            a.Keys.Add(new CurveKey(.7f, .5f));
            a.Keys.Add(new CurveKey(1, 0));
            Curve preMultColor = new Curve();
            preMultColor.Keys.Add(new CurveKey(0, 1));
            preMultColor.Keys.Add(new CurveKey(.7f, 1));
            preMultColor.Keys.Add(new CurveKey(1, 0));
            fire = new ParticleSystem(Global.Textures["Fire"], new List<Vector2>(), 0, (float)Math.PI * 2, .5f, 1f, 10, Utils.ConstantCurve(100), .10f, Utils.ConstantCurve(0), 0, Utils.ConstantCurve(1), .05f, preMultColor, preMultColor, preMultColor, a, true, 1);
            explosions = new ParticleSystem(Global.Textures["Fire"], new List<Vector2>(), 0, (float)Math.PI * 2, 1f, 2f, 500, Utils.ConstantCurve(500), .10f, Utils.ConstantCurve(0), 0, Utils.ConstantCurve(1), .05f, preMultColor, preMultColor, preMultColor, a, true, 10);

            hoseSound.IsLooped = true;
            fireSound.IsLooped = true;
            fireSound.Volume = .5f;
            fireSound.Play();
            PlayVictimCount();

            _showMiniMap = true;
            camera = new Camera2D();
            this.viewport = viewport;
        }