From 0e81f8608e79446ee053790a82dd47a63956dcc2 Mon Sep 17 00:00:00 2001 From: Booklordofthedings Date: Sat, 11 May 2024 17:02:07 +0200 Subject: [PATCH] initial commit --- BeefProj.toml | 6 +++ LICENSE | 21 ++++++++++ example.png | Bin 0 -> 12059 bytes readme.md | 14 +++++++ src/BrandMark.bf | 99 +++++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 140 insertions(+) create mode 100644 BeefProj.toml create mode 100644 LICENSE create mode 100644 example.png create mode 100644 readme.md create mode 100644 src/BrandMark.bf diff --git a/BeefProj.toml b/BeefProj.toml new file mode 100644 index 0000000..0c6ccec --- /dev/null +++ b/BeefProj.toml @@ -0,0 +1,6 @@ +FileVersion = 1 + +[Project] +Name = "BeefBrand" +TargetType = "BeefLib" +StartupObject = "BeefBrand.Program" diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..efa0e5f --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2022 Jannis von Hagen + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/example.png b/example.png new file mode 100644 index 0000000000000000000000000000000000000000..6e2c7993b64741e94b7084e5abdcff8a362e1c20 GIT binary patch literal 12059 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 literal 0 HcmV?d00001 diff --git a/readme.md b/readme.md new file mode 100644 index 0000000..5582647 --- /dev/null +++ b/readme.md @@ -0,0 +1,14 @@ +# BeefBrand +This program generates .bf files that contain a hardcoded version of your assets +by using the build in Generator component from corlib + +## Usage +Add the project to your Workspace. +Change your dependencies to BeefBrand. +Rightclick on your project. +Generate File. +Select BeefBrand from the dropdown. +Input the name and the path. +If relative is checked the path you input will be relative to the directory of your workspace. + +![An image of the generator window](example.png) \ No newline at end of file diff --git a/src/BrandMark.bf b/src/BrandMark.bf new file mode 100644 index 0000000..3df029f --- /dev/null +++ b/src/BrandMark.bf @@ -0,0 +1,99 @@ +using System; +using System.IO; +namespace BeefBrand +{ + class BrandMark : Compiler.Generator + { + public override String Name => "BrandMarkFile"; + + public override void Generate(String outFileName, String outText, ref Flags generateFlags) + { + generateFlags = .AllowRegenerate; + outFileName.Append(mParams["name"]); //Set the name of the file we created + + //Calculate the path of the file + String path = scope .(); //The path of the data + path.Append(mParams["path"]); + + //Load data and check for file existence + String data = scope .(); + if(File.Exists(path)) + data = File.ReadAllText(path,.. new String(),true); + else + Fail("The file at path doesnt exist"); + + String param = scope String(mParams["name"]); + String lenght = data.Length.ToString(.. scope .()); + String hex = ToHex(.. scope .(),data); + + //Change path + String p = scope .(); + for(int i = 0; i < path.Length;i++) + { + if(path[i] == '\\') + p.Append('\\'); + p.Append(path[i]); + } + + if(mParams["reload"] == bool.TrueString) + { + outText.Append( + scope $""" + using System; + static + \{ + extension BrandedAssets + \{ + public static uint8[?] {param} = Compiler.ReadBinary("{p}"); + \} + \} + """ + ); + } + else + { + outText.Append( + scope $""" + static + \{ + extension BrandedAssets + \{ + public static uint8[{lenght}] {param} = .({hex}); + \} + \} + """ + ); + } + + } + ///Create array of hex values from data String + private void ToHex(String outText, String data) + { + for(int i = 0; i < data.Length; i++) + { + outText.Append("0x"); + outText.Append( + ((uint8)data[i]).ToString(.. scope .(),"X2",null) + ); //Doing magic here + if(i+1 < data.Length) + outText.Append(','); //Add an , if its not the last object + } + } + + public override void InitUI() + { + AddEdit("name","Object Name","Asset"); + AddFilePath("path","File Path",WorkspaceDir); + AddCheckbox("reload","Autoreload",false); + } + } + + +} +static +{ + class BrandedAssets + { + //This is where the generator will add files to + } +} \ No newline at end of file