add actor images to palette
This commit is contained in:
@@ -78,6 +78,24 @@ namespace OpenRA.Editor
|
|||||||
}
|
}
|
||||||
catch { }
|
catch { }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
foreach (var a in Rules.Info.Keys)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var bitmap = RenderActor(Rules.Info[a], tsinfo.First, palette);
|
||||||
|
var ibox = new PictureBox
|
||||||
|
{
|
||||||
|
Image = bitmap,
|
||||||
|
Width = bitmap.Width / 2,
|
||||||
|
Height = bitmap.Height / 2,
|
||||||
|
SizeMode = PictureBoxSizeMode.StretchImage
|
||||||
|
};
|
||||||
|
|
||||||
|
actorPalette.Controls.Add(ibox);
|
||||||
|
}
|
||||||
|
catch { }
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void LocateGameRoot()
|
void LocateGameRoot()
|
||||||
@@ -136,10 +154,31 @@ namespace OpenRA.Editor
|
|||||||
return bitmap;
|
return bitmap;
|
||||||
}
|
}
|
||||||
|
|
||||||
static Bitmap RenderActor(ActorInfo info)
|
static Bitmap RenderActor(ActorInfo info, string ext, Palette p)
|
||||||
{
|
{
|
||||||
var image = info.Traits.Get<RenderSimpleInfo>().Image ?? info.Name;
|
var image = info.Traits.Get<RenderSimpleInfo>().Image ?? info.Name;
|
||||||
return null;
|
using (var s = FileSystem.OpenWithExts(image, "." + ext, ".shp"))
|
||||||
|
{
|
||||||
|
var shp = new ShpReader(s);
|
||||||
|
var frame = shp[0];
|
||||||
|
|
||||||
|
var bitmap = new Bitmap(shp.Width, shp.Height);
|
||||||
|
var data = bitmap.LockBits(new Rectangle(0, 0, bitmap.Width, bitmap.Height),
|
||||||
|
ImageLockMode.WriteOnly, PixelFormat.Format32bppArgb);
|
||||||
|
|
||||||
|
unsafe
|
||||||
|
{
|
||||||
|
int* q = (int*)data.Scan0.ToPointer();
|
||||||
|
var stride = data.Stride >> 2;
|
||||||
|
|
||||||
|
for (var i = 0; i < shp.Width; i++)
|
||||||
|
for (var j = 0; j < shp.Height; j++)
|
||||||
|
q[j * stride + i] = p.GetColor(frame.Image[i + shp.Width * j]).ToArgb();
|
||||||
|
}
|
||||||
|
|
||||||
|
bitmap.UnlockBits(data);
|
||||||
|
return bitmap;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void ResizeClicked(object sender, EventArgs e)
|
void ResizeClicked(object sender, EventArgs e)
|
||||||
|
|||||||
Reference in New Issue
Block a user