Skip to content

Commit

Permalink
Broken
Browse files Browse the repository at this point in the history
  • Loading branch information
lxteo committed Apr 11, 2015
1 parent 55a8c04 commit 9cdc25a
Show file tree
Hide file tree
Showing 21 changed files with 183 additions and 96 deletions.
4 changes: 2 additions & 2 deletions Areas/FakeGameAreaInfoPanel.cs
Expand Up @@ -4,9 +4,9 @@
using System;
using System.Reflection;
using UnityEngine;
using Unlimiter.Attributes;
using EightyOne.Attributes;

namespace Unlimiter.Areas
namespace EightyOne.Areas
{
internal class FakeGameAreaInfoPanel
{
Expand Down
4 changes: 2 additions & 2 deletions Areas/FakeGameAreaManager.cs
Expand Up @@ -5,10 +5,10 @@
using System.IO;
using System.Reflection;
using UnityEngine;
using Unlimiter.Attributes;
using EightyOne.Attributes;
using System.Linq;

namespace Unlimiter.Areas
namespace EightyOne.Areas
{
public class FakeGameAreaManager : SerializableDataExtensionBase
{
Expand Down
4 changes: 2 additions & 2 deletions Areas/FakeNatualResourceManager.cs
Expand Up @@ -2,9 +2,9 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Unlimiter.Attributes;
using EightyOne.Attributes;

namespace Unlimiter.Areas
namespace EightyOne.Areas
{
class FakeNatualResourceManager
{
Expand Down
4 changes: 2 additions & 2 deletions Areas/FakeNetManager.cs
@@ -1,8 +1,8 @@
using ColossalFramework;
using UnityEngine;
using Unlimiter.Attributes;
using EightyOne.Attributes;

namespace Unlimiter.Areas
namespace EightyOne.Areas
{
internal class FakeNetManager
{
Expand Down
2 changes: 1 addition & 1 deletion Attributes/FixmeAttribute.cs
@@ -1,6 +1,6 @@
using System;

namespace Unlimiter.Attributes
namespace EightyOne.Attributes
{
internal class FixmeAttribute : Attribute
{
Expand Down
2 changes: 1 addition & 1 deletion Attributes/ReplaceMethodAttribute.cs
@@ -1,6 +1,6 @@
using System;

namespace Unlimiter.Attributes
namespace EightyOne.Attributes
{
[AttributeUsage(AttributeTargets.Method)]
internal class ReplaceMethodAttribute : Attribute
Expand Down
6 changes: 3 additions & 3 deletions Unlimiter.csproj → EightyOne.csproj
Expand Up @@ -7,8 +7,8 @@
<ProjectGuid>{F00F6C60-1609-4212-84C3-F4E73AF2DE93}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>Unlimiter</RootNamespace>
<AssemblyName>Unlimiter</AssemblyName>
<RootNamespace>EightyOne</RootNamespace>
<AssemblyName>EightyOne</AssemblyName>
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<TargetFrameworkProfile />
Expand All @@ -31,7 +31,7 @@
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
<DocumentationFile>bin\Release\Unlimiter.XML</DocumentationFile>
<DocumentationFile>bin\Release\EightyOne.xml</DocumentationFile>
</PropertyGroup>
<ItemGroup>
<Reference Include="Assembly-CSharp">
Expand Down
105 changes: 76 additions & 29 deletions Mod.cs
@@ -1,41 +1,42 @@
using ColossalFramework.Plugins;
using ICities;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using UnityEngine;
using Unlimiter.Areas;
using Unlimiter.Attributes;
using Unlimiter.ResourceManagers;
using Unlimiter.Terrain;
using Unlimiter.Zones;

namespace Unlimiter
{
public class Mod : IUserMod
{
public string Description
{
get
{
return "Unlocks 81 tiles";
}
}

public string Name
{
get
{
return "81 Tile Unlock";
}
}
using EightyOne.Areas;
using EightyOne.Attributes;
using EightyOne.ResourceManagers;
using EightyOne.Terrain;
using EightyOne.Zones;

namespace EightyOne
{
public class Mod : IUserMod
{
public string Description
{
get
{
return "Unlocks 81 tiles";
}
}

public string Name
{
get
{
return "81 Tile Unlock";
}
}
}

public class ModLoad : LoadingExtensionBase
{
public static Unlimiter unlimiter;
public static GameObject gm;
public static GameObject gm;

public override void OnLevelLoaded(LoadMode mode)
{
Expand All @@ -56,6 +57,7 @@ public class Unlimiter : MonoBehaviour
{
private static Dictionary<MethodInfo, RedirectCallsState> redirects;
public static bool IsEnabled;
private static BindingFlags allFlags = BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static | BindingFlags.DeclaredOnly;

public void EnableHooks()
{
Expand All @@ -64,7 +66,6 @@ public void EnableHooks()
return;
}
IsEnabled = true;
FakeElectricityManager.Init();
FakeWaterManager.Init();
FakeDistrictManager.Init();
FakeDistrictTool.Init();
Expand All @@ -73,6 +74,7 @@ public void EnableHooks()
FakeZoneManager.Init();
FakeNetManager.Init();
FakeZoneTool.Init();
FakeElectricityManager.Init();

var toReplace = new Type[]
{
Expand Down Expand Up @@ -157,5 +159,50 @@ public void Update()
FakeGameAreaManager.UnlockAll();
}
}
}
}

public static void CopyArray(IList newArray, object em, string propertyName)
{
var oldArray = (IList)em.GetType().GetField(propertyName, allFlags).GetValue(em);
for (var i = 0; i < newArray.Count; i += 1)
{
newArray[i] = oldArray[i];
}
}


public static void CopyStructArray(IList newArray, object em, string propertyName)
{
var oldArray = (IList)em.GetType().GetField(propertyName, allFlags).GetValue(em);
var fields = GetFieldsFromStruct(newArray[0], oldArray[0]);
for (var i = 0; i < newArray.Count; i += 1)
{
newArray[i] = CopyStruct(newArray[0].GetType(), oldArray[i], fields);
}
}

public static Dictionary<FieldInfo, FieldInfo> GetFieldsFromStruct(object newArray, object oldArray)
{
var fields = new Dictionary<FieldInfo, FieldInfo>();
foreach (var f in oldArray.GetType().GetFields(allFlags))
{
fields.Add(newArray.GetType().GetField(f.Name, allFlags), f);
}
return fields;
}

public static object GetPropertyValue(object obj, string propName)
{
return obj.GetType().GetField(propName, allFlags).GetValue(obj);
}

public static object CopyStruct(Type tt, object original, Dictionary<FieldInfo, FieldInfo> fields)
{
var newObj = Activator.CreateInstance(tt);
foreach (var field in fields)
{
field.Key.SetValue(newObj, field.Value.GetValue(original));
}
return newObj;
}
}
}
2 changes: 1 addition & 1 deletion RedirectionHelper.cs
Expand Up @@ -22,7 +22,7 @@ THE SOFTWARE.
using System.Reflection;
using System.Runtime.InteropServices;

namespace Unlimiter
namespace EightyOne
{

public struct RedirectCallsState
Expand Down
4 changes: 2 additions & 2 deletions ResourceManagers/FakeDistrictManager.cs
Expand Up @@ -9,9 +9,9 @@
using System.Text;
using System.Threading;
using UnityEngine;
using Unlimiter.Attributes;
using EightyOne.Attributes;

namespace Unlimiter.ResourceManagers
namespace EightyOne.ResourceManagers
{
public class FakeDistrictManager : SerializableDataExtensionBase
{
Expand Down
4 changes: 2 additions & 2 deletions ResourceManagers/FakeDistrictTool.cs
Expand Up @@ -7,9 +7,9 @@
using System.Text;
using System.Threading;
using UnityEngine;
using Unlimiter.Attributes;
using EightyOne.Attributes;

namespace Unlimiter.ResourceManagers
namespace EightyOne.ResourceManagers
{
class FakeDistrictTool
{
Expand Down
52 changes: 46 additions & 6 deletions ResourceManagers/FakeElectricityManager.cs
Expand Up @@ -2,16 +2,17 @@
using ColossalFramework.IO;
using ICities;
using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading;
using UnityEngine;
using Unlimiter.Attributes;
using EightyOne.Attributes;

namespace Unlimiter.ResourceManagers
namespace EightyOne.ResourceManagers
{
public class FakeElectricityManager : SerializableDataExtensionBase
{
Expand Down Expand Up @@ -270,6 +271,11 @@ public struct Cell
public byte m_conductivity;
public bool m_tmpElectrified;
public bool m_electrified;

public override string ToString()
{
return string.Format("{0} {1} {2} {3} {4} {5}", m_currentCharge.ToString(), m_extraCharge.ToString(), m_pulseGroup.ToString(), m_conductivity.ToString(), m_tmpElectrified.ToString(), m_electrified.ToString());
}
}
public struct PulseGroup
{
Expand All @@ -279,13 +285,21 @@ public struct PulseGroup
public ushort m_mergeCount;
public ushort m_x;
public ushort m_z;
public override string ToString()
{
return string.Format("{0} {1} {2} {3} {4} {5}", m_origCharge.ToString(), m_curCharge.ToString(), m_mergeIndex.ToString(), m_mergeCount.ToString(), m_x.ToString(), m_z.ToString());
}
}
public struct PulseUnit
{
public ushort m_group;
public ushort m_node;
public ushort m_x;
public ushort m_z;
public override string ToString()
{
return string.Format("{0} {1} {2} {3}", m_group.ToString(), m_node.ToString(), m_x.ToString(), m_z.ToString());
}
}

public const int GRID = 462;
Expand Down Expand Up @@ -313,19 +327,47 @@ public struct PulseUnit

public static void Init()
{
var em = ElectricityManager.instance;
if (electricityGrid == null)
{
electricityGrid = new Cell[GRID * GRID];

//var oldGrid = (IList)typeof(ElectricityManager).GetField("m_electricityGrid", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(em);
//int oldGridSize = 256;
//int diff = (GRID - oldGridSize) / 2;
//var fields = Unlimiter.GetFieldsFromStruct(electricityGrid[0], oldGrid[0]);
//for (var i = 0; i < oldGridSize; i += 1)
//{
// for (var j = 0; j < oldGridSize; j += 1)
// {
// electricityGrid[(j + diff) * GRID + (i + diff)] = (Cell)Unlimiter.CopyStruct(typeof(Cell), oldGrid[j * oldGridSize + i], fields);
// Debug.Log(electricityGrid[(j + diff) * GRID + (i + diff)].ToString());
// }
//}
m_pulseGroups = new PulseGroup[1024];
//Unlimiter.CopyStructArray(m_pulseGroups, em, "m_pulseGroups");

m_pulseUnits = new PulseUnit[32768];
//Unlimiter.CopyStructArray(m_pulseUnits, em, "m_pulseUnits");

m_nodeGroups = new ushort[32768];
//Unlimiter.CopyArray(m_nodeGroups, em, "m_nodeGroups");

//m_pulseGroupCount = (int)Unlimiter.GetPropertyValue( em, "m_pulseGroupCount");
//m_pulseUnitStart = 0;
//m_pulseUnitEnd = (int)Unlimiter.GetPropertyValue(em, "m_pulseUnitEnd") % m_pulseUnits.Length; ;
//m_processedCells = (int)Unlimiter.GetPropertyValue( em, "m_processedCells");
//m_conductiveCells = (int)Unlimiter.GetPropertyValue( em, "m_conductiveCells");

m_pulseGroupCount = 0;
m_pulseUnitStart = 0;
m_pulseUnitEnd = 0;
m_processedCells = 0;
m_conductiveCells = 0;
m_canContinue = false;
m_canContinue = true;
//m_canContinue = (bool)Unlimiter.GetPropertyValue( em, "m_canContinue");
}

m_modifiedX1 = 0;
m_modifiedZ1 = 0;
m_modifiedX2 = GRID - 1;
Expand All @@ -335,11 +377,9 @@ public static void Init()
m_electricityTexture.filterMode = FilterMode.Point;
m_electricityTexture.wrapMode = TextureWrapMode.Clamp;
Shader.SetGlobalTexture("_ElectricityTexture", m_electricityTexture);
UpdateElectricityMapping(ElectricityManager.instance);

ElectricityManager.instance.AreaModified(0, 0, GRID - 1, GRID - 1);
}


internal static void OnDestroy()
{
if (m_electricityTexture != null)
Expand Down
4 changes: 2 additions & 2 deletions ResourceManagers/FakeImmaterialResourceManager.cs
Expand Up @@ -5,9 +5,9 @@
using System.Text;
using System.Threading;
using UnityEngine;
using Unlimiter.Attributes;
using EightyOne.Attributes;

namespace Unlimiter.ResourceManagers
namespace EightyOne.ResourceManagers
{
class FakeImmaterialResourceManager
{
Expand Down

0 comments on commit 9cdc25a

Please sign in to comment.