Пример #1
0
        public void LoadMap(int curMap)
        {
            Factory.ClearUnits();
            Bitmap bmp = Maps[curMap];

            for (int y = 0; y < bmp.Height; y++)
            {
                Factory.SetHiddenWall(new PointF(-1, y));
                Factory.SetHiddenWall(new PointF(bmp.Height, y));
            }
            for (int x = 0; x < bmp.Width; x++)
            {
                Factory.SetHiddenWall(new PointF(x, -1));
                Factory.SetHiddenWall(new PointF(x, bmp.Width));
            }

            actor = new Actor();
            Factory.RegistrNewUnit(actor);

            for (int y = 0; y < bmp.Height; y++)
            {
                for (int x = 0; x < bmp.Width; x++)
                {
                    string cell    = bmp.GetPixel(x, y).Name;
                    PointF CellPos = new PointF(x, y);

                    if (x == 0 && y == 0)
                    {
                        cell = bmp.GetPixel(0, 1).Name;
                    }

                    switch (cell)
                    {
                    case "ff000000":
                        Factory.SetWall(CellPos);
                        break;

                    case "ffff0000":
                        StartPos = CellPos;
                        break;

                    case "ff00ff00":
                        Factory.SetExitArea(CellPos);
                        break;

                    case "ffffff00":
                        Factory.SetBaseEnemy(CellPos);
                        break;

                    case "ff0000ff":
                        Factory.SetDecal(CellPos);
                        break;

                    case "ffff00ff":
                        Factory.SetDmgArea(CellPos);
                        break;
                    }
                }
            }
            bg = bmp.GetPixel(0, 0);

            Inform.Set_Pos(new PointF());

            actor.Set_Pos(StartPos);
            actor.Set_Sprite(new SquareSprite(PointOp.Mul(CellSize, 0.5f)));
            actor.Set_Shape(new SquareShape(0.5f));
            actor.Set_Speed(0.12f);

            GameIdle = true;
        }