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); }
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); })); }