Last active
April 5, 2018 15:11
-
-
Save ronyx69/ff3578a2f4b50b856a77edf1b795e374 to your computer and use it in GitHub Desktop.
Imports a natural resource texture and applies the resource values to all cells on the map.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Natural Resource Texture Importer | |
// Imports a natural resource texture and applies the resource values to all cells on the map. | |
// Texture name and location must be gamefolder/textures/res.png | |
// Resolution is 512x512 | |
// | |
// Channel explanation: | |
// Default value for all channels is 128. | |
// | |
// Red (128-0) Oil (inverted) | |
// Red (128-255) Ore | |
// | |
// Green (128-0) Fertility (inverted) | |
// Green (128-255) Sand | |
// | |
// Blue (128-0) Forest (inverted) | |
// Blue (128-255) Unused AFAIK | |
// Warning: if the blue channel is below 128, fertile will not work at all, | |
// also placing/deleting trees will modify the forest value in that area. | |
var texturePath = "textures/res.png"; | |
if (File.Exists(texturePath)) { | |
Texture2D texture2D = new Texture2D(1, 1); texture2D.LoadImage(File.ReadAllBytes(texturePath)); | |
var orig = UnityEngine.Object.FindObjectOfType<NaturalResourceManager>().m_naturalResources; | |
NaturalResourceManager.ResourceCell[] temp = new NaturalResourceManager.ResourceCell[orig.Length]; | |
orig.CopyTo(temp, 0); | |
for(uint i = 0; i < orig.Length; i++) { | |
Color pixel = texture2D.GetPixel(Convert.ToInt32(i%512), Convert.ToInt32(i/512)); | |
temp[i].m_ore = Convert.ToByte(Mathf.Clamp((pixel.r-0.5f)*2f, 0, 1)*255); | |
temp[i].m_oil = Convert.ToByte(Mathf.Clamp(((1-pixel.r)-0.5f)*2f, 0, 1)*255); | |
temp[i].m_sand = Convert.ToByte(Mathf.Clamp((pixel.g-0.5f)*2f, 0, 1)*255); | |
temp[i].m_fertility = Convert.ToByte(Mathf.Clamp(((1-pixel.g)-0.5f)*2f, 0, 1)*255); | |
temp[i].m_forest = Convert.ToByte(Mathf.Clamp(((1-pixel.b)-0.5f)*2f, 0, 1)*255); | |
temp[i].m_tree = Convert.ToByte(Mathf.Clamp(((1-pixel.b)-0.5f)*2f, 0, 1)*255); } | |
UnityEngine.Object.FindObjectOfType<NaturalResourceManager>().m_naturalResources = temp; | |
UnityEngine.Object.FindObjectOfType<NaturalResourceManager>().AreaModified(0, 0, 511, 511); | |
UnityEngine.Object.FindObjectOfType<NaturalResourceManager>().AreaModifiedB(0, 0, 511, 511); } | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
I had to use TPB's tip on this..
For some reason, I wasnt able to get the script to load the image until I moved it to localapp.
__
Off track a little, but is there a way to possibly export the data currently in game as an image?