Esempio n. 1
0
        public Turret(Textures.ID id, ResourceHolder resources, Tank tank) :
            base(id, resources)
        {
            // Задаем параметры турели
            this.tank     = tank;
            waterPressure = minWaterPressure;
            waterCapacity = maxWaterCapacity - 3;
            up            = false;
            weaponReady   = false;

            // Создаем полоску для указания направления турели
            direction = new RectangleShape(new Vector2f(2, 32));
            Utilities.CenterOrigin(direction, 0, 32);
            TurretMoved += delegate(object sender, MoveTurretEventArgs e)
            {
                direction.Position = e.newPosition;
            };
            TurretRotated += delegate(object sender, RotateTurretEventArgs e)
            {
                direction.Rotation = e.newRotation;
            };
            TurretUp += delegate(object sender, UpTurretEventArgs e)
            {
                direction.FillColor = Color.Blue;
            };
            TurretDown += delegate(object sender, DownTurretEventArgs e)
            {
                direction.FillColor = Color.Red;
            };

            // Выставляем Origin в центр картинки
            Utilities.CenterOrigin(sprite);
        }
Esempio n. 2
0
        public Tank(Textures.ID idTank, Textures.ID idTurret, ResourceHolder resources, TankColor color) :
            base(idTank, resources)
        {
            // Создаем турель (башню) танка
            turret = new Turret(idTurret, resources, this);

            // Определяем цвет танка
            this.color = color;

            // Определяем номер танка
            number                  = new Text(((int)color + 1).ToString(), resources.GetFont(Fonts.ID.Sansation), 20);
            number.FillColor        = Color.Red;
            number.OutlineThickness = 0.75f;
            Utilities.CenterOrigin(number);
            TankMoved += delegate(object sender, MoveTankEventArgs e)
            {
                number.Position = e.newPosition + new Vector2f(Utilities.GetInstance().TILE_SIZE / 3, Utilities.GetInstance().TILE_SIZE / 3);
            };

            // Создаем полоску для указания направления танка
            direction           = new RectangleShape(new Vector2f(6, 16));
            direction.FillColor = Color.Yellow;
            Utilities.CenterOrigin(direction, 0, 16);
            TankMoved += delegate(object sender, MoveTankEventArgs e)
            {
                direction.Position = e.newPosition;
            };
            TankRotated += delegate(object sender, RotateTankEventArgs e)
            {
                direction.Rotation = sprite.Rotation;
            };

            // Выставляем Origin в центр картинки
            Utilities.CenterOrigin(sprite);
        }
Esempio n. 3
0
        public Wind(Textures.ID id, ResourceHolder resources, string parameters)
            : base(id, resources)
        {
            settings     = parameters.Split();
            currentCycle = 0;
            cycles       = settings.Length / 3;

            direction = ParseDirection(settings[currentCycle * 3 + 0]);
            power     = int.Parse(settings[currentCycle * 3 + 1]);
            time      = int.Parse(settings[currentCycle * 3 + 2]);

            // Устанавливаем параметры ветра для отображения на карте
            Utilities.CenterOrigin(sprite);
            sprite.Position = new Vector2f(Utilities.GetInstance().TILE_SIZE *Utilities.GetInstance().WIDTH_TILE_COUNT - Utilities.GetInstance().TILE_SIZE * 1.0f,
                                           Utilities.GetInstance().TILE_SIZE *Utilities.GetInstance().HEIGHT_TILE_COUNT - Utilities.GetInstance().TILE_SIZE * 0.5f);
            SetRotation();

            powerText          = new Text(power.ToString(), resources.GetFont(Fonts.ID.Sansation), 20);
            powerText.Position = new Vector2f(Utilities.GetInstance().TILE_SIZE *Utilities.GetInstance().WIDTH_TILE_COUNT - Utilities.GetInstance().TILE_SIZE * 1.75f,
                                              Utilities.GetInstance().TILE_SIZE *Utilities.GetInstance().HEIGHT_TILE_COUNT - Utilities.GetInstance().TILE_SIZE * 0.5f);
            powerText.FillColor        = Color.Blue;
            powerText.OutlineThickness = 0.25f;
            Utilities.CenterOrigin(powerText);

            timeText          = new Text(time.ToString(), resources.GetFont(Fonts.ID.Sansation), 20);
            timeText.Position = new Vector2f(Utilities.GetInstance().TILE_SIZE *Utilities.GetInstance().WIDTH_TILE_COUNT - Utilities.GetInstance().TILE_SIZE * 0.25f,
                                             Utilities.GetInstance().TILE_SIZE *Utilities.GetInstance().HEIGHT_TILE_COUNT - Utilities.GetInstance().TILE_SIZE * 0.5f);
            timeText.FillColor        = Color.Blue;
            timeText.OutlineThickness = 0.25f;
            Utilities.CenterOrigin(timeText);
        }
        public CoordinateSystem(uint width, uint height, ResourceHolder resources)
        {
            this.width  = width;
            this.height = height;

            text                  = new Text(string.Empty, resources.GetFont(Fonts.ID.Sansation), 12);
            text.FillColor        = Color.Black;
            text.OutlineThickness = 0.2f;
        }
Esempio n. 5
0
        public Terrain(List <GameObject> objects, ResourceHolder resources, Wind wind)
        {
            trees     = new List <Tree>();
            houses    = new List <House>();
            lakes     = new List <Lake>();
            rocks     = new List <Rock>();
            this.wind = wind;

            foreach (GameObject item in objects)
            {
                // Создаем деревья
                if (item.name == "tree")
                {
                    Tree tree = new Tree(Textures.ID.Tree, resources);
                    tree.Position = new Vector2f(item.rect.Left + Utilities.GetInstance().TILE_SIZE / 2, item.rect.Top - Utilities.GetInstance().TILE_SIZE / 2);
                    if (item.GetPropertyBool("burns"))
                    {
                        // TODO: Такое себе место (чтобы подожглось, нужно сделать так)
                        tree.state.currentTimeToSpread = TreeState.timeToSpread;
                        tree.Fire(1);
                    }
                    tree.SetHitpoints(item.GetPropertyInt("hitpoints"));
                    trees.Add(tree);
                }

                // Создаем дома
                if (item.name == "house")
                {
                    House house = new House(Textures.ID.House, resources);
                    house.Position = new Vector2f(item.rect.Left + Utilities.GetInstance().TILE_SIZE / 2, item.rect.Top - Utilities.GetInstance().TILE_SIZE / 2);
                    if (item.GetPropertyBool("burns"))
                    {
                        // TODO: Такое себе место (чтобы подожглось, нужно сделать так)
                        house.state.currentTimeToSpread = house.state.timeToSpread;
                        house.Fire(1);
                    }
                    house.SetHitpoints(item.GetPropertyInt("hitpoints"));
                    houses.Add(house);
                }

                // Создаем озера
                if (item.name == "lake")
                {
                    Lake lake = new Lake(Textures.ID.Lake, resources);
                    lake.Position = new Vector2f(item.rect.Left + Utilities.GetInstance().TILE_SIZE / 2, item.rect.Top - Utilities.GetInstance().TILE_SIZE / 2);
                    lakes.Add(lake);
                }

                // Создаем скалы
                if (item.name == "rock")
                {
                    Rock rock = new Rock(Textures.ID.Rock, resources);
                    rock.Position = new Vector2f(item.rect.Left + Utilities.GetInstance().TILE_SIZE / 2, item.rect.Top - Utilities.GetInstance().TILE_SIZE / 2);
                    rocks.Add(rock);
                }
            }
        }
Esempio n. 6
0
        public Tree(Textures.ID idTree, ResourceHolder resources) :
            base(idTree, resources)
        {
            state = new NormalTreeState();

            flame            = new Flame(Textures.ID.Fire, resources);
            burnedTreeSprite = new Sprite(resources.GetTexture(Textures.ID.BurnedTree));

            // Количество жизней дерева
            hitPoints                  = new Text(state.hitPoints.ToString(), resources.GetFont(Fonts.ID.Sansation), 12);
            hitPoints.FillColor        = Color.Blue;
            hitPoints.OutlineThickness = 0.5f;
            Utilities.CenterOrigin(hitPoints);
            hitPoints.Position = sprite.Position + new Vector2f(Utilities.GetInstance().TILE_SIZE / 3, Utilities.GetInstance().TILE_SIZE / 3);

            Utilities.CenterOrigin(burnedTreeSprite);
            Utilities.CenterOrigin(sprite);
        }
Esempio n. 7
0
        private void LoadResources()
        {
            try
            {
                resources = new ResourceHolder();

                // Загружаем текстуры
                resources.LoadTexture(Textures.ID.House, "Media/Textures/House.png");
                resources.LoadTexture(Textures.ID.BurnedHouse, "Media/Textures/BurnedHouse.png");
                resources.LoadTexture(Textures.ID.Fire, "Media/Textures/Fire.png");
                resources.LoadTexture(Textures.ID.RedTank, "Media/Textures/RedTank.png");
                resources.LoadTexture(Textures.ID.RedTurret, "Media/Textures/RedTurret.png");
                resources.LoadTexture(Textures.ID.BlueTank, "Media/Textures/BlueTank.png");
                resources.LoadTexture(Textures.ID.BlueTurret, "Media/Textures/BlueTurret.png");
                resources.LoadTexture(Textures.ID.YellowTank, "Media/Textures/YellowTank.png");
                resources.LoadTexture(Textures.ID.YellowTurret, "Media/Textures/YellowTurret.png");
                resources.LoadTexture(Textures.ID.GreenTank, "Media/Textures/GreenTank.png");
                resources.LoadTexture(Textures.ID.GreenTurret, "Media/Textures/GreenTurret.png");
                resources.LoadTexture(Textures.ID.PinkTank, "Media/Textures/PinkTank.png");
                resources.LoadTexture(Textures.ID.PinkTurret, "Media/Textures/PinkTurret.png");
                resources.LoadTexture(Textures.ID.GreyTank, "Media/Textures/GreyTank.png");
                resources.LoadTexture(Textures.ID.GreyTurret, "Media/Textures/GreyTurret.png");
                resources.LoadTexture(Textures.ID.Tree, "Media/Textures/Tree.png");
                resources.LoadTexture(Textures.ID.BurnedTree, "Media/Textures/BurnedTree.png");
                resources.LoadTexture(Textures.ID.Lake, "Media/Textures/Lake.png");
                resources.LoadTexture(Textures.ID.Rock, "Media/Textures/Rock.png");
                resources.LoadTexture(Textures.ID.Wind, "Media/Textures/Wind.png");

                // Загружаем шрифты
                resources.LoadFont(Fonts.ID.Sansation, "Media/Fonts/Sansation.ttf");
            }
            catch (Exception)
            {
                throw new Exception("Не удалось загрузить необходимые ресурсы.");
            }
        }
Esempio n. 8
0
        public Entity(Textures.ID id, ResourceHolder resources)
        {
            Texture texture = resources.GetTexture(id);

            sprite = new Sprite(texture);
        }