diff --git a/1.6/Assemblies/WulaFallenEmpire.dll b/1.6/Assemblies/WulaFallenEmpire.dll
index a28dc11c..7141428c 100644
Binary files a/1.6/Assemblies/WulaFallenEmpire.dll and b/1.6/Assemblies/WulaFallenEmpire.dll differ
diff --git a/1.6/Assemblies/WulaFallenEmpire.pdb b/1.6/Assemblies/WulaFallenEmpire.pdb
new file mode 100644
index 00000000..5846c13e
Binary files /dev/null and b/1.6/Assemblies/WulaFallenEmpire.pdb differ
diff --git a/1.6/Defs/PawnKinds/PawnKinds_Wula.xml b/1.6/Defs/PawnKinds/PawnKinds_Wula.xml
index c410051b..ac4ede8d 100644
--- a/1.6/Defs/PawnKinds/PawnKinds_Wula.xml
+++ b/1.6/Defs/PawnKinds/PawnKinds_Wula.xml
@@ -219,8 +219,19 @@
Mech_WULA_Cat_Assault
Mech_WULA_Cat_Assault
+
+
+
+ Wula/Things/WULA_Assault_Cat/WULA_Cat_Thin
+ Wula/Things/WULA_Assault_Cat/AllegianceOverlays/None
+ CutoutWithOverlay
+ Graphic_Multi
+ 1.1
+
+
+
- Wula_Constructor_Cat_Weapon
+ Wula_Assault_Cat_Weapon
\ No newline at end of file
diff --git a/1.6/Defs/WulaHullDefs/WulaHullDef.xml b/1.6/Defs/WulaHullDefs/WulaHullDef.xml
new file mode 100644
index 00000000..eb51fedd
--- /dev/null
+++ b/1.6/Defs/WulaHullDefs/WulaHullDef.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+ WulaHullConfig
+
+
+
+ WulaWall
+
+
+ CutoutComplex
+
+
+ Things/Building/Linked/GravshipHull/AngledGravshipHull_northwest
+ Things/Building/Linked/GravshipHull/AngledGravshipHull_northeast
+ Things/Building/Linked/GravshipHull/AngledGravshipHull_southwest
+ Things/Building/Linked/GravshipHull/AngledGravshipHull_southeast
+ Things/Building/Linked/GravshipHull/AngledGravshipHull_Partial_northwest
+ Things/Building/Linked/GravshipHull/AngledGravshipHull_Partial_northeast
+ Things/Building/Linked/GravshipHull/AngledGravshipHull_Partial_southwest
+ Things/Building/Linked/GravshipHull/AngledGravshipHull_Partial_southeast
+
+
+
\ No newline at end of file
diff --git a/Source/WulaFallenEmpire/.gitignore b/Source/WulaFallenEmpire/.gitignore
new file mode 100644
index 00000000..93713d58
--- /dev/null
+++ b/Source/WulaFallenEmpire/.gitignore
@@ -0,0 +1,18 @@
+# Compiled output
+bin/
+obj/
+
+# Rider
+.idea/
+
+# Visual Studio
+.vs/
+*.suo
+*.user
+*.userosf
+*.sln.docstates
+
+# OS generated files
+.DS_Store
+.localized
+Thumbs.db
diff --git a/Source/WulaFallenEmpire/.vs/WulaFallenEmpire/FileContentIndex/299c3c50-9221-4905-9f8b-f9d7bba18ee3.vsidx b/Source/WulaFallenEmpire/.vs/WulaFallenEmpire/FileContentIndex/299c3c50-9221-4905-9f8b-f9d7bba18ee3.vsidx
deleted file mode 100644
index 7f5f33cd..00000000
Binary files a/Source/WulaFallenEmpire/.vs/WulaFallenEmpire/FileContentIndex/299c3c50-9221-4905-9f8b-f9d7bba18ee3.vsidx and /dev/null differ
diff --git a/Source/WulaFallenEmpire/.vs/WulaFallenEmpire/FileContentIndex/c22e1bad-5f90-4483-8bcb-f1e6d3c6413f.vsidx b/Source/WulaFallenEmpire/.vs/WulaFallenEmpire/FileContentIndex/c22e1bad-5f90-4483-8bcb-f1e6d3c6413f.vsidx
deleted file mode 100644
index ac53fde2..00000000
Binary files a/Source/WulaFallenEmpire/.vs/WulaFallenEmpire/FileContentIndex/c22e1bad-5f90-4483-8bcb-f1e6d3c6413f.vsidx and /dev/null differ
diff --git a/Source/WulaFallenEmpire/Building_Wula_DarkEnergy_Engine.cs b/Source/WulaFallenEmpire/Building_Wula_DarkEnergy_Engine.cs
index 33f49471..d10298ee 100644
--- a/Source/WulaFallenEmpire/Building_Wula_DarkEnergy_Engine.cs
+++ b/Source/WulaFallenEmpire/Building_Wula_DarkEnergy_Engine.cs
@@ -1,43 +1,59 @@
using RimWorld;
using System;
-using System.Collections.Generic;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
+using UnityEngine;
using Verse;
namespace WulaFallenEmpire
{
- [StaticConstructorOnStartup]
- public class Building_Wula_DarkEnergy_Engine : Building_GravEngine
+ // =========================================================================
+ // 1. 抽象的引擎父类 (Abstract Base Class)
+ // 它现在通过完全重写 DrawAt 方法来获得对绘制逻辑的控制权。
+ // =========================================================================
+ public abstract class Building_Wula_Engine_Base : Building_GravEngine
{
- // 子类自己的静态只读字段
- private static readonly string _childStaticValue = "Child Value";
- private static readonly CachedMaterial Wula_DarkEnergy_OrbMat = new CachedMaterial("Wula/Building/Wula_DarkEnergy_Engine_Orb", ShaderDatabase.Cutout);
+ // 契约:所有子类都必须提供一个用于绘制的能量球贴图。
+ // 这个部分保持不变。
+ protected abstract CachedMaterial OrbMat { get; }
- // 通过实例属性暴露静态值
- protected override string InstanceValue => _childStaticValue;
- private static readonly CachedMaterial OrbMat = new CachedMaterial("Wula/Building/Wula_DarkEnergy_Engine_Orb", ShaderDatabase.Cutout);
- }
- public abstract class Building_Wula_DarkEnergy_Engine_Parent : Building_GravEngine
- {
- // 受保护的抽象属性(实例级别)
- protected abstract string InstanceValue { get; }
-
- // 公共访问点
- public void PrintValue()
+ // **关键修正**: 完全重写 DrawAt 方法
+ protected override void DrawAt(Vector3 drawLoc, bool flip = false)
{
- Console.WriteLine(InstanceValue);
+ // --- 第 1 部分:复制父类的 `base.DrawAt(drawLoc, flip)` 逻辑 ---
+ // 这会负责绘制建筑本身的基础图形。
+ base.DrawAt(drawLoc, flip);
+
+ // --- 第 2 部分:复制并修改 `Building_GravEngine` 的绘制逻辑 ---
+ if (base.Spawned)
+ {
+ // 这是原版引擎的“悬浮”动画逻辑,我们将其完整保留。
+ if (Find.TickManager.TicksGame >= cooldownCompleteTick)
+ {
+ drawLoc.z += 0.5f * (1f + Mathf.Sin((float)Math.PI * 2f * (float)GenTicks.TicksGame / 500f)) * 0.3f;
+ }
+
+ // 这是原版引擎的高度微调,我们也保留。
+ drawLoc.y += 0.03658537f;
+
+ // 设置缩放,这部分也来自原版代码。
+ Vector3 s = new Vector3(def.graphicData.drawSize.x, 1f, def.graphicData.drawSize.y);
+
+ // **最终修改**: 使用我们自己的 OrbMat 属性,而不是父类的私有变量!
+ // 这使得子类可以自由决定能量球的外观。
+ Graphics.DrawMesh(MeshPool.plane10Back, Matrix4x4.TRS(drawLoc, base.Rotation.AsQuat, s), this.OrbMat.Material, 0);
+ }
}
}
- public class Child : Parent
- {
- // 子类自己的静态只读字段
- private static readonly string _childStaticValue = "Child Value";
- // 通过实例属性暴露静态值
- protected override string InstanceValue => _childStaticValue;
+ // =========================================================================
+ // 2. 具体的暗能量引擎子类 (Concrete Child Class)
+ // 这个类完全不需要修改,它已经正确地实现了父类的要求。
+ // =========================================================================
+ [StaticConstructorOnStartup]
+ public class Building_Wula_DarkEnergy_Engine : Building_Wula_Engine_Base
+ {
+ private static readonly CachedMaterial _darkEnergyOrbMat = new CachedMaterial("Wula/Building/Wula_DarkEnergy_Engine_Orb", ShaderDatabase.Cutout);
+
+ protected override CachedMaterial OrbMat => _darkEnergyOrbMat;
}
}
\ No newline at end of file
diff --git a/Source/WulaFallenEmpire/SectionLayer_WulaHull.cs b/Source/WulaFallenEmpire/SectionLayer_WulaHull.cs
new file mode 100644
index 00000000..d927ad21
--- /dev/null
+++ b/Source/WulaFallenEmpire/SectionLayer_WulaHull.cs
@@ -0,0 +1,193 @@
+using LudeonTK;
+using RimWorld;
+using UnityEngine;
+using Verse;
+
+namespace WulaFallenEmpire
+{
+ // 定义了一个数据结构,用于从XML文件中加载我们的配置。
+ public class WulaHullDef : Def
+ {
+ // 以下所有 public 字段都会由RimWorld的加载系统自动从XML同名节点中填充。
+ public ThingDef targetDef;
+ public ShaderTypeDef shaderType;
+
+ public string texPath_Corner_NW;
+ public string texPath_Corner_NE;
+ public string texPath_Corner_SW;
+ public string texPath_Corner_SE;
+ public string texPath_Diagonal_NW;
+ public string texPath_Diagonal_NE;
+ public string texPath_Diagonal_SW;
+ public string texPath_Diagonal_SE;
+
+ // 提供一个全局静态访问点,方便在代码中随时获取配置,而无需传来传去。
+ public static WulaHullDef Current => DefDatabase.GetNamed("WulaHullConfig");
+ }
+
+ // 这是核心的渲染类,继承自SectionLayer,负责在地图上绘制额外的视觉效果。
+ public class SectionLayer_WulaHull : SectionLayer
+ {
+ public enum CornerType { None, Corner_NW, Corner_NE, Corner_SW, Corner_SE, Diagonal_NW, Diagonal_NE, Diagonal_SW, Diagonal_SE }
+
+ private static readonly Vector2[] UVs = { new Vector2(0f, 0f), new Vector2(0f, 1f), new Vector2(1f, 1f), new Vector2(1f, 0f) };
+ [TweakValue("WulaHullCorners", 0f, 2f)]
+ private static float HullCornerScale = 2f;
+
+ private static CachedMaterial mat_Corner_NW, mat_Corner_NE, mat_Corner_SW, mat_Corner_SE, mat_Diagonal_NW, mat_Diagonal_NE, mat_Diagonal_SW, mat_Diagonal_SE;
+ private static readonly float cornerAltitude = AltitudeLayer.BuildingOnTop.AltitudeFor();
+ private static bool initalized;
+
+ private static readonly IntVec3[] Directions = { IntVec3.North, IntVec3.East, IntVec3.South, IntVec3.West, IntVec3.North + IntVec3.West, IntVec3.North + IntVec3.East, IntVec3.South + IntVec3.East, IntVec3.South + IntVec3.West };
+ private static bool[] tmpChecks = new bool[Directions.Length];
+
+ // 获取要使用的着色器。优先从XML配置中读取,如果未配置则使用一个安全合理的默认值。
+ private static Shader WallShader => WulaHullDef.Current.shaderType?.Shader ?? ShaderDatabase.CutoutComplex;
+
+ public override bool Visible => true;
+
+ public SectionLayer_WulaHull(Section section) : base(section)
+ {
+ // 告诉游戏,当建筑、地形等发生变化时,需要重绘我们的图层。
+ relevantChangeTypes = (ulong)MapMeshFlagDefOf.Buildings | (ulong)MapMeshFlagDefOf.Terrain | (ulong)MapMeshFlagDefOf.Things | (ulong)MapMeshFlagDefOf.Roofs;
+ }
+
+ // 这是一个性能优化技巧,确保贴图和材质只在第一次使用时被加载和创建,而不是每次重绘都加载。
+ private static void EnsureInitialized()
+ {
+ if (!initalized)
+ {
+ initalized = true;
+ WulaHullDef config = WulaHullDef.Current;
+
+ mat_Corner_NW = new CachedMaterial(config.texPath_Corner_NW, WallShader);
+ mat_Corner_NE = new CachedMaterial(config.texPath_Corner_NE, WallShader);
+ mat_Corner_SW = new CachedMaterial(config.texPath_Corner_SW, WallShader);
+ mat_Corner_SE = new CachedMaterial(config.texPath_Corner_SE, WallShader);
+ mat_Diagonal_NW = new CachedMaterial(config.texPath_Diagonal_NW, WallShader);
+ mat_Diagonal_NE = new CachedMaterial(config.texPath_Diagonal_NE, WallShader);
+ mat_Diagonal_SW = new CachedMaterial(config.texPath_Diagonal_SW, WallShader);
+ mat_Diagonal_SE = new CachedMaterial(config.texPath_Diagonal_SE, WallShader);
+ }
+ }
+
+ // 游戏引擎会定期调用这个方法来更新和重绘我们的图层。
+ public override void Regenerate()
+ {
+ ClearSubMeshes(MeshParts.All);
+ Map map = base.Map;
+ TerrainGrid terrGrid = map.terrainGrid;
+ foreach (IntVec3 item in section.CellRect)
+ {
+ if (ShouldDrawCornerPiece(item, map, terrGrid, out var cornerType, out var color))
+ {
+ CachedMaterial material = GetMaterial(cornerType);
+ IntVec3 offset = GetOffset(cornerType);
+ bool addGravshipMask = false;
+ bool addIndoorMask = IsCornerIndoorMasked(item, cornerType, map);
+ AddQuad(material.Material, item + offset, HullCornerScale, cornerAltitude, color, addGravshipMask, addIndoorMask);
+ }
+ }
+ FinalizeMesh(MeshParts.All);
+ }
+
+ // 这是整个框架的核心判断逻辑。
+ // 它检查给定的坐标,分析其周围8个方向的建筑,来决定是否需要绘制斜角,以及绘制哪种类型的斜角。
+ public static bool ShouldDrawCornerPiece(IntVec3 pos, Map map, TerrainGrid terrGrid, out CornerType cornerType, out Color color)
+ {
+ cornerType = CornerType.None;
+ color = Color.white;
+ if (pos.GetEdifice(map) != null) return false;
+ TerrainDef terrainDef = terrGrid.FoundationAt(pos);
+ if (terrainDef != null && terrainDef.IsSubstructure) return false;
+ ThingDef targetDef = WulaHullDef.Current.targetDef;
+ if (targetDef == null) { Log.ErrorOnce("WulaHullConfig has a null targetDef. Please check WulaHullDefs.xml.", 168168168); return false; }
+ for (int i = 0; i < Directions.Length; i++) { tmpChecks[i] = (pos + Directions[i]).GetEdificeSafe(map)?.def == targetDef; }
+ if (tmpChecks[0] && tmpChecks[3] && !tmpChecks[2] && !tmpChecks[1]) cornerType = (tmpChecks[4] ? CornerType.Corner_NW : CornerType.Diagonal_NW);
+ else if (tmpChecks[0] && tmpChecks[1] && !tmpChecks[2] && !tmpChecks[3]) cornerType = (tmpChecks[5] ? CornerType.Corner_NE : CornerType.Diagonal_NE);
+ else if (tmpChecks[2] && tmpChecks[1] && !tmpChecks[0] && !tmpChecks[3]) cornerType = (tmpChecks[6] ? CornerType.Corner_SE : CornerType.Diagonal_SE);
+ else if (tmpChecks[2] && tmpChecks[3] && !tmpChecks[0] && !tmpChecks[1]) cornerType = (tmpChecks[7] ? CornerType.Corner_SW : CornerType.Diagonal_SW);
+ if (cornerType == CornerType.None) return false;
+ for (int j = 0; j < 4; j++) { if (tmpChecks[j]) { color = (pos + Directions[j]).GetEdificeSafe(map).DrawColor; break; } }
+ return true;
+ }
+
+ private static CachedMaterial GetMaterial(CornerType edgeType)
+ {
+ EnsureInitialized();
+ switch (edgeType)
+ {
+ case CornerType.Corner_NW: return mat_Corner_NW;
+ case CornerType.Corner_NE: return mat_Corner_NE;
+ case CornerType.Corner_SW: return mat_Corner_SW;
+ case CornerType.Corner_SE: return mat_Corner_SE;
+ case CornerType.Diagonal_NW: return mat_Diagonal_NW;
+ case CornerType.Diagonal_NE: return mat_Diagonal_NE;
+ case CornerType.Diagonal_SW: return mat_Diagonal_SW;
+ case CornerType.Diagonal_SE: return mat_Diagonal_SE;
+ default: throw new System.ArgumentOutOfRangeException("edgeType", edgeType, null);
+ }
+ }
+
+ private static IntVec3 GetOffset(CornerType cornerType)
+ {
+ switch (cornerType)
+ {
+ case CornerType.Corner_NE: case CornerType.Diagonal_NE: return new IntVec3(0, 0, 0);
+ case CornerType.Corner_NW: case CornerType.Diagonal_NW: return new IntVec3(-1, 0, 0);
+ case CornerType.Corner_SE: case CornerType.Diagonal_SE: return new IntVec3(0, 0, -1);
+ case CornerType.Corner_SW: case CornerType.Diagonal_SW: return new IntVec3(-1, 0, -1);
+ default: return IntVec3.Zero;
+ }
+ }
+
+ private void AddQuad(Material mat, IntVec3 c, float scale, float altitude, Color color, bool addGravshipMask, bool addIndoorMask)
+ {
+ LayerSubMesh subMesh = GetSubMesh(mat);
+ AddQuad(subMesh, c.ToVector3(), scale, altitude, color);
+ if (addGravshipMask)
+ {
+ Texture2D srcTex = subMesh.material.mainTexture as Texture2D;
+ Color color2 = subMesh.material.color;
+ Material material = MaterialPool.MatFrom(srcTex, ShaderDatabase.GravshipMaskMasked, color2);
+ AddQuad(GetSubMesh(material), c.ToVector3(), scale, altitude, color);
+ }
+ if (addIndoorMask)
+ {
+ Texture2D srcTex2 = subMesh.material.mainTexture as Texture2D;
+ Color color3 = subMesh.material.color;
+ Material material2 = MaterialPool.MatFrom(srcTex2, ShaderDatabase.IndoorMaskMasked, color3);
+ AddQuad(GetSubMesh(material2), c.ToVector3(), scale, altitude, color);
+ }
+ }
+
+ private static void AddQuad(LayerSubMesh sm, Vector3 c, float scale, float altitude, Color color)
+ {
+ int count = sm.verts.Count;
+ for (int i = 0; i < 4; i++)
+ {
+ sm.verts.Add(new Vector3(c.x + UVs[i].x * scale, altitude, c.z + UVs[i].y * scale));
+ sm.uvs.Add(UVs[i % 4]);
+ sm.colors.Add(color);
+ }
+ sm.tris.Add(count);
+ sm.tris.Add(count + 1);
+ sm.tris.Add(count + 2);
+ sm.tris.Add(count);
+ sm.tris.Add(count + 2);
+ sm.tris.Add(count + 3);
+ }
+
+ private static bool IsCornerIndoorMasked(IntVec3 c, CornerType cornerType, Map map)
+ {
+ switch (cornerType)
+ {
+ case CornerType.Corner_NE: case CornerType.Diagonal_NE: if (!c.Roofed(map)) return (c + IntVec3.East).Roofed(map); return true;
+ case CornerType.Corner_NW: case CornerType.Diagonal_NW: if (!c.Roofed(map)) return (c + IntVec3.West).Roofed(map); return true;
+ case CornerType.Corner_SE: case CornerType.Diagonal_SE: if (!c.Roofed(map)) return (c + IntVec3.East).Roofed(map); return true;
+ case CornerType.Corner_SW: case CornerType.Diagonal_SW: if (!c.Roofed(map)) return (c + IntVec3.West).Roofed(map); return true;
+ default: return false;
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/Source/WulaFallenEmpire/WulaFallenEmpire.csproj b/Source/WulaFallenEmpire/WulaFallenEmpire.csproj
index 7cf9c3fe..18b8e0ba 100644
--- a/Source/WulaFallenEmpire/WulaFallenEmpire.csproj
+++ b/Source/WulaFallenEmpire/WulaFallenEmpire.csproj
@@ -1,4 +1,4 @@
-
+
@@ -17,7 +17,7 @@
true
full
false
- bin\Debug\
+ ..\..\1.6\Assemblies\
DEBUG;TRACE
prompt
4
@@ -32,7 +32,8 @@
- ..\..\..\..\RimWorldWin64_Data\Managed\Assembly-CSharp.dll
+ ..\..\..\..\..\..\common\RimWorld\RimWorldWin64_Data\Managed\Assembly-CSharp.dll
+ False
@@ -42,13 +43,19 @@
+
+ ..\..\..\..\..\..\common\RimWorld\RimWorldWin64_Data\Managed\UnityEngine.dll
+ False
+
- ..\..\..\..\RimWorldWin64_Data\Managed\UnityEngine.CoreModule.dll
+ ..\..\..\..\..\..\common\RimWorld\RimWorldWin64_Data\Managed\UnityEngine.CoreModule.dll
+ False
+
\ No newline at end of file
diff --git a/Source/WulaFallenEmpire/bin/Debug/Assembly-CSharp-firstpass.dll b/Source/WulaFallenEmpire/bin/Debug/Assembly-CSharp-firstpass.dll
deleted file mode 100644
index 574dfc50..00000000
Binary files a/Source/WulaFallenEmpire/bin/Debug/Assembly-CSharp-firstpass.dll and /dev/null differ
diff --git a/Source/WulaFallenEmpire/bin/Debug/Assembly-CSharp.dll b/Source/WulaFallenEmpire/bin/Debug/Assembly-CSharp.dll
deleted file mode 100644
index 75153410..00000000
Binary files a/Source/WulaFallenEmpire/bin/Debug/Assembly-CSharp.dll and /dev/null differ
diff --git a/Source/WulaFallenEmpire/bin/Debug/ISharpZipLib.dll b/Source/WulaFallenEmpire/bin/Debug/ISharpZipLib.dll
deleted file mode 100644
index bb15d24f..00000000
Binary files a/Source/WulaFallenEmpire/bin/Debug/ISharpZipLib.dll and /dev/null differ
diff --git a/Source/WulaFallenEmpire/bin/Debug/NAudio.dll b/Source/WulaFallenEmpire/bin/Debug/NAudio.dll
deleted file mode 100644
index decb8dd2..00000000
Binary files a/Source/WulaFallenEmpire/bin/Debug/NAudio.dll and /dev/null differ
diff --git a/Source/WulaFallenEmpire/bin/Debug/NVorbis.dll b/Source/WulaFallenEmpire/bin/Debug/NVorbis.dll
deleted file mode 100644
index 89d72143..00000000
Binary files a/Source/WulaFallenEmpire/bin/Debug/NVorbis.dll and /dev/null differ
diff --git a/Source/WulaFallenEmpire/bin/Debug/Unity.Burst.Unsafe.dll b/Source/WulaFallenEmpire/bin/Debug/Unity.Burst.Unsafe.dll
deleted file mode 100644
index ac36cfa2..00000000
Binary files a/Source/WulaFallenEmpire/bin/Debug/Unity.Burst.Unsafe.dll and /dev/null differ
diff --git a/Source/WulaFallenEmpire/bin/Debug/Unity.Burst.dll b/Source/WulaFallenEmpire/bin/Debug/Unity.Burst.dll
deleted file mode 100644
index 85a06bd4..00000000
Binary files a/Source/WulaFallenEmpire/bin/Debug/Unity.Burst.dll and /dev/null differ
diff --git a/Source/WulaFallenEmpire/bin/Debug/Unity.Collections.LowLevel.ILSupport.dll b/Source/WulaFallenEmpire/bin/Debug/Unity.Collections.LowLevel.ILSupport.dll
deleted file mode 100644
index 638e2796..00000000
Binary files a/Source/WulaFallenEmpire/bin/Debug/Unity.Collections.LowLevel.ILSupport.dll and /dev/null differ
diff --git a/Source/WulaFallenEmpire/bin/Debug/Unity.Collections.dll b/Source/WulaFallenEmpire/bin/Debug/Unity.Collections.dll
deleted file mode 100644
index 0e79734d..00000000
Binary files a/Source/WulaFallenEmpire/bin/Debug/Unity.Collections.dll and /dev/null differ
diff --git a/Source/WulaFallenEmpire/bin/Debug/Unity.Mathematics.dll b/Source/WulaFallenEmpire/bin/Debug/Unity.Mathematics.dll
deleted file mode 100644
index 4e320232..00000000
Binary files a/Source/WulaFallenEmpire/bin/Debug/Unity.Mathematics.dll and /dev/null differ
diff --git a/Source/WulaFallenEmpire/bin/Debug/Unity.TextMeshPro.dll b/Source/WulaFallenEmpire/bin/Debug/Unity.TextMeshPro.dll
deleted file mode 100644
index 45496ada..00000000
Binary files a/Source/WulaFallenEmpire/bin/Debug/Unity.TextMeshPro.dll and /dev/null differ
diff --git a/Source/WulaFallenEmpire/bin/Debug/UnityEngine.AnimationModule.dll b/Source/WulaFallenEmpire/bin/Debug/UnityEngine.AnimationModule.dll
deleted file mode 100644
index ab14b3e6..00000000
Binary files a/Source/WulaFallenEmpire/bin/Debug/UnityEngine.AnimationModule.dll and /dev/null differ
diff --git a/Source/WulaFallenEmpire/bin/Debug/UnityEngine.AssetBundleModule.dll b/Source/WulaFallenEmpire/bin/Debug/UnityEngine.AssetBundleModule.dll
deleted file mode 100644
index 463dc93d..00000000
Binary files a/Source/WulaFallenEmpire/bin/Debug/UnityEngine.AssetBundleModule.dll and /dev/null differ
diff --git a/Source/WulaFallenEmpire/bin/Debug/UnityEngine.AudioModule.dll b/Source/WulaFallenEmpire/bin/Debug/UnityEngine.AudioModule.dll
deleted file mode 100644
index 78f1886b..00000000
Binary files a/Source/WulaFallenEmpire/bin/Debug/UnityEngine.AudioModule.dll and /dev/null differ
diff --git a/Source/WulaFallenEmpire/bin/Debug/UnityEngine.CoreModule.dll b/Source/WulaFallenEmpire/bin/Debug/UnityEngine.CoreModule.dll
deleted file mode 100644
index 4f569441..00000000
Binary files a/Source/WulaFallenEmpire/bin/Debug/UnityEngine.CoreModule.dll and /dev/null differ
diff --git a/Source/WulaFallenEmpire/bin/Debug/UnityEngine.IMGUIModule.dll b/Source/WulaFallenEmpire/bin/Debug/UnityEngine.IMGUIModule.dll
deleted file mode 100644
index 1cf0b119..00000000
Binary files a/Source/WulaFallenEmpire/bin/Debug/UnityEngine.IMGUIModule.dll and /dev/null differ
diff --git a/Source/WulaFallenEmpire/bin/Debug/UnityEngine.ImageConversionModule.dll b/Source/WulaFallenEmpire/bin/Debug/UnityEngine.ImageConversionModule.dll
deleted file mode 100644
index 7b5e0c1b..00000000
Binary files a/Source/WulaFallenEmpire/bin/Debug/UnityEngine.ImageConversionModule.dll and /dev/null differ
diff --git a/Source/WulaFallenEmpire/bin/Debug/UnityEngine.InputLegacyModule.dll b/Source/WulaFallenEmpire/bin/Debug/UnityEngine.InputLegacyModule.dll
deleted file mode 100644
index 68015db7..00000000
Binary files a/Source/WulaFallenEmpire/bin/Debug/UnityEngine.InputLegacyModule.dll and /dev/null differ
diff --git a/Source/WulaFallenEmpire/bin/Debug/UnityEngine.PerformanceReportingModule.dll b/Source/WulaFallenEmpire/bin/Debug/UnityEngine.PerformanceReportingModule.dll
deleted file mode 100644
index cffba325..00000000
Binary files a/Source/WulaFallenEmpire/bin/Debug/UnityEngine.PerformanceReportingModule.dll and /dev/null differ
diff --git a/Source/WulaFallenEmpire/bin/Debug/UnityEngine.Physics2DModule.dll b/Source/WulaFallenEmpire/bin/Debug/UnityEngine.Physics2DModule.dll
deleted file mode 100644
index 5c7020f9..00000000
Binary files a/Source/WulaFallenEmpire/bin/Debug/UnityEngine.Physics2DModule.dll and /dev/null differ
diff --git a/Source/WulaFallenEmpire/bin/Debug/UnityEngine.PhysicsModule.dll b/Source/WulaFallenEmpire/bin/Debug/UnityEngine.PhysicsModule.dll
deleted file mode 100644
index 4a8b0a42..00000000
Binary files a/Source/WulaFallenEmpire/bin/Debug/UnityEngine.PhysicsModule.dll and /dev/null differ
diff --git a/Source/WulaFallenEmpire/bin/Debug/UnityEngine.PropertiesModule.dll b/Source/WulaFallenEmpire/bin/Debug/UnityEngine.PropertiesModule.dll
deleted file mode 100644
index 6ec68356..00000000
Binary files a/Source/WulaFallenEmpire/bin/Debug/UnityEngine.PropertiesModule.dll and /dev/null differ
diff --git a/Source/WulaFallenEmpire/bin/Debug/UnityEngine.ScreenCaptureModule.dll b/Source/WulaFallenEmpire/bin/Debug/UnityEngine.ScreenCaptureModule.dll
deleted file mode 100644
index f3397e31..00000000
Binary files a/Source/WulaFallenEmpire/bin/Debug/UnityEngine.ScreenCaptureModule.dll and /dev/null differ
diff --git a/Source/WulaFallenEmpire/bin/Debug/UnityEngine.SharedInternalsModule.dll b/Source/WulaFallenEmpire/bin/Debug/UnityEngine.SharedInternalsModule.dll
deleted file mode 100644
index 0d807f45..00000000
Binary files a/Source/WulaFallenEmpire/bin/Debug/UnityEngine.SharedInternalsModule.dll and /dev/null differ
diff --git a/Source/WulaFallenEmpire/bin/Debug/UnityEngine.SpriteShapeModule.dll b/Source/WulaFallenEmpire/bin/Debug/UnityEngine.SpriteShapeModule.dll
deleted file mode 100644
index 24b201d0..00000000
Binary files a/Source/WulaFallenEmpire/bin/Debug/UnityEngine.SpriteShapeModule.dll and /dev/null differ
diff --git a/Source/WulaFallenEmpire/bin/Debug/UnityEngine.TextCoreFontEngineModule.dll b/Source/WulaFallenEmpire/bin/Debug/UnityEngine.TextCoreFontEngineModule.dll
deleted file mode 100644
index bdbc5d17..00000000
Binary files a/Source/WulaFallenEmpire/bin/Debug/UnityEngine.TextCoreFontEngineModule.dll and /dev/null differ
diff --git a/Source/WulaFallenEmpire/bin/Debug/UnityEngine.TextCoreTextEngineModule.dll b/Source/WulaFallenEmpire/bin/Debug/UnityEngine.TextCoreTextEngineModule.dll
deleted file mode 100644
index 3f8f3055..00000000
Binary files a/Source/WulaFallenEmpire/bin/Debug/UnityEngine.TextCoreTextEngineModule.dll and /dev/null differ
diff --git a/Source/WulaFallenEmpire/bin/Debug/UnityEngine.TextRenderingModule.dll b/Source/WulaFallenEmpire/bin/Debug/UnityEngine.TextRenderingModule.dll
deleted file mode 100644
index 3064bf8d..00000000
Binary files a/Source/WulaFallenEmpire/bin/Debug/UnityEngine.TextRenderingModule.dll and /dev/null differ
diff --git a/Source/WulaFallenEmpire/bin/Debug/UnityEngine.UI.dll b/Source/WulaFallenEmpire/bin/Debug/UnityEngine.UI.dll
deleted file mode 100644
index e84275cd..00000000
Binary files a/Source/WulaFallenEmpire/bin/Debug/UnityEngine.UI.dll and /dev/null differ
diff --git a/Source/WulaFallenEmpire/bin/Debug/UnityEngine.UIModule.dll b/Source/WulaFallenEmpire/bin/Debug/UnityEngine.UIModule.dll
deleted file mode 100644
index fc27804c..00000000
Binary files a/Source/WulaFallenEmpire/bin/Debug/UnityEngine.UIModule.dll and /dev/null differ
diff --git a/Source/WulaFallenEmpire/bin/Debug/WulaFallenEmpire.dll b/Source/WulaFallenEmpire/bin/Debug/WulaFallenEmpire.dll
deleted file mode 100644
index a28dc11c..00000000
Binary files a/Source/WulaFallenEmpire/bin/Debug/WulaFallenEmpire.dll and /dev/null differ
diff --git a/Source/WulaFallenEmpire/bin/Debug/WulaFallenEmpire.pdb b/Source/WulaFallenEmpire/bin/Debug/WulaFallenEmpire.pdb
deleted file mode 100644
index 44e2df3a..00000000
Binary files a/Source/WulaFallenEmpire/bin/Debug/WulaFallenEmpire.pdb and /dev/null differ
diff --git a/Source/WulaFallenEmpire/bin/Debug/com.rlabrecque.steamworks.net.dll b/Source/WulaFallenEmpire/bin/Debug/com.rlabrecque.steamworks.net.dll
deleted file mode 100644
index 4187b94c..00000000
Binary files a/Source/WulaFallenEmpire/bin/Debug/com.rlabrecque.steamworks.net.dll and /dev/null differ
diff --git a/Source/WulaFallenEmpire/bin/Debug/netstandard.dll b/Source/WulaFallenEmpire/bin/Debug/netstandard.dll
deleted file mode 100644
index 12f381af..00000000
Binary files a/Source/WulaFallenEmpire/bin/Debug/netstandard.dll and /dev/null differ
diff --git a/Source/WulaFallenEmpire/obj/Debug/WulaFall.44DB8A10.Up2Date b/Source/WulaFallenEmpire/obj/Debug/WulaFall.44DB8A10.Up2Date
deleted file mode 100644
index e69de29b..00000000
diff --git a/Textures/Wula/Building/Wula_DarkEnergy_Engine_east.sai2 b/Textures/Wula/Building/Wula_DarkEnergy_Engine_east.sai2
deleted file mode 100644
index 41c7aadb..00000000
Binary files a/Textures/Wula/Building/Wula_DarkEnergy_Engine_east.sai2 and /dev/null differ
diff --git a/Textures/Wula/Building/Wula_DarkEnergy_FuelTank.png b/Textures/Wula/Building/Wula_DarkEnergy_FuelTank.png
new file mode 100644
index 00000000..cf2923d4
Binary files /dev/null and b/Textures/Wula/Building/Wula_DarkEnergy_FuelTank.png differ
diff --git a/Textures/Wula/Building/Wula_DarkEnergy_FuelTank.sai2 b/Textures/Wula/Building/Wula_DarkEnergy_FuelTank.sai2
new file mode 100644
index 00000000..4ca93dab
Binary files /dev/null and b/Textures/Wula/Building/Wula_DarkEnergy_FuelTank.sai2 differ
diff --git a/Textures/Wula/Things/WULA_Assault_Cat/AllegianceOverlays/None_east.dds b/Textures/Wula/Things/WULA_Assault_Cat/AllegianceOverlays/None_east.dds
new file mode 100644
index 00000000..b88cc944
Binary files /dev/null and b/Textures/Wula/Things/WULA_Assault_Cat/AllegianceOverlays/None_east.dds differ
diff --git a/Textures/Wula/Things/WULA_Assault_Cat/AllegianceOverlays/None_east.png b/Textures/Wula/Things/WULA_Assault_Cat/AllegianceOverlays/None_east.png
new file mode 100644
index 00000000..37b54f7e
Binary files /dev/null and b/Textures/Wula/Things/WULA_Assault_Cat/AllegianceOverlays/None_east.png differ
diff --git a/Textures/Wula/Things/WULA_Assault_Cat/AllegianceOverlays/None_north.dds b/Textures/Wula/Things/WULA_Assault_Cat/AllegianceOverlays/None_north.dds
new file mode 100644
index 00000000..b88cc944
Binary files /dev/null and b/Textures/Wula/Things/WULA_Assault_Cat/AllegianceOverlays/None_north.dds differ
diff --git a/Textures/Wula/Things/WULA_Assault_Cat/AllegianceOverlays/None_north.png b/Textures/Wula/Things/WULA_Assault_Cat/AllegianceOverlays/None_north.png
new file mode 100644
index 00000000..37b54f7e
Binary files /dev/null and b/Textures/Wula/Things/WULA_Assault_Cat/AllegianceOverlays/None_north.png differ
diff --git a/Textures/Wula/Things/WULA_Assault_Cat/AllegianceOverlays/None_south.dds b/Textures/Wula/Things/WULA_Assault_Cat/AllegianceOverlays/None_south.dds
new file mode 100644
index 00000000..b88cc944
Binary files /dev/null and b/Textures/Wula/Things/WULA_Assault_Cat/AllegianceOverlays/None_south.dds differ
diff --git a/Textures/Wula/Things/WULA_Assault_Cat/AllegianceOverlays/None_south.png b/Textures/Wula/Things/WULA_Assault_Cat/AllegianceOverlays/None_south.png
new file mode 100644
index 00000000..37b54f7e
Binary files /dev/null and b/Textures/Wula/Things/WULA_Assault_Cat/AllegianceOverlays/None_south.png differ
diff --git a/Textures/Wula/Things/WULA_Assault_Cat/WULA_Cat_Thin_east.png b/Textures/Wula/Things/WULA_Assault_Cat/WULA_Cat_Thin_east.png
new file mode 100644
index 00000000..c3b4ffec
Binary files /dev/null and b/Textures/Wula/Things/WULA_Assault_Cat/WULA_Cat_Thin_east.png differ
diff --git a/Textures/Wula/Things/WULA_Assault_Cat/WULA_Cat_Thin_north.png b/Textures/Wula/Things/WULA_Assault_Cat/WULA_Cat_Thin_north.png
new file mode 100644
index 00000000..da83a87e
Binary files /dev/null and b/Textures/Wula/Things/WULA_Assault_Cat/WULA_Cat_Thin_north.png differ
diff --git a/Textures/Wula/Things/WULA_Assault_Cat/WULA_Cat_Thin_south.png b/Textures/Wula/Things/WULA_Assault_Cat/WULA_Cat_Thin_south.png
new file mode 100644
index 00000000..82181f2c
Binary files /dev/null and b/Textures/Wula/Things/WULA_Assault_Cat/WULA_Cat_Thin_south.png differ
diff --git a/Textures/Wula/Things/WULA_Assault_Cat/WULA_Cat_Thin_south.sai2 b/Textures/Wula/Things/WULA_Assault_Cat/WULA_Cat_Thin_south.sai2
new file mode 100644
index 00000000..0e89b367
Binary files /dev/null and b/Textures/Wula/Things/WULA_Assault_Cat/WULA_Cat_Thin_south.sai2 differ
diff --git a/Textures/Wula/Weapon/WULA_RW_Base_AR_Cat.png b/Textures/Wula/Weapon/WULA_RW_Base_AR_Cat.png
new file mode 100644
index 00000000..52afaf1d
Binary files /dev/null and b/Textures/Wula/Weapon/WULA_RW_Base_AR_Cat.png differ