Route viewport centering via WorldRenderer.

This commit is contained in:
Paul Chote
2013-09-27 17:13:54 +12:00
parent b3d608092c
commit f575c20d38
21 changed files with 77 additions and 70 deletions

View File

@@ -22,14 +22,16 @@ namespace OpenRA.Mods.RA
class CncShellmapScript : IWorldLoaded, ITick
{
static CPos viewportOrigin;
WPos viewportOrigin;
Dictionary<string, Actor> actors;
WorldRenderer worldRenderer;
public void WorldLoaded(World w, WorldRenderer wr)
{
worldRenderer = wr;
var b = w.Map.Bounds;
viewportOrigin = new CPos(b.Left + b.Width / 2, b.Top + b.Height / 2);
Game.MoveViewport(viewportOrigin.ToFloat2());
viewportOrigin = new CPos(b.Left + b.Width / 2, b.Top + b.Height / 2).CenterPosition;
worldRenderer.Viewport.Center(viewportOrigin);
actors = w.WorldActor.Trait<SpawnMapActors>().Actors;
@@ -39,8 +41,8 @@ namespace OpenRA.Mods.RA
void SetViewport()
{
var t = (ticks + 45) % (360f * speed) * (Math.PI / 180) * 1f / speed;
var loc = viewportOrigin.ToFloat2() + (new float2(-15, 4) * float2.FromAngle((float)t));
Game.viewport.Center(loc);
var offset = new float2(-15360, 4096) * float2.FromAngle((float)t);
worldRenderer.Viewport.Center(viewportOrigin + new WVec((int)offset.X, (int)offset.Y, 0));
}
int ticks = 0;

View File

@@ -34,7 +34,7 @@ namespace OpenRA.Mods.Cnc.Missions
players = w.Players.ToDictionary(p => p.InternalName);
actors = w.WorldActor.Trait<SpawnMapActors>().Actors;
var b = w.Map.Bounds;
Game.MoveViewport(new CPos(b.Left + b.Width / 2, b.Top + b.Height / 2).ToFloat2());
wr.Viewport.Center(new CPos(b.Left + b.Width / 2, b.Top + b.Height / 2).CenterPosition);
Action afterFMV = () =>
{

View File

@@ -193,13 +193,10 @@ namespace OpenRA.Mods.Cnc.Missions
nr1 = actors["NODReinforceNthA"];
nr2 = actors["NODReinforceNthB"];
nr3 = actors["NODReinforceNWstA"];
Game.MoveViewport(nr1.Location.ToFloat2());
Action afterFMV = () =>
{
MissionUtils.PlayMissionMusic();
};
wr.Viewport.Center(nr1.Location.CenterPosition);
Game.RunAfterDelay(0, () => Media.PlayFMVFullscreen(w, "nod1pre.vqa", () =>
Media.PlayFMVFullscreen(w, "nod1.vqa", afterFMV)));
Media.PlayFMVFullscreen(w, "nod1.vqa", MissionUtils.PlayMissionMusic)));
}
}
}