forked from Mirrors/openclonk
Add test scenario for Random() performance
parent
1f9c15e388
commit
1f5dc0aec6
|
@ -0,0 +1,43 @@
|
|||
/* A map for testing the Random() number generator. */
|
||||
|
||||
#include Library_Map
|
||||
|
||||
// Overload Random to make it show up in the script profiler.
|
||||
func Random()
|
||||
{
|
||||
return inherited(...);
|
||||
}
|
||||
|
||||
func InitializeMap(proplist map)
|
||||
{
|
||||
Resize(800, 800);
|
||||
var layer1 = CreateLayer(nil, map.Wdt, map.Hgt / 2);
|
||||
var layer2 = CreateLayer(nil, map.Wdt, map.Hgt / 2);
|
||||
StartScriptProfiler();
|
||||
DrawRandomPattern(layer1, "Water");
|
||||
DrawRandomPattern2(layer2);
|
||||
StopScriptProfiler();
|
||||
Blit(layer1, [0, 0, layer1.Wdt, layer1.Hgt]);
|
||||
Blit({Algo=MAPALGO_Offset, OffY=map.Hgt / 2, Op=layer2});
|
||||
return true;
|
||||
}
|
||||
|
||||
// For each pixel: either fill or don't fill.
|
||||
func DrawRandomPattern(proplist layer, string mat)
|
||||
{
|
||||
for (var y = 0; y < layer.Hgt; y++)
|
||||
for (var x = 0; x < layer.Wdt; x++)
|
||||
if (!Random(2))
|
||||
layer->SetPixel(x, y, mat);
|
||||
}
|
||||
|
||||
// Fill each pixel with a random material.
|
||||
func DrawRandomPattern2(proplist layer)
|
||||
{
|
||||
var mats = [ "Acid", "Amethyst", "Ashes", "Brick", "BrickSoft", "Coal", "DuroLava", "Earth", "Everrock", "Firestone", "Gold", "Granite", "HalfVehicle", "Ice", "Lava", "ORE", "Rock", "Ruby", "SandDry", "Sand", "Snow", "Tunnel", "Vehicle", "Water" ];
|
||||
var n = GetLength(mats);
|
||||
|
||||
for (var y = 0; y < layer.Hgt; y++)
|
||||
for (var x = 0; x < layer.Wdt; x++)
|
||||
layer->SetPixel(x, y, mats[Random(n)]);
|
||||
}
|
|
@ -0,0 +1,2 @@
|
|||
[Landscape]
|
||||
MapZoom=2
|
Loading…
Reference in New Issue