initial commit
This commit is contained in:
commit
0e81f8608e
5 changed files with 140 additions and 0 deletions
6
BeefProj.toml
Normal file
6
BeefProj.toml
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
FileVersion = 1
|
||||||
|
|
||||||
|
[Project]
|
||||||
|
Name = "BeefBrand"
|
||||||
|
TargetType = "BeefLib"
|
||||||
|
StartupObject = "BeefBrand.Program"
|
21
LICENSE
Normal file
21
LICENSE
Normal file
|
@ -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.
|
BIN
example.png
Normal file
BIN
example.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 12 KiB |
14
readme.md
Normal file
14
readme.md
Normal file
|
@ -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.
|
||||||
|
|
||||||
|

|
99
src/BrandMark.bf
Normal file
99
src/BrandMark.bf
Normal file
|
@ -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
|
||||||
|
}
|
||||||
|
}
|
Loading…
Add table
Reference in a new issue