Ejemplo n.º 1
0
        // * Indlæser diverse animationer STATISK (kaldes af GameController) så de ikke genindlæses i hver instans
        public static void InitializeGraphics()
        {
            Animations = new Dictionary<string, GameSprite>();
            string imageRoot = GameController.imageRoot + "/jeep";

            // * Flydende bevægelsesanimationer for en jeep
            List<string> directionDirs = new List<string>(8);
            directionDirs.Add("up-upright");
            directionDirs.Add("upright-right");
            directionDirs.Add("right-downright");
            directionDirs.Add("downright-down");
            directionDirs.Add("down-downleft");
            directionDirs.Add("downleft-left");
            directionDirs.Add("left-upleft");
            directionDirs.Add("upleft-up");

            foreach(string direction in directionDirs)
            {
                GameSprite moveSprite = new GameSprite();
                List<GameSprite> sprites = new List<GameSprite>();
                for(int i = 1; i <= 5; i++)
                {
                    string imagePath = imageRoot + "/" + direction + "/jeep " + i + ".png";
                    if(File.Exists(imagePath))
                    {
                        SpriteImage spriteImg = new SpriteImage(imagePath, Color.Transparent);
                        SpriteFrame spriteFrame = new SpriteFrame(spriteImg, 5);
                        moveSprite.AddFrame(spriteFrame);
                    }
                    else
                        throw new FileNotFoundException("404 on " + imagePath);
                }
                Animations.Add("drive_" + direction, moveSprite);
            }
        }
Ejemplo n.º 2
0
        public MapBackground(Size mapSize, Size tileSize)
        {
            IsSelectable = false;

            // * Opret en statisk baggrund baseret på de forskellige tiles der er til rådighed
            string tempFile = GameController.imageRoot + "/bg.png";
            if(File.Exists(tempFile) == false)
            {
                Bitmap bgBitmap = new Bitmap(mapSize.Width * tileSize.Width, mapSize.Height * tileSize.Height);
                Graphics graphic = Graphics.FromImage(bgBitmap);

                // * Lav ét stort billede istedet for mange små -> meget bedre performance
                Random rand = new Random();
                int bitmapTileWidth = 24, bitmapTileHeight = 24;
                for(int y = 0; y < mapSize.Height; y++)
                {
                    for(int x = 0; x < mapSize.Width; x++)
                    {
                        graphic.DrawImage(
                            new Bitmap(GameController.imageRoot + "/tiles/green/" + rand.Next(1, 16) + ".png"),
                            x * tileSize.Width, y * tileSize.Height, bitmapTileWidth, bitmapTileHeight
                        );

                        // * Lav lidt huller i jorden, så det ser federe ud, 1/20 chance per tile
                        if(rand.Next(1, 20) == 1)
                        {
                            string path = String.Format(GameController.imageRoot + "/craters/cr1 {0:000}.png", rand.Next(0, 4));
                            graphic.DrawImage(
                                new Bitmap(path),
                                x * tileSize.Width, y * tileSize.Height, bitmapTileWidth, bitmapTileHeight
                            );
                        }
                    }
                }

                bgBitmap.Save(tempFile, System.Drawing.Imaging.ImageFormat.Png);
            }

            SpriteFrame bgFrame = new SpriteFrame(
                new SpriteImage(tempFile,
                Color.FromArgb(255, 255, 255)),
            1);

            GameSprite bgSprite = new GameSprite();
            bgSprite.AddFrame(bgFrame);

            AddSprite("background", bgSprite);

            SetSprite("background");

            // * Som udgangs er starter et map selvf. i (0, 0)
            this.WorldPosition = new Point(0, 0);

            this.ZIndex = Int32.MinValue; // * Forsøg altid at ligge bagerst
        }
Ejemplo n.º 3
0
        // * Indlæser diverse animationer STATISK (kaldes af GameController) så de ikke genindlæses i hver instans
        public static void InitializeGraphics()
        {
            Animations = new Dictionary<string, GameSprite>();
            string rifleRoot = GameController.imageRoot + "/rifle_infantry";

            List<string> directionDirs = new List<string>(8);
            directionDirs.Add("up");
            directionDirs.Add("upright");
            directionDirs.Add("right");
            directionDirs.Add("downright");
            directionDirs.Add("down");
            directionDirs.Add("downleft");
            directionDirs.Add("left");
            directionDirs.Add("upleft");

            foreach(string direction in directionDirs)
            {
                GameSprite runSprite = new GameSprite();
                List<GameSprite> sprites = new List<GameSprite>();
                for(int i = 1; i <= 6; i++)
                {
                    string imagePath = rifleRoot + "/run/" + direction + "/" + i + ".png";
                    if(File.Exists(imagePath))
                    {
                        SpriteImage spriteImg = new SpriteImage(imagePath, Color.Transparent);
                        SpriteFrame spriteFrame = new SpriteFrame(spriteImg, 5);
                        runSprite.AddFrame(spriteFrame);
                    }
                    else
                        throw new FileNotFoundException("404 on " + imagePath);
                }
                Animations.Add("run_" + direction, runSprite);
            }

            GameSprite dieSprite = new GameSprite();
            // * Gentag ikke, afspil kun død én gang,
            // * hvorefter IsDonePlaying angiver om vi officielt kan slette enheden
            dieSprite.RepeatCount = 0;
            for(int i = 1; i <= 7; i++)
            {
                string imagePath = rifleRoot + "/die/right/" + i + ".png";
                if(File.Exists(imagePath))
                {
                    SpriteImage spriteImg = new SpriteImage(imagePath, Color.Transparent);
                    SpriteFrame spriteFrame = new SpriteFrame(spriteImg, 5);
                    dieSprite.AddFrame(spriteFrame);
                }
                else
                    throw new FileNotFoundException("404 on " + imagePath);
            }
            Animations.Add("die_right", dieSprite);

            GameSprite standSprite = new GameSprite();
            for(int i = 1; i <= 1; i++)
            {
                string imagePath = rifleRoot + "/stand/right.png";
                if(File.Exists(imagePath))
                {
                    SpriteImage spriteImg = new SpriteImage(imagePath, Color.Transparent);
                    SpriteFrame spriteFrame = new SpriteFrame(spriteImg, 5);
                    standSprite.AddFrame(spriteFrame);
                }
                else
                    throw new FileNotFoundException("404 on " + imagePath);
            }
            Animations.Add("stand_right", standSprite);

            foreach(string direction in directionDirs)
            {
                GameSprite attackSprite = new GameSprite();
                attackSprite.RepeatCount = 0;
                for(int i = 1; i <= 8; i++)
                {
                    string imagePath = rifleRoot + "/attack/" + direction + "/" + i + ".png";
                    if(File.Exists(imagePath))
                    {
                        SpriteImage spriteImg = new SpriteImage(imagePath, Color.Transparent);
                        SpriteFrame spriteFrame = new SpriteFrame(spriteImg, 5);
                        attackSprite.AddFrame(spriteFrame);
                    }
                    else
                        throw new FileNotFoundException("404 on " + imagePath);
                }
                Animations.Add("attack_" + direction, attackSprite);
            }

            GameSprite piffSprite = new GameSprite();
            piffSprite.RepeatCount = 0;
            for(int i = 0; i <= 3; i++)
            {
                string imagePath = GameController.resourceRoot + "/images/gunfire/piffpiff " + i + ".png";
                if(File.Exists(imagePath))
                {
                    SpriteImage spriteImg = new SpriteImage(imagePath, Color.Transparent);
                    SpriteFrame spriteFrame = new SpriteFrame(spriteImg, 5);
                    piffSprite.AddFrame(spriteFrame);
                }
                else
                    throw new FileNotFoundException("404 on " + imagePath);
            }
            Animations.Add("piff", piffSprite);
        }
Ejemplo n.º 4
0
        // * Indlæser diverse animationer STATISK (kaldes af GameController) så de ikke genindlæses i hver instans
        public static void InitializeGraphics()
        {
            Animations = new Dictionary<string, GameSprite>();
            string barracksRoot = GameController.imageRoot + "/barracks";

            GameSprite constructSprite = new GameSprite();
            constructSprite.RepeatCount = 0;
            for(int i = 0; i <= 12; i++)
            {
                string imagePath = barracksRoot + "/make/barrmake " + i + ".png";
                if(File.Exists(imagePath))
                {
                    SpriteImage spriteImg = new SpriteImage(imagePath, Color.Transparent);
                    SpriteFrame spriteFrame = new SpriteFrame(spriteImg, 5);
                    constructSprite.AddFrame(spriteFrame);
                }
                else
                    throw new FileNotFoundException("404");
            }
            Animations.Add("make", constructSprite);
        }
Ejemplo n.º 5
0
 /// <summary>
 /// Tilføjer en kopi af den angivne sprite til entiteten. Spriten kan herefter bruges vha. SetSprite(spriteName)
 /// </summary>
 /// <param name="spriteName">Opslagsnavn på spriten</param>
 /// <param name="sprite">Reference til den sprite der skal kopieres</param>
 public void AddSprite(string spriteName, GameSprite sprite)
 {
     this.sprites.Add(spriteName, sprite.Clone());
 }