Test scenario for SetGraphics()

Scenario that tests SetGraphics() in various ways: Setting graphics of meshes/sprites to other objects, overlaying objects onto other objects.
The scenario is not in the Issues.ocf folder, because it addresses multiple issues #1458 and #1538 and the status of the issues has not been acknowledged yet.
shapetextures
Mark 2016-01-07 14:48:46 +01:00
parent b6436783bb
commit 8719ee8b58
2 changed files with 211 additions and 0 deletions

View File

@ -0,0 +1,5 @@
[Head]
Title=Object Overlays
[Landscape]
NoScan=1

View File

@ -0,0 +1,206 @@
func Initialize()
{
var effect = AddEffect("IntOverlayTest", nil, 1, 10);
}
public func InitializePlayer(int player)
{
var crew = GetCrew(player);
crew->SetPosition(50, 200);
}
global func FxIntOverlayTestTimer(object target, proplist effect, int timer)
{
if (effect.delay) { effect.delay--; return FX_OK;}
if (!effect.initialized) return InitializeTest(effect);
if (!effect.test1) return TestSequence001(effect);
if (!effect.test2) return TestSequence002(effect);
if (!effect.test3) return TestSequence003(effect);
if (!effect.test4) return TestSequence004(effect);
if (!effect.test5) return TestSequence005(effect);
if (!effect.test6) return TestSequence006(effect);
if (!effect.test7) return TestSequence007(effect);
if (!effect.test8) return TestSequence008(effect);
if (!effect.test9) return TestSequence009(effect);
if (!effect.test10) return TestSequence010(effect);
}
global func InitializeTest(proplist effect)
{
// objects
effect.dummy1 = CreateObject(Dummy, 100, LandscapeHeight() / 2);
effect.dummy2 = CreateObject(Dummy, 200, LandscapeHeight() / 2);
effect.dummy3 = CreateObject(Dummy, 300, LandscapeHeight() / 2);
effect.dummy4 = CreateObject(Dummy, 10, LandscapeHeight() / 2); // object with sprite graphics
effect.dummy5 = CreateObject(Dummy, 20, LandscapeHeight() / 2); // object with mesh graphics
// visibility
effect.dummy1.Visibility = VIS_All;
effect.dummy2.Visibility = VIS_All;
effect.dummy3.Visibility = VIS_All;
effect.dummy4.Visibility = VIS_All;
effect.dummy5.Visibility = VIS_All;
// done
effect.initialized = true;
return FX_OK;
}
global func TestSequence001(proplist effect)
{
var graphics = Amethyst;
effect.dummy1->SetShape(-64, -64, 128, 128);
effect.dummy1->SetGraphics(nil, graphics);
effect.dummy1->Message("This object should use the following graphics {{%i}}", graphics);
effect.delay = 15;
effect.test1 = true;
return FX_OK;
}
global func TestSequence002(proplist effect)
{
var graphics = Loam;
effect.dummy2->SetShape(-5, -5, 11, 11);
effect.dummy2->SetGraphics(nil, graphics);
effect.dummy2->Message("This object should use the following graphics {{%i}}", graphics);
effect.delay = 15;
effect.test2 = true;
return FX_OK;
}
global func TestSequence003(proplist effect)
{
var graphics = Cloth;
effect.dummy3->SetShape(-64, -64, 128, 128);
effect.dummy3->SetGraphics(nil, graphics);
effect.dummy3->Message("This object should use the following graphics {{%i}}", graphics);
effect.delay = 15;
effect.test3 = true;
return FX_OK;
}
global func TestSequence004(proplist effect)
{
var graphics = GoldBar;
effect.dummy4->SetShape(-5, -2, 10, 4);
effect.dummy4->SetGraphics(nil, graphics);
effect.dummy4->Message("This object should use the following graphics {{%i}}", graphics);
effect.delay = 15;
effect.test4 = true;
return FX_OK;
}
global func TestSequence005(proplist effect)
{
var graphics = Hammer;
effect.dummy5->SetShape(-4, -6, 8, 12);
effect.dummy5->SetGraphics(nil, Hammer);
effect.dummy5->SetGraphics(nil, graphics);
effect.dummy5->Message("This object should use the following graphics {{%i}}", graphics);
effect.delay = 15;
effect.test5 = true;
return FX_OK;
}
global func TestSequence006(proplist effect)
{
// the effect.dummy2 object gets a lot of overlays
effect.dummy2->SetGraphics(nil, Firestone, 1, GFXOV_MODE_Base); // sprite graphics as overlay
effect.dummy2->SetGraphics(nil, Axe, 2, GFXOV_MODE_Base); // mesh graphics as overlay
effect.dummy2->SetGraphics(nil, nil, 3, GFXOV_MODE_Object, nil, nil, effect.dummy4); // sprite graphics from other object
effect.dummy2->SetGraphics(nil, nil, 4, GFXOV_MODE_Object, nil, nil, effect.dummy5); // mesh graphics from other object
effect.dummy2->SetObjDrawTransform(1000, 0, -10000, 0, 1000, -32000, 0);
effect.dummy2->SetObjDrawTransform(1000, 0, -10000, 0, 1000, -24000, 1);
effect.dummy2->SetObjDrawTransform(1000, 0, -10000, 0, 1000, -16000, 2);
effect.dummy2->SetObjDrawTransform(1000, 0, -10000, 0, 1000, -8000, 3);
effect.dummy2->SetObjDrawTransform(1000, 0, -10000, 0, 1000, 0, 4);
effect.dummy2->Message("This object should have the graphics in this order now:|{{Loam}}|{{Firestone}}|{{Axe}}|{{GoldBar}}|{{Hammer}}");
effect.dummy4->Message("*!*");
effect.dummy5->Message("*!*");
effect.delay = 25;
effect.test6 = true;
return FX_OK;
}
global func TestSequence007(proplist effect)
{
// the effect.dummy1 object gets the effect.dummy2 as object overlay
effect.dummy1->SetGraphics(nil, nil, 1, GFXOV_MODE_Object, nil, nil, effect.dummy2);
effect.dummy1->Message("Should have the graphics of Nr.2 as overlay now");
effect.dummy2->Message("> Nr.2");
effect.test7 = true;
effect.delay = 15;
return FX_OK;
}
global func TestSequence008(proplist effect)
{
// the effect.dummy3 object gets the effect.dummy2 as object overlay
effect.dummy3->SetGraphics(nil, nil, 1, GFXOV_MODE_Object, nil, nil, effect.dummy2);
effect.dummy3->Message("Should have the graphics of Nr.2 as overlay now");
effect.dummy2->Message("> Nr.2");
effect.test8 = true;
effect.delay = 15;
return FX_OK;
}
global func TestSequence009(proplist effect)
{
// remove old objects
effect.dummy1->RemoveObject();
effect.dummy2->RemoveObject();
effect.dummy3->RemoveObject();
effect.dummy4->RemoveObject();
effect.dummy5->RemoveObject();
// objects
effect.dummy1 = CreateObject(Rock, 100, LandscapeHeight() / 2);
effect.dummy2 = CreateObject(Rock, 200, LandscapeHeight() / 2);
effect.dummy3 = CreateObject(Rock, 300, LandscapeHeight() / 2);
effect.dummy4 = CreateObject(Rock, 10, LandscapeHeight() / 2); // object with sprite graphics
effect.dummy5 = CreateObject(Rock, 20, LandscapeHeight() / 2); // object with mesh graphics
// done
effect.test9 = true;
effect.test1 = false;
effect.test2 = false;
effect.test3 = false;
effect.test4 = false;
effect.test5 = false;
effect.test6 = false;
effect.test7 = false;
effect.test8 = false;
effect.delay = 10;
return FX_OK;
}
global func TestSequence010(proplist effect)
{
// remove old objects
effect.dummy1->RemoveObject();
effect.dummy2->RemoveObject();
effect.dummy3->RemoveObject();
effect.dummy4->RemoveObject();
effect.dummy5->RemoveObject();
// objects
effect.dummy1 = CreateObject(Hammer, 100, LandscapeHeight() / 2);
effect.dummy2 = CreateObject(Hammer, 200, LandscapeHeight() / 2);
effect.dummy3 = CreateObject(Hammer, 300, LandscapeHeight() / 2);
effect.dummy4 = CreateObject(Hammer, 10, LandscapeHeight() / 2); // object with sprite graphics
effect.dummy5 = CreateObject(Hammer, 20, LandscapeHeight() / 2); // object with mesh graphics
// done
effect.test10 = true;
effect.test1 = false;
effect.test2 = false;
effect.test3 = false;
effect.test4 = false;
effect.test5 = false;
effect.test6 = false;
effect.test7 = false;
effect.test8 = false;
effect.delay = 10;
return FX_OK;
}