/// <summary>
 /// Установка массива блоков на карте
 /// </summary>
 /// <param name="points"></param>
 /// <param name="TypeBlocks"></param>
 public static void SetPointsWorldMap(Point[] points, TypeBlocks TypeBlocks)
 {
     foreach (Point OnePoint in points)
     {
         SetPointWorldMap(OnePoint, TypeBlocks);
     }
 }
Ejemplo n.º 2
0
        /// <summary>
        /// Нарисовать блок на карту
        /// </summary>
        /// <param name="X"></param>
        /// <param name="Y"></param>
        /// <param name="MapX"></param>
        /// <param name="MapY"></param>
        private static void DrawingBlock(int X, int Y, int MapX, int MapY)
        {
            //Это графический параметр, он должен нахолится в граффикс и максимум дублироваться по данным из ворда
            //надо посмотреть как оптимизировать
            if (MainWorld.GetPointChangeMap(MapX, MapY))
            {
                TypeBlocks TypeBlock  = MainWorld.GetTypeBlockMap(MapX, MapY);
                Color      BlockColor = ColorsOfBlocks.ValueDictionary[TypeBlock];
                //Можно реализовать подгрузку всех необходимых кистей заранее
                CustomBrush1 = new SolidBrush(BlockColor);
                //
                int Modifier = MaxCameraZoom / (int)CameraBaseZoom,
                    Left     = Modifier * X,
                    Right    = Modifier * (X + 1),
                    Top      = ReverseBitmapHeigth - Modifier * (Y + 1),
                    Bottom   = ReverseBitmapHeigth - Modifier * Y;
                CustomPoints    = new Point[4];
                CustomPoints[0] = new Point(Left, Bottom);
                CustomPoints[1] = new Point(Right, Bottom);
                CustomPoints[2] = new Point(Right, Top);
                CustomPoints[3] = new Point(Left, Top);


                graphics.FillPolygon(CustomBrush1, CustomPoints);
            }
        }
 /// <summary>
 /// Установка и изменение типа блока на карте с блокировкой точки изменения
 /// </summary>
 /// <param name="point"></param>
 /// <param name="TypeBlocks"></param>
 public static void SetPointWorldMap(Point point, TypeBlocks TypeBlocks)
 {
     if (point.X >= 0 && point.X < WorldWidth && point.Y >= 0 && point.Y < WorldHeight)
     {
         MapTypeBlocks[point.X, point.Y] = TypeBlocks;
         TruePointChangeMap(point.X, point.Y);
     }
 }
 /// <summary>
 /// Установка и изменение типа блока на карте с блокировкой точки изменения
 /// </summary>
 /// <param name="X"></param>
 /// <param name="Y"></param>
 /// <param name="TypeBlocks"></param>
 public static void SetPointWorldMap(int X, int Y, TypeBlocks TypeBlocks)
 {
     if (X >= 0 && X < WorldWidth && Y >= 0 && Y < WorldHeight)
     {
         MapTypeBlocks[X, Y] = TypeBlocks;
         TruePointChangeMap(X, Y);
     }
 }
Ejemplo n.º 5
0
        /// <summary>
        /// Добавить безусловно новый блок растнеия
        /// </summary>
        /// <param name="X"></param>
        /// <param name="Y"></param>
        private void AddNewBlockPlant(int X, int Y)
        {
            TypeBlocks GetBlock = MainWorld.GetTypeBlockMap(X, Y);

            if (GetBlock != TypeBlocks.Blocked)
            {
                StackBlocksPlant.Add(new BlockPlant(X, Y));
                MainWorld.SetPointWorldMap(X, Y, TypeBlocks.Plant);
            }
        }
        /// <summary>
        /// Перемещение блока на карте с проверкой
        /// </summary>
        /// <returns><code>true</code> если блок был пустым и успешно перемещён <code>false</code> блок не был перемещён</returns>
        /// <param name="X"></param>
        /// <param name="Y"></param>
        /// <param name="newX"></param>
        /// <param name="newY"></param>
        public static bool MovePointWorldMap(int X, int Y, int newX, int newY)
        {
            TypeBlocks TypeBlock = GetTypeBlockMap(newX, newY);

            if (TypeBlock == TypeBlocks.Void || TypeBlock == TypeBlocks.Air)
            {
                TypeBlocks MovedBlock = GetTypeBlockMap(X, Y);
                SetPointWorldMap(X, Y, TypeBlock);
                SetPointWorldMap(newX, newY, MovedBlock);
                return(true);
            }
            return(false);
        }
Ejemplo n.º 7
0
 /// <summary>
 /// Добавить новый блок растения по условию роста
 /// </summary>
 /// <param name="X"></param>
 /// <param name="Y"></param>
 /// <param name="OneBlockPlant"></param>
 private void AddNewBlockPlant(int X, int Y, BlockPlant OneBlockPlant)
 {
     if (OneBlockPlant.CanEnergyToGrowth)
     {
         TypeBlocks GetBlock = MainWorld.GetTypeBlockMap(X, Y);
         if (GetBlock != TypeBlocks.Blocked && (GetBlock == TypeBlocks.Void || GetBlock == TypeBlocks.Air))
         {
             OneBlockPlant.SpendEnergyToGrowth();
             StackBlocksPlant.Add(new BlockPlant(X, Y));
             MainWorld.SetPointWorldMap(X, Y, TypeBlocks.Plant);
         }
     }
 }