示例#1
0
        private static void RebuildAll(CancellationToken ct)
        {
            Bricks.Clear();

            using (var content = new LifContentWrapper(Source, SourcePath))
            {
                var primitiveFiles = content.GetPrimitiveFiles();
                var partIDs        = primitiveFiles.Select(x => x.PartID).Distinct();
                CurrentProgress = new ProgressInfo(partIDs.Count(), 0);

                foreach (int partID in partIDs)
                {
                    if (ct.IsCancellationRequested)
                    {
                        break;
                    }
                    try
                    {
                        var partInfo  = content.GetPart(partID);
                        var brickInfo = new BrickInfo(partInfo)
                        {
                            Validated  = true,
                            LastUpdate = DateTime.Now
                        };
                        Bricks.Add(brickInfo);
                    }
                    catch { }

                    CurrentProgress.TotalValidated++;
                }
            }
        }
示例#2
0
        private static void DifferencialRebuild(CancellationToken ct)
        {
            foreach (var brickInfo in Bricks)
            {
                if (ChangedParts.Contains(brickInfo.PartId))
                {
                    brickInfo.Validated = false;
                }
            }

            CurrentProgress = new ProgressInfo(ChangedParts.Count, 0);

            foreach (int partID in ChangedParts)
            {
                if (ct.IsCancellationRequested)
                {
                    break;
                }

                var brickInfo = GetBrick(partID);

                PartWrapper partInfo = null;
                try
                {
                    partInfo = PartWrapper.GetPartFromDirectory(SourcePath, partID, false);
                }
                catch { }

                if (brickInfo != null && partInfo == null)
                {
                    Bricks.Remove(brickInfo);
                    continue;
                }
                else if (partInfo != null)
                {
                    if (brickInfo == null)
                    {
                        brickInfo = new BrickInfo(partInfo)
                        {
                            LastUpdate = DateTime.Now,
                            Validated  = true
                        };
                        Bricks.Add(brickInfo);
                    }
                    else
                    {
                        brickInfo.UpdateInfo(partInfo);
                        brickInfo.LastUpdate = DateTime.Now;
                        brickInfo.Validated  = true;
                    }
                }

                CurrentProgress.TotalValidated++;
            }

            ChangedParts.Clear();
        }
示例#3
0
 public Square()
 {
     for (int i = 0; i < 2; i++)
     {
         for (int o = 0; o < 2; o++)
         {
             Bricks.Add(new Brick {
                 X = o, Y = i
             });
         }
     }
 }
示例#4
0
 public Border(int x, int y, int width, int height)
 {
     IsActive = false;
     for (int i = x; i < x + width; i++)
     {
         for (int o = y; o < y + height; o++)
         {
             Bricks.Add(new Brick {
                 X = i, Y = o
             });
         }
     }
 }
示例#5
0
        //incializiram vsi4ki obekti tuk i vkarvam v colectiite ,sled koeto presmqta lista s coordinati
        public void InitGame()
        {
            this.renderer.ShowStartGameScreen();


            //int Pad
            this.rebouncableObjects = new List <IRebouncable>();
            int initPadLeftPosition = (this.renderer.ScreenWidth) / 2 - GlobalConstants.padWidth / 2;
            int initPadTopPosition  = ((this.renderer.ScreenHeight) - GlobalConstants.padHeight * 2);
            var padPosition         = GameObjectsFactory.GenerateNewPosition(initPadLeftPosition, initPadTopPosition);
            var padSize             = GameObjectsFactory.GenerateNewSize(GlobalConstants.padWidth, GlobalConstants.padHeight);

            this.Pad = GameObjectsFactory.GeneratePad(padPosition, padSize);
            this.rebouncableObjects.Add(this.Pad);

            //int Ball
            this.movingObjects = new List <IMovable>();
            int initBallLeftPosition = (this.renderer.ScreenWidth) / 2;
            int initBallTopPosition  = ((this.renderer.ScreenHeight) - GlobalConstants.padHeight * (GlobalConstants.distanceFromBottomRowPad) - GlobalConstants.padHeight - GlobalConstants.ballSize);
            var ballSpeed            = GameObjectsFactory.GenerateNewPosition(GlobalConstants.BallInitSpeedLeft, GlobalConstants.BallInitSpeedTop);
            var ballPosition         = GameObjectsFactory.GenerateNewPosition(initBallLeftPosition, (initBallTopPosition));
            var ballSize             = GameObjectsFactory.GenerateNewSize(GlobalConstants.ballSize, GlobalConstants.ballSize);

            this.Ball = GameObjectsFactory.GenerateNewBall(ballPosition, ballSize, ballSpeed);
            this.movingObjects.Add(this.Ball);

            //init HighScore
            int initHighScoreLeftPosition = (this.renderer.ScreenWidth) - GlobalConstants.highScoreLeft;
            int initHighScorePosition     = GlobalConstants.distanceFromBottomRowPad;
            var highScorePosition         = GameObjectsFactory.GenerateNewPosition(initHighScoreLeftPosition, initHighScorePosition);
            var highScoreSize             = GameObjectsFactory.GenerateNewSize(GlobalConstants.highScoreWidht, GlobalConstants.highScoreHeight);

            this.HighScore = GameObjectsFactory.GenerateNewHighScore(highScorePosition, highScoreSize);


            //init Bricks
            this.bricks = new List <IDestroyable>();
            for (int j = 0; j < GlobalConstants.brickRows; j++)
            {
                for (int i = 0; i < GlobalConstants.brickCows; i++)
                {
                    var brickPosition = GameObjectsFactory.GenerateNewPosition(GlobalConstants.initBrickLeftPosition + i * GlobalConstants.brickWidth * 2,
                                                                               (GlobalConstants.initBrickTopPosition + j * GlobalConstants.brickHright * 2));
                    var brickSize = GameObjectsFactory.GenerateNewSize(GlobalConstants.brickWidth, GlobalConstants.brickHright);
                    var brick     = GameObjectsFactory.GenerateNewBrick(brickPosition, brickSize);
                    Bricks.Add(brick);
                }
            }

            CollisionDetector.GetBoundariesForDestroiableObjects(this.Bricks);
        }
示例#6
0
 public Stab()
 {
     for (int i = 0; i < 4; i++)
     {
         var b = new Brick {
             X = 0, Y = i
         };
         Bricks.Add(b);
         if (i == 1)
         {
             RotationBrick = b;
         }
     }
 }
        // Constructor
        public GameBoardViewModel()
        {
            int cols = 10;
            int rows = 30;

            for (int i = 0; i < cols; i++)
            {
                for (int j = 0; j < rows; j++)
                {
                    Bricks.Add(new BrickViewModel(
                                   i * Globals.BRICK_WIDTH,
                                   j * Globals.BRICK_HEIGHT));
                }
            }
        }
示例#8
0
 public LShape()
 {
     Bricks.Add(new Brick {
         X = 0, Y = 0
     });
     Bricks.Add(new Brick {
         X = 1, Y = 0
     });
     Bricks.Add(new Brick {
         X = 1, Y = 2
     });
     RotationBrick = new Brick {
         X = 1, Y = 1
     };
     Bricks.Add(RotationBrick);
 }
示例#9
0
        public void Add()
        {
            int x = 43;
            int y = 60;

            while (flag < 5)
            {
                if (flag == 0)
                {
                    CurrentColor = Color.Aqua;
                }
                else if (flag == 1)
                {
                    CurrentColor = Color.LightSteelBlue;
                }
                else if (flag == 2)
                {
                    CurrentColor = Color.LightPink;
                }
                else if (flag == 3)
                {
                    CurrentColor = Color.LightGoldenrodYellow;
                }
                else if (flag == 4)
                {
                    CurrentColor = Color.LightGreen;
                }
                for (int i = 0; i < 10; i++)
                {
                    Brick brick = new Brick(x, y);
                    brick.Color = CurrentColor;
                    Bricks.Add(brick);
                    x += 77;
                }

                x  = 43;
                y += 25;
                flag++;
            }
        }
示例#10
0
    public static Bricks InitBlocks(string json, Transform parentNode, bool setActive)
    {
        for (var i = parentNode.childCount - 1; i >= 0; i--)
        {
            DestroyImmediate(parentNode.transform.GetChild(i).gameObject);
        }
        var bricks       = new Bricks();
        var parentIDList = new List <List <int> >();
        var d            = JsonConvert.DeserializeObject <List <Dictionary <string, object> > >(json);

        foreach (var dict in d)
        {
            var brickID   = (int)(long)dict["id"];
            var targetPos = new Vector3(float.Parse((string)dict["transX"]), float.Parse((string)dict["transY"]),
                                        float.Parse((string)dict["transZ"]));
            var targetRot  = new Vector3(0, float.Parse((string)dict["rotY"]), 0);
            var parent_ids = ((JArray)dict["parent_ids"]).Select(p => (int)p).ToList();
            var prefab     = Resources.Load($"Prefabs/Blocks/{(string) dict["tag"]}", typeof(GameObject)) as GameObject;
            prefab.transform.position    = targetPos;
            prefab.transform.eulerAngles = targetRot;
            prefab.tag = (string)dict["tag"];
            var brickObj = Instantiate(prefab, parentNode);
            var brick    = brickObj.AddComponent <Brick>();
            brick.InitAttribute(parentNode, brickID, targetPos, targetRot);
            brickObj.SetActive(setActive);
            bricks.Add(brick);
            parentIDList.Add(parent_ids);
        }

        for (var i = 0; i < bricks.Count; i++)
        {
            foreach (var parentID in parentIDList[i])
            {
                bricks[i].AddParent(bricks[parentID]);
                bricks[parentID].AddChild(bricks[i]);
            }
        }

        return(bricks);
    }
示例#11
0
        public void Add()
        {
            int x = 42;
            int y = 60;

            while (flag < 5)
            {
                if (flag == 0)
                {
                    CurrentColor = Color.Blue;
                }
                else if (flag == 1)
                {
                    CurrentColor = Color.Aqua;
                }
                else if (flag == 2)
                {
                    CurrentColor = Color.Red;
                }
                else if (flag == 3)
                {
                    CurrentColor = Color.Yellow;
                }
                else if (flag == 4)
                {
                    CurrentColor = Color.Green;
                }

                for (int i = 0; i <= 10; i++)
                {
                    Brick brick = new Brick(x, y);
                    brick.Color = CurrentColor;
                    Bricks.Add(brick);
                    x += 65;
                }
                x  = 42;
                y += 25;
                flag++;
            }
        }
示例#12
0
 public void AddBrick(Brick b)
 {
     Bricks.Add(b);
 }
示例#13
0
        public override void Update(GameTime gameTime)
        {
            if (_random.NextDouble() < _spawnProbability && Bricks.Count < NUMBER_OF_BRICKS)
            {
                Brick brick;

                var rand = _random.Next(1, 20);

                if (rand > 16)
                {
                    brick = new BrickTwoTimesDestructable(
                        Game,
                        new Vector2(Position.X + _random.Next(0, AREA_WIDTH / BRICK_WIDTH) * BRICK_WIDTH, 0),
                        Color.AntiqueWhite,
                        1);
                }
                else if (rand > 12)
                {
                    brick = new BrickInstantDestructable(
                        Game,
                        new Vector2(Position.X + _random.Next(0, AREA_WIDTH / BRICK_WIDTH) * BRICK_WIDTH, 0),
                        Color.IndianRed,
                        1);
                }
                else
                {
                    brick = new BrickNonDestructable(
                        Game,
                        new Vector2(Position.X + _random.Next(0, AREA_WIDTH / BRICK_WIDTH) * BRICK_WIDTH, 0),
                        Color.Gray,
                        1);
                }

                Bricks.Add(brick);
            }


            for (int i = Bricks.Count - 1; i >= 0; i--)
            {
                // Raakt een blokje de onderkant van de BrickArea?
                // TODO oplossing maken als de blokjes bovenop de Brickarea gestapeld worden.
                if (!BrickArea.Contains(Bricks[i].Bounds))
                {
                    Bricks[i].Position = new Vector2(Bricks[i].Position.X, AREA_HEIGHT - BRICK_HEIGHT);
                    Bricks[i].Moveable = false;
                }

                // Als een blokje bovenop een ander blokje valt moet deze op de plek net boven het blokje worden geplaatst.
                for (int collBrick = Bricks.Count - 1; collBrick >= 0; collBrick--)
                {
                    if (Bricks[i].Bounds.Intersects(Bricks[collBrick].Bounds) && Bricks[i].Position.Y < Bricks[collBrick].Position.Y)
                    {
                        Bricks[i].Position = new Vector2(Bricks[i].Position.X, Bricks[collBrick].Position.Y - BRICK_HEIGHT - 2);
                        // Als het blokje bovenop gestapeld wordt en dus buiten de brickArea valt moet deze helemaal weggehaald worden
                        // Deze kan dan opnieuw gespawnd gaan worden.
                        if (Bricks[i].Position.Y < 0)
                        {
                            Bricks[i].Dispose();
                            Bricks[i] = null;
                            Bricks.Remove(Bricks[i]);
                        }
                        break;
                    }
                }
            }

            base.Update(gameTime);
        }
示例#14
0
        private void LoadFromXml(XDocument document)
        {
            var rootElem = document.Root;

            if (rootElem.Name != "LXFML")
            {
                throw new InvalidDataException();
            }
            rootElem.TryGetIntAttribute("versionMajor", out int vMaj);
            rootElem.TryGetIntAttribute("versionMinor", out int vMin);
            FileVersion = new VersionInfo(vMaj, vMin);

            if (rootElem.HasElement("Meta", out XElement metaElem))
            {
                foreach (var annotationElem in metaElem.Elements("Annotation"))
                {
                    var    annotationAttr = annotationElem.FirstAttribute;
                    string annotationName = annotationAttr.Name.LocalName;
                    string value          = annotationAttr.Value;
                    //bool handled = true;

                    switch (annotationName)
                    {
                    case "aliases":
                        var aliases = value.Split(';');
                        for (int i = 0; i < aliases.Length; i++)
                        {
                            if (int.TryParse(aliases[i], out int aliasID))
                            {
                                Aliases.Add(aliasID);
                            }
                        }
                        break;

                    case "designname":
                        Name = value;
                        break;

                    case "maingroupid":
                        if (MainGroup == null)
                        {
                            MainGroup = new MainGroup();
                        }
                        MainGroup.ID = int.Parse(value);
                        break;

                    case "maingroupname":
                        if (MainGroup == null)
                        {
                            MainGroup = new MainGroup();
                        }
                        MainGroup.Name = value;
                        break;

                    case "platformid":
                        if (Platform == null)
                        {
                            Platform = new Platform();
                        }
                        Platform.ID = int.Parse(value);
                        break;

                    case "platformname":
                        if (Platform == null)
                        {
                            Platform = new Platform();
                        }
                        Platform.Name = value;
                        break;
                        //default:
                        //    handled = false;
                        //    break;
                    }

                    //if (!handled)
                    //    ExtraAnnotations.Add(annotationName, value);
                }
            }

            Bricks.Clear();
            if (rootElem.HasElement("Bricks", out XElement bricksElem))
            {
                foreach (var brickElem in bricksElem.Elements("Brick"))
                {
                    var brick = new Brick();
                    brick.LoadFromXml(brickElem);
                    Bricks.Add(brick);
                }
            }
            if (rootElem.HasElement("Scene", out XElement sceneElem))
            {
                foreach (var partElem in sceneElem.Descendants("Part"))
                {
                    var brick = new Brick();
                    brick.LoadFromXml(partElem);
                    Bricks.Add(brick);
                }
            }
            if (document.Root.HasAttribute("name"))
            {
                ID = document.Root.ReadAttribute("name", 0);
            }

            if (ID == 0 && Aliases.Any())
            {
                ID = Aliases.First();
            }
        }
示例#15
0
    public void LoadMap()
    {
        string alertLoad;

        try
        {
            if (!File.Exists(fileDefault))
            {
                alertLoad = "Map not found!";
                fontAlert =
                    SdlTtf.TTF_RenderText_Solid(font20.GetFontType(),
                                                alertLoad, white);
                hardware.WriteText(fontAlert, XMap, YMAP);
            }
            StreamReader MapDefault =
                new StreamReader(fileDefault);
            string line;

            // Load the default map in a two-dimensional array
            do
            {
                line = MapDefault.ReadLine();
                if (line != null)
                {
                    characters = line.ToCharArray();
                    map[row]   = new char[WIDTH];
                    for (int i = 0; i < characters.Length; i++)
                    {
                        map[row][i] = characters[i];
                    }
                    row++;
                }
            } while (line != null);
            MapDefault.Close();
        }
        catch (PathTooLongException) {}
        catch (IOException e)
        {
            Console.WriteLine("I/O ERROR: " + e.Message);
        }
        catch (Exception e)
        {
            Console.WriteLine("ERROR: " + e.Message);
        }

        /* Operation without file, directly from array
         * for (int height = 0; height < map.Length; height++)
         * {
         *  map[height] = new char[WIDTH];
         *  for (int width = 0; width < map[height].Length; width++)
         *  {
         *      if (height == 0 || height == (map.Length-1) ||
         *          width == (map[height].Length-1) || width == 0)
         *          map[height][width] = 'B';
         *      else
         *          map[height][width] = ' ';
         *  }
         * }*/

        for (int i = 0; i < map.Length; i++)
        {
            for (int j = 0; j < map[i].Length; j++)
            {
                if (map[i][j] == 'B' || map[i][j] == 'b')
                {
                    Bricks.Add(new Brick((short)(j * Sprite.SPRITE_WIDTH),
                                         (short)(i * Sprite.SPRITE_HEIGHT)));
                }
                if (map[i][j] == 'D' || map[i][j] == 'd')
                {
                    BricksDestroyable.Add(new BrickDestroyable((short)(j * Sprite.SPRITE_WIDTH),
                                                               (short)(i * Sprite.SPRITE_HEIGHT)));
                }
            }
        }
    }
示例#16
0
    public override void Show()
    {
        hardware.ClearScreen();
        hardware.DrawImage(imgFloor);
        fontName = SdlTtf.TTF_RenderText_Solid(font32.GetFontType(),
                                               len.Change(option, 21), yellow);
        hardware.WriteText(fontName, 150, 150);
        hardware.UpdateScreen();
        bool escPressed = false;

        level = new Level(fileDefault);
        MapName();
        LoadMap();

        do
        {
            hardware.ClearScreen();
            hardware.DrawImage(imgFloor);
            hardware.DrawImage(imgMap);
            fontCursor = SdlTtf.TTF_RenderText_Solid(font16.GetFontType(),
                                                     len.Change(option, 9), yellow);
            hardware.WriteText(fontCursor, 425, 675);
            fontSave = SdlTtf.TTF_RenderText_Solid(font16.GetFontType(),
                                                   len.Change(option, 8), yellow);
            hardware.WriteText(fontSave, 63, 670);
            hardware.DrawImage(imgCursor);

            foreach (Brick brick in Bricks)
            {
                hardware.DrawSprite(Sprite.spritesheet,
                                    (short)(brick.X - level.XMap),
                                    (short)(brick.Y - level.YMap),
                                    brick.SpriteX, brick.SpriteY,
                                    Sprite.SPRITE_WIDTH,
                                    Sprite.SPRITE_HEIGHT);
            }

            foreach (BrickDestroyable bdes in BricksDestroyable)
            {
                hardware.DrawSprite(Sprite.spritesheet,
                                    (short)(bdes.X - level.XMap),
                                    (short)(bdes.Y - level.YMap),
                                    bdes.SpriteX, bdes.SpriteY,
                                    Sprite.SPRITE_WIDTH,
                                    Sprite.SPRITE_HEIGHT);
            }

            int keyPressed = hardware.KeyPressed();
            switch (keyPressed)
            {
            case Hardware.KEY_UP:
                if (cursorY > 1)
                {
                    cursorY--;
                    if (cursorYGrafic > 40)
                    {
                        cursorYGrafic -= 40;
                    }
                    imgCursor.MoveTo(cursorXGrafic, cursorYGrafic);
                }
                break;

            case Hardware.KEY_DOWN:
                if (cursorY < 15)
                {
                    cursorY++;
                    if (cursorYGrafic < 560)
                    {
                        cursorYGrafic += 40;
                    }
                    imgCursor.MoveTo(cursorXGrafic, cursorYGrafic);
                }
                break;

            case Hardware.KEY_LEFT:
                if (cursorX > 1)
                {
                    cursorX--;
                    if (cursorXGrafic > 40)
                    {
                        cursorXGrafic -= 40;
                    }
                    imgCursor.MoveTo(cursorXGrafic, cursorYGrafic);
                }
                break;

            case Hardware.KEY_RIGHT:
                if (cursorX < 21)
                {
                    cursorX++;
                    if (cursorXGrafic < 760)
                    {
                        cursorXGrafic += 40;
                    }
                    imgCursor.MoveTo(cursorXGrafic, cursorYGrafic);
                }
                break;

            case Hardware.KEY_B:
                if (cursorX >= 1 && cursorX <= 20 &&
                    cursorY >= 1 && cursorY <= 16)
                {
                    map[cursorY][cursorX] = 'B';
                    Bricks.Add(new Brick(cursorXGrafic, cursorYGrafic));
                }
                break;

            case Hardware.KEY_D:
                if (cursorX >= 1 && cursorX <= 20 &&
                    cursorY >= 1 && cursorY <= 16)
                {
                    map[cursorY][cursorX] = 'D';
                    BricksDestroyable.Add(new BrickDestroyable(
                                              cursorXGrafic, cursorYGrafic));
                }
                break;

            case Hardware.KEY_SPACE:
                if (cursorX >= 1 && cursorX <= 20 &&
                    cursorY >= 1 && cursorY <= 16)
                {
                    map[cursorY][cursorX] = ' ';
                }
                break;

            case Hardware.KEY_ENTER:
                CreateMap();
                break;
            }

            //Pause Game
            Thread.Sleep(16);

            if (keyPressed == Hardware.KEY_ESC)
            {
                escPressed = true;
            }

            hardware.DrawImage(imgCursor);
            hardware.UpdateScreen();
        } while (!escPressed);
    }