Beispiel #1
0
        public ZoneDrawStatMap(IFileSystem fileSystem, SaveBitmapHelper saveBitmapHelper, MissionDataCache missionDataCache)
        {
            _fileSystem       = fileSystem;
            _saveBitmapHelper = saveBitmapHelper;
            _missionDataCache = missionDataCache;

            _actions["minerals"] = r => CreateMineralBitmaps();
            RegisterCreator("npc", CreateNPCMap);
            RegisterCreator("altitude", CreateAltitudeBitmap);
            RegisterCreator("slope", CreateSlopeBitmap);
            RegisterCreator("missionTarget", CreateMissionTargetsMap);
            RegisterCreator("decorblock", CreateDecorBlockingMap);
            RegisterCreator("electroplant", CreateElectroPlantMap);
            RegisterCreator("structures", CreateStructuresMap);
            RegisterCreator("wall", CreateWallMap);
            RegisterCreator("wallpossible", CreateWallPossibleMap);
            RegisterCreator("wallplaces", CreateWallPlaces);
            RegisterCreator("passable", () => _zone.CreatePassableBitmap(Color.White));
            RegisterCreator("islandmask", CreateIslandMaskMap);
            RegisterCreator("controlmap", CreateControlMap);
            RegisterCreator("block", CreateBlockingMap);
            RegisterCreator("plants", CreatePlantsMap);
            RegisterCreator("placemo", GenerateMissionSpots);
            RegisterCreator("validatemobjects", ValidateMissionObjectLocations);
            RegisterCreator("rndpointsonly", GenerateRandomPointsOnly);
            RegisterCreator("displayspots", DisplaySpots);
            RegisterCreator("worstspots", DrawWorstSpotsMap);
            RegisterCreator("alltargets", DrawAllTargetsOnZone);
        }
Beispiel #2
0
        private Bitmap CreateMineralsToNormalizedBitmap(MineralLayer layer)
        {
            var bitmap = _zone.CreatePassableBitmap(_passableColor);

            foreach (var node in layer.Nodes)
            {
                var maxAmount = node.GetMaxAmount();

                for (int y = node.Area.Y1; y <= node.Area.Y2; y++)
                {
                    for (int x = node.Area.X1; x <= node.Area.X2; x++)
                    {
                        var n = (double)node.GetValue(x, y) / maxAmount;
                        if (n > 0.0)
                        {
                            var c = (int)(n * 255);
                            bitmap.SetPixel(x, y, Color.FromArgb(c, 0, 0));
                        }
                    }
                }
            }

            return(bitmap.WithGraphics(g =>
            {
                var infoString = $"{layer.Type}";
                g.DrawString(infoString, new Font("Tahoma", 10), Brushes.White, 10, 10);
            }));
        }