public void Create(string directory, string saveName)
        {
            var frontBitmap = new Bitmap(WIDTH, HEIGHT);
            var backBitmap  = new Bitmap(WIDTH, HEIGHT);

            using (var frontGraphics = Graphics.FromImage(frontBitmap))
            {
                frontGraphics.SmoothingMode     = SmoothingMode.AntiAlias;
                frontGraphics.InterpolationMode = InterpolationMode.HighQualityBicubic;
                frontGraphics.PixelOffsetMode   = PixelOffsetMode.HighQuality;
                frontGraphics.TextRenderingHint = TextRenderingHint.AntiAliasGridFit;
                using (var brush = new SolidBrush(Color.White))
                    frontGraphics.FillRectangle(brush, 0, 0, WIDTH, HEIGHT);
                using (var backGraphics = Graphics.FromImage(backBitmap))
                {
                    backGraphics.SmoothingMode     = SmoothingMode.AntiAlias;
                    backGraphics.InterpolationMode = InterpolationMode.HighQualityBicubic;
                    backGraphics.PixelOffsetMode   = PixelOffsetMode.HighQuality;
                    backGraphics.TextRenderingHint = TextRenderingHint.AntiAliasGridFit;
                    using (var brush = new SolidBrush(Color.White))
                        backGraphics.FillRectangle(brush, 0, 0, WIDTH, HEIGHT);

                    _images.ForEach(x => x.Image.Apply(frontGraphics, backGraphics, x.X, x.Y, x.BackX, x.BackY));

                    frontGraphics.Flush();
                    backGraphics.Flush();
                    frontBitmap.Save(PathX.Build(directory, saveName + "Front" + _pageNumber + ".png"), ImageFormat.Png);
                    backBitmap.Save(PathX.Build(directory, saveName + "Back" + _pageNumber + ".png"), ImageFormat.Png);
                }
            }
            frontBitmap.Dispose();
            backBitmap.Dispose();
        }
Exemple #2
0
 public override void WriteToParcel(Parcel dest, ParcelableWriteFlags flags)
 {
     base.WriteToParcel(dest, flags);
     dest.WriteInt(PathX.Count);
     dest.WriteIntArray(PathX.ToArray());
     dest.WriteIntArray(PathY.ToArray());
 }
Exemple #3
0
        public FileWriter(ConcurrentQueue <string> pendingLogs, string logFilePath)
        {
            _logFilePath = logFilePath;
            _pendingLogs = pendingLogs ?? throw new ArgumentNullException(nameof(pendingLogs));

            if (File.Exists(_logFilePath))
            {
                DateTime lastWriteTime = File.GetLastWriteTimeUtc(_logFilePath);
                DateTime appOpenTime   = DateTime.UtcNow - TimeSpan.FromSeconds(GetAppTime());

                // clear log file if it used for previous session
                if (appOpenTime > lastWriteTime)
                {
                    string prevPath = PathX.RemoveExtension(_logFilePath) + "-prev" + Path.GetExtension(_logFilePath);
                    if (File.Exists(prevPath))
                    {
                        File.Delete(prevPath);
                    }
                    File.Move(_logFilePath, prevPath);
                }
            }

            // launch 'write loop' thread
            _thread = new Thread(ThreadedWriteLoop);
            _thread.Start();
        }
Exemple #4
0
        // Restart the server on a different map in developer mode
        static void Session_DevMap_f(CmdArgs args)
        {
            var map = args[1];

            if (string.IsNullOrEmpty(map))
            {
                return;
            }
            map = PathX.StripFileExtension(map);

            // make sure the level exists before trying to change, so that a typo at the server console won't end the game handle addon packs through reloadEngine
            var s  = "maps/{map}.map";
            var ff = fileSystem.FindFile(s, true);

            switch (ff)
            {
            case FIND.NO: common.Printf($"Can't find map {s}\n"); return;

            case FIND.ADDON:
                common.Printf($"map {s} is in an addon pak - reloading\n");
                CmdArgs rl_args = new();
                rl_args.AppendArg("devmap");
                rl_args.AppendArg(map);
                cmdSystem.SetupReloadEngine(rl_args);
                return;

            default: break;
            }

            cvarSystem.SetCVarBool("developer", true);
            sessLocal.StartNewGame(map, true);
        }
Exemple #5
0
        private TmxTileSetData ReadTileset(XElement element, string subdirectory)
        {
            var source = element.AttributeToString("source", null);

            var result = new TmxTileSetData();

            if (source != null)
            {
                var path       = string.IsNullOrWhiteSpace(subdirectory) ? source : $"{subdirectory}/{source}";
                var thisSubDir = PathX.GetDirectoryName(path);

                using (var stream = contentProvider.Open(path))
                {
                    XDocument doc = XDocument.Load(stream);

                    result = ReadTileset(doc.Element("tileset"), thisSubDir);
                }
            }
            else
            {
                result.Name      = element.AttributeToString("name");
                result.TileSize  = element.AttributesToSize("tilewidth", "tileheight");
                result.TileCount = element.AttributeToInt("tilecount");
                result.Columns   = element.AttributeToInt("columns");

                ReadProperties(result.Properties, element.Element("properties"));

                var image = element.Element("image");

                result.ImageSource = PathX.NormalizePath(
                    Path.Combine(subdirectory, image.AttributeToString("source")));
                result.ImageSize = image.AttributesToSize("width", "height");

                foreach (var eTile in element.Elements("tile"))
                {
                    var id         = eTile.AttributeToInt("id");
                    var properties = eTile.Element("properties");

                    var tileData = new TmxTileData();
                    result.Tiles[id] = tileData;

                    ReadProperties(result.Tiles[id].Properties, properties);

                    var objects = eTile.Element("objectgroup");

                    foreach (var obj in objects?.Elements("object") ?? Enumerable.Empty <XElement>())
                    {
                        tileData.Collision.Add(ReadMapObjectData(obj));
                    }
                }
            }

            result.FirstTileId = element.AttributeToInt("firstgid", 1);

            return(result);
        }
Exemple #6
0
        // Opens a wave file for reading
        public int Open(string strFileName, out WaveformatEx pwfx)
        {
            pwfx = default;
            mbIsReadingFromMemory = false;

            mpbData    = null;
            mpbDataCur = 0;

            if (strFileName == null)
            {
                return(-1);
            }

            var name = strFileName;

            // note: used to only check for .wav when making a build
            name = PathX.SetFileExtension(name, ".ogg");
            if (fileSystem.ReadFile(name, out var _) != -1)
            {
                return(OpenOGG(name, out pwfx));
            }

            mpwfx = default;

            mhmmio = fileSystem.OpenFileRead(strFileName);
            if (mhmmio == null)
            {
                mdwSize = 0; return(-1);
            }
            if (mhmmio.Length <= 0)
            {
                mhmmio = null; return(-1);
            }
            if (ReadMMIO() != 0)
            {
                Close(); return(-1);
            }                                            // ReadMMIO will fail if its an not a wave file
            mfileTime = mhmmio.Timestamp;
            if (ResetFile() != 0)
            {
                Close(); return(-1);
            }

            // After the reset, the size of the wav file is mck.cksize so store it now
            mdwSize  = (int)(mck.cksize / sizeof(short));
            mMemSize = (int)mck.cksize;

            if (mck.cksize != 0xffffffff)
            {
                pwfx = mpwfx.Format; return(0);
            }
            return(-1);
        }
Exemple #7
0
        public VolumeIcon()
        {
            InitializeComponent();
            IsMuted = false;

            var dropShadowColorBinding = BindingHelper.CreateOneWayBinding(DropShadowColorProperty, this);

            BindingOperations.SetBinding(DropShadowVolume, DropShadowEffect.ColorProperty, dropShadowColorBinding);
            BindingOperations.SetBinding(DropShadowX, DropShadowEffect.ColorProperty, dropShadowColorBinding);

            var foregroundBinding = BindingHelper.CreateOneWayBinding(ForegroundProperty, this);

            PathVolume.SetBinding(Shape.FillProperty, foregroundBinding);
            PathX.SetBinding(VisibilityProperty, BindingHelper.CreateOneWayBinding(IsMutedProperty, this, new BooleanToVisibilityConverter()));
        }
Exemple #8
0
        static void Sess_WritePrecache_f(CmdArgs args)
        {
            if (args.Count != 2)
            {
                common.Printf("USAGE: writePrecache <execFile>\n"); return;
            }
            var str = args[1];

            str = PathX.DefaultFileExtension(str, ".cfg");
            var f = fileSystem.OpenFileWrite(str, "fs_configpath");

            declManager.WritePrecacheCommands(f);
            renderModelManager.WritePrecacheCommands(f);
            uiManager.WritePrecacheCommands(f);

            fileSystem.CloseFile(f);
        }
Exemple #9
0
        static void Session_TestMap_f(CmdArgs args)
        {
            var map = args[1];

            if (string.IsNullOrEmpty(map))
            {
                return;
            }
            map = PathX.StripFileExtension(map);

            cmdSystem.BufferCommandText(CMD_EXEC.NOW, "disconnect");

            var s = $"dmap maps/{map}.map";

            cmdSystem.BufferCommandText(CMD_EXEC.NOW, s);

            s = $"devmap {map}";
            cmdSystem.BufferCommandText(CMD_EXEC.NOW, s);
        }
        private static void SaveCardBack(int width, int height, string instructionsDir, JObject deck, string savePath)
        {
            var cardBack = new Bitmap(width, height);

            cardBack.WithGraphics(g =>
            {
                g.DrawImage(Image.FromFile(Path.Combine(instructionsDir, deck.GetPropertyValue("CardBackPath"))),
                            new Rectangle(0, 0, width, height),
                            new Rectangle(
                                deck.ContainsKey("CardBackTrim") ? (int)deck["CardBackTrim"] : 0,
                                deck.ContainsKey("CardBackTrim") ? (int)deck["CardBackTrim"] : 0,
                                width,
                                height),
                            GraphicsUnit.Pixel);
                g.Flush();
                var result = deck.ContainsKey("Scale") ? ResizeImage(cardBack, (int)(cardBack.Width * (decimal)deck["Scale"]), (int)(cardBack.Height * (decimal)deck["Scale"])) : cardBack;
                result.Save(PathX.Build(instructionsDir, savePath, deck.GetPropertyValue("Name") + "Back" + ".png"),
                            ImageFormat.Png);
            });
        }
        static void Go(string instructionsPath)
        {
            var instructionsDir = Path.GetDirectoryName(instructionsPath);
            var instructions    = JObjectX.FromFile(instructionsPath);
            var directions      = new Directions(((JArray)instructions["Images"]).ToObject <List <JObject> >());
            var imagesToPrint   = directions.ExtractImages(new ImageDetails(instructionsDir));
            var pageNumber      = 1;
            var pages           = new List <Page> {
                new Page(1)
            };

            imagesToPrint.ForEach(x => Enumerable.Range(0, x.Count).ForEach(_ =>
            {
                if (!pages.Last().CanAdd(x))
                {
                    pages.Add(new Page(++pageNumber));
                }
                pages.Last().Add(x);
            }));
            pages.ForEach(x => x.Create(PathX.Build(instructionsDir, instructions.GetPropertyValue("SavePath")), instructions.GetPropertyValue("SaveName")));
            imagesToPrint.ForEach(x => x.Dispose());
        }
        static void Go(string instructionsPath)
        {
            var instructionsDir = Path.GetDirectoryName(instructionsPath);
            var instructions    = JObjectX.FromFile(instructionsPath);
            var savePath        = instructions.GetPropertyValue("SavePath");
            var decks           = ((JArray)instructions["Decks"]).ToObject <List <JObject> >();

            decks.ForEach(deck =>
            {
                var cards      = new DirectoryInfo(PathX.Build(instructionsDir, deck.GetPropertyValue("Path"))).GetFiles("*.png").ToList();
                var sampleCard = Image.FromFile(cards[0].FullName);
                var width      = sampleCard.Width;
                var height     = sampleCard.Height;
                sampleCard.Dispose();
                var deckSheets = new List <List <FileInfo> >();
                for (int i = 0; i < cards.Count; i += 70)
                {
                    deckSheets.Add(cards.GetRange(i, Math.Min(70, cards.Count - i)));
                }

                for (var deckIndex = 0; deckIndex < deckSheets.Count; deckIndex++)
                {
                    var deckSheet = deckSheets[deckIndex];
                    var bitmap    = new Bitmap(width * 10, height * 7);
                    bitmap.WithGraphics(g =>
                    {
                        for (var cardIndex = 0; cardIndex < deckSheet.Count; cardIndex++)
                        {
                            using (var cardImage = Image.FromFile(deckSheet[cardIndex].FullName))
                                g.DrawImage(cardImage, new Point(cardIndex % 10 * width, (int)Math.Floor((decimal)cardIndex / 10) * height));
                        }
                        g.Flush();
                        var result = deck.ContainsKey("Scale") ? ResizeImage(bitmap, (int)(bitmap.Width * (decimal)deck["Scale"]), (int)(bitmap.Height * (decimal)deck["Scale"])) : bitmap;
                        result.Save(PathX.Build(instructionsDir, savePath, deck.GetPropertyValue("Name") + deckIndex + ".png"), ImageFormat.Png);
                    });
                }
                SaveCardBack(width, height, instructionsDir, deck, savePath);
            });
        }
Exemple #13
0
        private static void Go(string instructionsPath)
        {
            var instructionsDir      = Path.GetDirectoryName(instructionsPath);
            var instructions         = JObjectX.FromFile(instructionsPath);
            var propertyInstructions = ((JArray)instructions["Properties"]).Select(x => new PropertyInstruction((JObject)x)).ToList();
            var itemProcessor        = new JObjectBuilder(propertyInstructions);
            var spreadsheetID        = instructions.GetPropertyValue("SpreadSheetID");
            var range            = instructions.GetPropertyValue("Range");
            var unprocessedItems = GetDataFromGoogleSheets(spreadsheetID, range);
            var items            = unprocessedItems.Select(x => itemProcessor.Build(x)).ToList();

            if (instructions.ContainsKey("Sort"))
            {
                items.Sort((a, b) => a.GetPropertyValue(instructions.GetPropertyValue("Sort")).CompareTo(b.GetPropertyValue(instructions.GetPropertyValue("Sort"))));
            }
            var     jArray  = new JArray(items);
            dynamic jObject = new JObject();

            jObject.Items = jArray;
            var output = instructions.GetPropertyValue("Output");

            File.WriteAllText(PathX.Build(instructionsDir, output), jObject.ToString());
        }
Exemple #14
0
        // Loads any of the supported image types into a cannonical 32 bit format.
        // Automatically attempts to load .jpg files if .tga files fail to load.
        // *pic will be null if the load failed.
        // Anything that is going to make this into a texture would use makePowerOf2 = true, but something loading an image as a lookup table of some sort would leave it in identity form.
        // It is important to do this at image load time instead of texture load time for bump maps.
        // Timestamp may be null if the value is going to be ignored
        // If pic is null, the image won't actually be loaded, it will just find the timestamp.
        internal static void R_LoadImage(string cname, ref byte *pic, out int width, out int height, out DateTime timestamp, bool makePowerOf2)
        {
            var name = cname;

            if (pic != byteX.empty)
            {
                pic = null;
            }
            timestamp = default;
            width     = 0;
            height    = 0;

            name = PathX.DefaultFileExtension(name, ".tga");
            if (name.Length < 5)
            {
                return;
            }

            name = name.ToLowerInvariant();
            var ext = PathX.ExtractFileExtension(name);

            if (ext == "tga")
            {
                // try tga first
                LoadTGA(name, ref pic, out width, out height, out timestamp);
                if ((pic == byteX.empty) || (timestamp == default))
                {
                    LoadJPG(PathX.DefaultFileExtension(PathX.StripFileExtension(name), ".jpg"), ref pic, out width, out height, out timestamp);
                }
            }
            else if (ext == "pcx")
            {
                LoadPCX32(name, ref pic, out width, out height, out timestamp);
            }
            else if (ext == "bmp")
            {
                LoadBMP(name, ref pic, out width, out height, out timestamp);
            }
            else if (ext == "jpg")
            {
                LoadJPG(name, ref pic, out width, out height, out timestamp);
            }

            if (width < 1 || height < 1)
            {
                if (pic != byteX.empty)
                {
                    R_StaticFree(pic); pic = null;
                }
            }

            // convert to exact power of 2 sizes
            if (pic != byteX.empty && makePowerOf2)
            {
                int   w, h;
                int   scaled_width, scaled_height;
                byte *resampledBuffer;

                w = width;
                h = height;

                for (scaled_width = 1; scaled_width < w; scaled_width <<= 1)
                {
                    ;
                }
                for (scaled_height = 1; scaled_height < h; scaled_height <<= 1)
                {
                    ;
                }

                if (scaled_width != w || scaled_height != h)
                {
                    if (ImageManager.image_roundDown.Bool && scaled_width > w)
                    {
                        scaled_width >>= 1;
                    }
                    if (ImageManager.image_roundDown.Bool && scaled_height > h)
                    {
                        scaled_height >>= 1;
                    }

                    resampledBuffer = R_ResampleTexture(pic, w, h, scaled_width, scaled_height);
                    R_StaticFree(pic);
                    pic    = resampledBuffer;
                    width  = scaled_width;
                    height = scaled_height;
                }
            }
        }
Exemple #15
0
    static void GenerateFileFrom(List <SceneElement> sceneAssets)
    {
        using (var fileWithWriter = FileX.OpenFileFlushedAndReadyToWrite(GENERATED_FILE_NAME))
        {
            StreamWriter writer = fileWithWriter.StreamWriter;

            writer.Write(
                @"// THIS CODE IS GENERATED
// DO NOT MODIFY IT

using UnityEditor;
using UnityEditor.SceneManagement;

public static class SceneShortcuts
{

");
            sceneAssets.Sort((a, b) => a.Path.CompareTo(b.Path));

            int    prio       = 0;
            string lastFolder = "";
            foreach (SceneElement scene in sceneAssets)
            {
                if (ShouldSceneBeExcluded(scene.Path))
                {
                    continue;
                }


                string sceneName      = Path.GetFileNameWithoutExtension(scene.Path);
                string scenePathNoExt = PathX.RemoveExtension(scene.Path);
                string folder         = scenePathNoExt.RemoveFirst(sceneName);
                string methodName     = scenePathNoExt.Replace(' ', '_').Replace('/', '_').Replace('(', '_').Replace(')', '_');

                if (lastFolder != folder)
                {
                    prio += 1000;
                }

                string menuItemName;
                if (FLATTEN)
                {
                    menuItemName = sceneName;
                }
                else
                {
                    menuItemName = scenePathNoExt;
                    foreach (string searchFolder in SCENE_SEARCH_FOLDERS)
                    {
                        if (scenePathNoExt.StartsWith(searchFolder))
                        {
                            menuItemName = menuItemName.Remove(0, searchFolder.Length + 1);
                        }
                    }

                    foreach (var word in MENU_ITEM_STRIPPED_WORDS)
                    {
                        menuItemName = menuItemName.RemoveFirst(word);
                    }
                }

                writer.WriteLine($@"    [MenuItem(""Scene Shortcuts/{menuItemName}"", priority = {prio++})]");
                writer.WriteLine($@"    public static void {methodName}() => LoadScene(""{scene.Path}"");");
                writer.WriteLine();

                lastFolder = folder;
            }
            writer.Write(
                @"
    private static void LoadScene(string scenePath)
    {
        if (EditorSceneManager.SaveCurrentModifiedScenesIfUserWantsTo())
        {
            EditorSceneManager.OpenScene(scenePath);
        }
    }
}
");
            fileWithWriter.Dispose();
        }
    }
 public ImageToPrint(int count, int trim, string directory, string front, string back)
     : this(count, trim, Image.FromFile(PathX.Build(directory, front)), Image.FromFile(PathX.Build(directory, back)))
 {
 }