rendered paste bodyusing System;
using System.Collections.Generic;
using System.Text;
using FRB;
using FRB.Gui;
using FRB.Text;
using FRB.Audio;
using Microsoft.DirectX.DirectInput;
namespace GameName.Screens
{
class WorldMap : Screen
{
#region variable and sprite declarations
#region sprite declarations
Sprite backgroundSprite;
Sprite warpbackgroundSprite;
Sprite playerSprite;
Sprite mainpanelSprite;
Sprite radarSprite;
Sprite dustSprite;
Sprite warpmeterSprite;
Sprite warpparticleSprite;
Sprite viewrodlSprite;
Sprite viewrodrSprite;
Sprite viewscreenButtonSprite;
Sprite viewscreenButtonBounds;
Sprite viewscreenButtonLight;
Sprite zoominButtonSprite;
Sprite zoominButtonBounds;
Sprite zoomoutButtonSprite;
Sprite zoomoutButtonBounds;
Sprite viewscreenSprite;
Sprite minimapSprite;
Sprite planetButton1;
Sprite planetButton2;
Sprite planetButton3;
Sprite planetButton4;
Sprite planetmarkerSprite;
Sprite trackerSprite;
Sprite planet1Sprite;
Sprite planet1Moon1Sprite;
Sprite planet1Moon2Sprite;
#endregion
#region text object declarations
Text debugText1;
#endregion
#region variable declarations
bool sublightOnly = false;
bool autoPilot = false;
bool stopped = false;
bool trackerZoomin = true;
bool zoomin = true;
bool viewbuttonsloaded = false;
bool lowering = false;
bool raised = false;
bool warping = false;
bool borderCollisionX = false;
bool borderCollisionY = false;
int targetPlanet;
int currentPlanet;
int spawnCoord;
int spawnCount = 0;
int warpCount = 0;
long startTime = TimeManager.currentTick;
long turnTime = TimeManager.currentTick;
float sizeCoefficient = 0.0175f;
float trackerCoordX = -0.0f;
float trackerCoordY = -0.0f;
float trackerDistance;
float spawnCoordX;
float spawnCoordY;
float spawnTimer;
float turnTimer = 0;
float warpTimer;
float velocityAngle;
float angleToRotate;
float angleDifference;
float secondsToTake;
double playerXdiff;
double playerYdiff;
double planet1Xdiff;
double planet1Ydiff;
double planet1Moon1Xdiff;
double planet1Moon1Ydiff;
double planet1Moon2Xdiff;
double planet1Moon2Ydiff;
double planet1Angle;
double planet1Moon1Angle;
double planet1Moon2Angle;
double playerXmov;
double playerYmov;
double playerNavAngle;
double speed;
#endregion
#endregion
public WorldMap(FrbEngineReferences frbEngineReferences) :
base("", "", frbEngineReferences)
{
#region load and place all sprites and objects
warpbackgroundSprite = sprMan.AddUnorderedSprite("warpbackground.bmp");
sprMan.RemoveSprite(warpbackgroundSprite);
viewscreenSprite = sprMan.AddSprite("viewscreen.png");
sprMan.RemoveSprite(viewscreenSprite);
viewscreenSprite = sprMan.AddSprite("systemviewscreen.png");
sprMan.RemoveSprite(viewscreenSprite);
backgroundSprite = sprMan.AddUnorderedSprite("background.bmp");
backgroundSprite.sclX = backgroundSprite.texture.sizeX * 0.0162f;
backgroundSprite.sclY = backgroundSprite.texture.sizeY * 0.0162f;
AssignTextureToScreen(backgroundSprite.texture);
mainpanelSprite = sprMan.AddOverlaySprite("mainpanel.png");
mainpanelSprite.sclX = mainpanelSprite.texture.sizeX * 0.016175f;
mainpanelSprite.sclY = mainpanelSprite.texture.sizeY * 0.016175f;
mainpanelSprite.x -= 0.025f;
mainpanelSprite.y = -12.4f;
AssignTextureToScreen(mainpanelSprite.texture);
minimapSprite = sprMan.AddOverlaySprite("minimapzoomin.png");
minimapSprite.sclX = minimapSprite.texture.sizeX * 0.0158f;
minimapSprite.sclY = minimapSprite.texture.sizeY * 0.0162f;
minimapSprite.x = -16.725f;
minimapSprite.y = -13.075f;
AssignTextureToScreen(minimapSprite.texture);
trackerSprite = sprMan.AddOverlaySprite("default.bmp");
trackerSprite.sclX = trackerSprite.texture.sizeX * (sizeCoefficient * 2);
trackerSprite.sclY = trackerSprite.texture.sizeX * (sizeCoefficient * 2);
trackerSprite.relX = trackerCoordX;
trackerSprite.relY = trackerCoordY;
trackerSprite.AttachTo(minimapSprite, true);
AssignTextureToScreen(trackerSprite.texture);
viewscreenButtonLight = sprMan.AddOverlaySprite("default.bmp");
viewscreenButtonLight.sclX = 0.15f;
viewscreenButtonLight.sclY = 0.15f;
viewscreenButtonLight.x = -13.725f;
viewscreenButtonLight.y = -10.1f;
viewscreenButtonLight.colorOperation = Microsoft.DirectX.Direct3D.TextureOperation.SelectArg2;
viewscreenButtonLight.tintRed = 255;
AssignTextureToScreen(viewscreenButtonLight.texture);
viewscreenButtonSprite = sprMan.AddOverlaySprite("viewscreenbutton.png");
viewscreenButtonSprite.sclX = 2.05f;
viewscreenButtonSprite.sclY = 2.05f;
viewscreenButtonSprite.x = -15.025f;
viewscreenButtonSprite.y = -9.875f;
AssignTextureToScreen(viewscreenButtonSprite.texture);
viewscreenButtonBounds = sprMan.AddOverlaySprite("default.bmp");
viewscreenButtonBounds.sclX = 1.555f;
viewscreenButtonBounds.sclY = 0.435f;
viewscreenButtonBounds.x = -15.025f;
viewscreenButtonBounds.y = -9.875f;
viewscreenButtonBounds.fade = 255;
AssignTextureToScreen(viewscreenButtonBounds.texture);
zoominButtonSprite = sprMan.AddOverlaySprite("zoominbutton.png");
zoominButtonSprite.sclY = 1.025f;
zoominButtonSprite.x = -19.29f;
zoominButtonSprite.y = -9.865f;
AssignTextureToScreen(zoominButtonSprite.texture);
zoominButtonBounds = sprMan.AddOverlaySprite("default.bmp");
zoominButtonBounds.sclX = 0.7f;
zoominButtonBounds.sclY = 0.435f;
zoominButtonBounds.x = -19.29f;
zoominButtonBounds.y = -9.865f;
zoominButtonBounds.fade = 255;
AssignTextureToScreen(zoominButtonBounds.texture);
zoomoutButtonSprite = sprMan.AddOverlaySprite("zoomoutbutton.png");
zoomoutButtonSprite.sclY = 1.025f;
zoomoutButtonSprite.x = -17.6f;
zoomoutButtonSprite.y = -9.865f;
AssignTextureToScreen(zoomoutButtonSprite.texture);
zoomoutButtonBounds = sprMan.AddOverlaySprite("default.bmp");
zoomoutButtonBounds.sclX = 0.7f;
zoomoutButtonBounds.sclY = 0.435f;
zoomoutButtonBounds.x = -17.6f;
zoomoutButtonBounds.y = -9.865f;
zoomoutButtonBounds.fade = 255;
AssignTextureToScreen(zoomoutButtonBounds.texture);
radarSprite = sprMan.AddOverlaySprite("radar.png");
radarSprite.sclX = radarSprite.texture.sizeX * 0.016175f;
radarSprite.sclY = radarSprite.texture.sizeY * 0.016175f;
radarSprite.x = 16.75f;
radarSprite.y = -13.2f;
radarSprite.fade = 75;
radarSprite.rotZVelocity = -3;
AssignTextureToScreen(radarSprite.texture);
playerSprite = sprMan.AddSprite("ship.png");
playerSprite.sclX = playerSprite.texture.sizeX * sizeCoefficient;
playerSprite.sclY = playerSprite.texture.sizeY * sizeCoefficient;
playerSprite.y = 4.25f;
AssignTextureToScreen(playerSprite.texture);
viewrodlSprite = sprMan.AddSprite("viewrod.png");
viewrodlSprite.sclX = viewrodlSprite.texture.sizeX * sizeCoefficient;
viewrodlSprite.sclY = viewrodlSprite.texture.sizeY * sizeCoefficient;
viewrodlSprite.x = -20;
viewrodlSprite.y = -27f;
AssignTextureToScreen(viewrodlSprite.texture);
viewrodrSprite = sprMan.AddSprite("viewrod2.png");
viewrodrSprite.sclX = viewrodrSprite.texture.sizeX * sizeCoefficient;
viewrodrSprite.sclY = viewrodrSprite.texture.sizeY * sizeCoefficient;
viewrodrSprite.x = 20;
viewrodrSprite.y = -27;
viewrodrSprite.AttachTo(viewrodlSprite, true);
AssignTextureToScreen(viewrodrSprite.texture);
warpmeterSprite = sprMan.AddSprite("default.bmp");
warpmeterSprite.sclX *= 0.5f;
warpmeterSprite.sclY *= 3;
warpmeterSprite.x = -12.375f;
warpmeterSprite.y = -18.75f;
AssignTextureToScreen(warpmeterSprite.texture);
debugText1 = textMan.AddText(playerSprite.rotZ.ToString());
for (int i = 0; i < 150; i++)
{
spawnCoordX = (float)random.Next( -200, 200 )/10;
spawnCoordY = (float)random.Next( -180, 180 )/10;
spawnCount += 1;
dustSprite = sprMan.AddParticle("dust.bmp");
dustSprite.sclX = dustSprite.texture.sizeX * sizeCoefficient;
dustSprite.sclY = dustSprite.texture.sizeY * sizeCoefficient;
dustSprite.x = spawnCoordX;
dustSprite.y = spawnCoordY;
AssignTextureToScreen(dustSprite.texture);
dustSprite.rotZ = (float)random.Next( -200, 200 )/10;
dustSprite.customFunctions += new customFunction(ParticleControl);
}
#endregion
}
public override void Activity()
{
base.Activity();
#region player movement controls
// combines the x and y vectors to determine current ship speed
speed = Math.Abs(playerXmov) + Math.Abs(playerYmov);
if (warping == false)
{
// ship turning commands, if autopilot is activated turn automatically
if (autoPilot == false)
{
if(inpMan.KeyDown(Key.Left) || inpMan.KeyDown(Key.A))
playerSprite.rotZVelocity = 5;
else if(inpMan.KeyDown(Key.Right) || inpMan.KeyDown(Key.D))
playerSprite.rotZVelocity = -5;
else
playerSprite.rotZVelocity = 0;
}
else
{
// if autopilot is on and movement buttons are pressed, turn off
// autopilot and give control back to the player
if(inpMan.KeyDown(Key.Left) || inpMan.KeyDown(Key.A))
{
playerSprite.ClearInstructions();
autoPilot = false;
stopped = false;
turnTimer = 0;
}
else if(inpMan.KeyDown(Key.Right) || inpMan.KeyDown(Key.D))
{
playerSprite.ClearInstructions();
autoPilot = false;
stopped = false;
turnTimer = 0;
}
}
// math functions to calculate ship speed
if (inpMan.KeyDown(Key.Up) || inpMan.KeyDown(Key.W))
{
playerSprite.ClearInstructions();
autoPilot = false;
stopped = false;
turnTimer = 0;
if (speed < 12)
{
// increments the x and y vectors based on ships current angle
playerXmov += (float)0.08f*(Math.Cos(playerSprite.rotZ));
playerYmov += (float)0.08f*(Math.Sin(playerSprite.rotZ));
}
else
{
// keeps speed under 12 so direction doesn't become locked
playerXmov *= 0.995;
playerYmov *= 0.995;
}
}
else if (inpMan.KeyDown(Key.Down) || inpMan.KeyDown(Key.S))
{
playerSprite.ClearInstructions();
autoPilot = false;
stopped = false;
turnTimer = 0;
if (speed < 12)
{
// increments the x and y vectors based on ships current angle
playerXmov -= (float)0.04f*(Math.Cos(playerSprite.rotZ));
playerYmov -= (float)0.04f*(Math.Sin(playerSprite.rotZ));
}
else
{
// keeps speed under 12 so direction doesn't become locked
playerXmov *= 0.995;
playerYmov *= 0.995;
}
}
}
// space brakes!
if (inpMan.KeyDown(Key.Space))
{
playerSprite.ClearInstructions();
autoPilot = false;
stopped = false;
turnTimer = 0;
// decrement speed by 2% every frame
playerXmov *= 0.98;
playerYmov *= 0.98;
if (speed < 0.2)
{
// come to full stop
playerXmov = 0;
playerYmov = 0;
}
}
#endregion
#region warp travel controls
#region player control from sublight to warp functions
// gathers angle data on current vectors to later determine if ship is
// facing direction of motion(within 10% tolerance)
velocityAngle = (float)Math.Atan2( playerYmov, playerXmov);
angleDifference = FRB.CommonFunctions.AngleToAngle(velocityAngle, playerSprite.rotZ);
// checks speed and current ship angle and lights up the warp light to
// indicate warp is possible if conditions are met
if (speed > 10 && Math.Abs(angleDifference) < 2*Math.PI*.025f)
{
warpmeterSprite.fade = 50;
}
else
{
warpmeterSprite.fade = 0;
}
// if warp conditions are met from above, then also check to see if Z is
// being held and the warp meter will start charging
if (inpMan.KeyDown(Key.Z) && speed > 11.5 && Math.Abs(angleDifference) < 2*Math.PI*.025f)
{
playerSprite.ClearInstructions();
autoPilot = false;
stopped = false;
turnTimer = 0;
if (warpmeterSprite.y < -13.5)
{
warpmeterSprite.y += 5 * TimeManager.secondDifference;
}
// warp meter is full and warp is engaged, change backround and begin loading particles
if (warpmeterSprite.y > -13.5 && warping == false)
{
// if within a planetary system return to the worldmap view
if (sublightOnly == true)
{
sprMan.RemoveSprite(minimapSprite);
sprMan.RemoveSprite(trackerSprite);
sprMan.RemoveSprite(planet1Sprite);
sprMan.RemoveSprite(planet1Moon1Sprite);
sprMan.RemoveSprite(planet1Moon2Sprite);
if (trackerZoomin == true)
{
minimapSprite = sprMan.AddOverlaySprite("minimapzoomin.png");
AssignTextureToScreen(minimapSprite.texture);
}
else
{
minimapSprite = sprMan.AddOverlaySprite("minimapzoomout.png");
AssignTextureToScreen(minimapSprite.texture);
}
minimapSprite.sclX = minimapSprite.texture.sizeX * 0.0158f;
minimapSprite.sclY = minimapSprite.texture.sizeY * 0.0162f;
minimapSprite.x = -16.725f;
minimapSprite.y = -13.075f;
trackerSprite = sprMan.AddOverlaySprite("default.bmp");
AssignTextureToScreen(trackerSprite.texture);
trackerSprite.sclX = trackerSprite.texture.sizeX * (sizeCoefficient * 2);
trackerSprite.sclY = trackerSprite.texture.sizeX * (sizeCoefficient * 2);
trackerSprite.AttachTo(minimapSprite, true);
switch (currentPlanet)
{
case 1:
targetPlanet = 0;
currentPlanet = 0;
trackerCoordX = -1.9125f;
trackerCoordY = 1.55f;
break;
case 2:
targetPlanet = 0;
currentPlanet = 0;
trackerCoordX = 1.315f;
trackerCoordY = -0.25f;
break;
case 3:
targetPlanet = 0;
currentPlanet = 0;
trackerCoordX = -1.9125f;
trackerCoordY = 1.55f;
break;
case 4:
targetPlanet = 0;
currentPlanet = 0;
trackerCoordX = 1.315f;
trackerCoordY = -0.25f;
break;
default:
break;
}
if (viewrodlSprite.y == -2.25)
{
lowering = true;
viewscreenButtonLight.colorOperation = Microsoft.DirectX.Direct3D.TextureOperation.SelectArg2;
viewscreenButtonLight.tintGreen = 0;
viewscreenButtonLight.tintRed = 255;
}
sublightOnly = false;
}
warping = true;
warpCount = 0;
warpTimer = TimeManager.currentTick;
warpbackgroundSprite = sprMan.AddUnorderedSprite("warpbackground.bmp");
AssignTextureToScreen(warpbackgroundSprite.texture);
warpbackgroundSprite.sclX = warpbackgroundSprite.texture.sizeX * 0.0162f;
warpbackgroundSprite.sclY = warpbackgroundSprite.texture.sizeY * 0.0162f;
// loads 50 warp particles to random positions
for (int h = 0; h < 50; h++)
{
spawnCoordX = (float)random.Next( -200, 200 )/10;
spawnCoordY = (float)random.Next( -180, 180 )/10;
warpCount += 1;
warpparticleSprite = sprMan.AddParticle("warpparticle.png");
warpparticleSprite.sclX = warpparticleSprite.texture.sizeX * sizeCoefficient;
warpparticleSprite.sclY = warpparticleSprite.texture.sizeY * sizeCoefficient;
warpparticleSprite.x = spawnCoordX;
warpparticleSprite.y = spawnCoordY;
AssignTextureToScreen(warpparticleSprite.texture);
warpparticleSprite.rotZ = playerSprite.rotZ;
warpparticleSprite.customFunctions += new customFunction(WarpParticleControl);
}
}
}
// depletes warp meter when exiting warp, or if Z is released prematurely
else if (warping == false && stopped == false)
{
warpmeterSprite.y -= 5 * TimeManager.secondDifference;
if (warpmeterSprite.y < -18.75)
{
warpmeterSprite.y = -18.75f;
}
}
#endregion
#region warp effects
if (warping == true)
{
// moves tracker icon on the minimap
if (trackerZoomin == true && zoomin == true)
{
trackerCoordX += (float)playerXmov/1000;
trackerCoordY += (float)playerYmov/1000;
}
else
{
trackerCoordX += ((float)playerXmov/1000)*0.1262f;
trackerCoordY += ((float)playerYmov/1000)*0.1262f;
}
// spawn warp particles if there are less than 300 on screen
if (warpCount < 300)
{
// randomly selects numbers 1-4 to determine what side particle will spawn on
spawnCoord = (int)Math.Ceiling((float)random.Next( 1, 5 ));
switch (spawnCoord)
{
case 1: // left side
spawnCoordX = -22;
spawnCoordY = (float)random.Next( -180, 180 )/10;
break;
case 2: // right side
spawnCoordX = 22;
spawnCoordY = (float)random.Next( -180, 180 )/10;
break;
case 3: // top
spawnCoordX = (float)random.Next( -200, 200 )/10;
spawnCoordY = 18;
break;
case 4: // bottom
spawnCoordX = (float)random.Next( -200, 200 )/10;
spawnCoordY = -18;
break;
}
spawnTimer = 0.1f/(float)speed;
// loads a particle and assigns it to the WarpParticleControl function
if (TimeManager.SecondsSince(startTime) >= spawnTimer)
{
warpCount++;
startTime = TimeManager.currentTick;
warpparticleSprite = sprMan.AddParticle("warpparticle.png");
warpparticleSprite.sclX = warpparticleSprite.texture.sizeX * sizeCoefficient;
warpparticleSprite.sclY = warpparticleSprite.texture.sizeY * sizeCoefficient;
warpparticleSprite.x = spawnCoordX;
warpparticleSprite.y = spawnCoordY;
AssignTextureToScreen(warpparticleSprite.texture);
warpparticleSprite.rotZ = playerSprite.rotZ;
warpparticleSprite.customFunctions += new customFunction(WarpParticleControl);
}
}
// drop out of warp if Z is pressed at least 2 seconds after warp was engaged
if (inpMan.KeyDown(Key.Z) && TimeManager.SecondsSince((long)warpTimer) > 0.5)
{
playerSprite.ClearInstructions();
autoPilot = false;
stopped = false;
sprMan.RemoveSprite(warpbackgroundSprite);
warping = false;
turnTimer = 0;
playerXmov *= 0.25f;
playerYmov *= 0.25f;
// reloads 150 default dust particles
for (int i = 0; i < 150; i++)
{
spawnCoordX = (float)random.Next( -200, 200 )/10;
spawnCoordY = (float)random.Next( -180, 180 )/10;
spawnCount += 1;
dustSprite = sprMan.AddParticle("dust.bmp");
dustSprite.sclX = dustSprite.texture.sizeX * sizeCoefficient;
dustSprite.sclY = dustSprite.texture.sizeY * sizeCoefficient;
dustSprite.x = spawnCoordX;
dustSprite.y = spawnCoordY;
AssignTextureToScreen(dustSprite.texture);
dustSprite.rotZ = (float)random.Next( -200, 200 )/10;
dustSprite.customFunctions += new customFunction(ParticleControl);
}
}
}
#endregion
#endregion
#region dust spawning functions
if (speed > 0 && spawnCount < 300 && warping == false)
{
// generate a random number to indicate what side particle will spawn
spawnCoord = (int)Math.Ceiling((float)random.Next( 1, 5 ));
switch (spawnCoord)
{
case 1: // left side
spawnCoordX = -22;
spawnCoordY = (float)random.Next( -180, 180 )/10;
break;
case 2: // right side
spawnCoordX = 22;
spawnCoordY = (float)random.Next( -180, 180 )/10;
break;
case 3: // top
spawnCoordX = (float)random.Next( -200, 200 )/10;
spawnCoordY = 18;
break;
case 4: // bottom
spawnCoordX = (float)random.Next( -200, 200 )/10;
spawnCoordY = -18;
break;
}
// spawns particles at a rate based on current ship speed
spawnTimer = 0.1f/(float)speed;
if (TimeManager.SecondsSince(startTime) >= spawnTimer)
{
spawnCount++;
startTime = TimeManager.currentTick;
dustSprite = sprMan.AddParticle("dust.bmp");
dustSprite.sclX = dustSprite.texture.sizeX * sizeCoefficient;
dustSprite.sclY = dustSprite.texture.sizeY * sizeCoefficient;
dustSprite.x = spawnCoordX;
dustSprite.y = spawnCoordY;
AssignTextureToScreen(dustSprite.texture);
dustSprite.rotZ = (float)random.Next( -200, 200 )/10;
dustSprite.customFunctions += new customFunction(ParticleControl);
}
}
#endregion
#region viewscreen opening and manipulation
// if "V" is pressed and the viewscreen is closed, start raising viewrods upward
if (inpMan.KeyDown(Key.V) && raised == false && viewrodlSprite.y == -27)
{
viewscreenButtonLight.colorOperation = Microsoft.DirectX.Direct3D.TextureOperation.SelectArg2;
viewscreenButtonLight.tintRed = 0;
viewscreenButtonLight.tintGreen = 255;
viewrodlSprite.yVelocity = 90;
}
// if "V" is pressed and the viewscreen is open, start closing the viewscreen
if (inpMan.KeyDown(Key.V) && raised == true && viewrodlSprite.y == -2.25)
{
lowering = true;
viewscreenButtonLight.colorOperation = Microsoft.DirectX.Direct3D.TextureOperation.SelectArg2;
viewscreenButtonLight.tintGreen = 0;
viewscreenButtonLight.tintRed = 255;
}
// performs same function as pressing "V", only by clicking on the viewscreen button instead
if(cursor.primaryDown)
{
if (cursor.IsOn(viewscreenButtonBounds) && raised == false && viewrodlSprite.y == -27)
{
viewscreenButtonLight.colorOperation = Microsoft.DirectX.Direct3D.TextureOperation.SelectArg2;
viewscreenButtonLight.tintRed = 0;
viewscreenButtonLight.tintGreen = 255;
viewrodlSprite.yVelocity = 90;
}
if (cursor.IsOn(viewscreenButtonBounds) && raised == true && viewrodlSprite.y == -2.25)
{
lowering = true;
viewscreenButtonLight.colorOperation = Microsoft.DirectX.Direct3D.TextureOperation.SelectArg2;
viewscreenButtonLight.tintGreen = 0;
viewscreenButtonLight.tintRed = 255;
}
}
// stops viewrods from moving upward, and attached the viewscreen which begins to open
if (viewrodlSprite.y > -2.25)
{
viewrodlSprite.yVelocity = 0;
viewrodlSprite.y = -2.25f;
if (sublightOnly == false)
{
viewscreenSprite = sprMan.AddOverlaySprite("viewscreen.png");
AssignTextureToScreen(viewscreenSprite.texture);
}
else
{
viewscreenSprite = sprMan.AddOverlaySprite("systemviewscreen.png");
AssignTextureToScreen(viewscreenSprite.texture);
}
viewscreenSprite.fade = 50;
viewscreenSprite.y = 4.25f;
viewscreenSprite.sclX *= 0.1f;
viewscreenSprite.sclY *= 0.1f;
viewscreenSprite.customFunctions += new customFunction(ViewscreenControl);
}
// stops the viewrods once they've finished lowering
if (viewrodlSprite.y < -27)
{
viewrodlSprite.yVelocity = 0;
viewrodlSprite.y = -27;
}
#endregion
#region minimap controls and navigation of ship
#region zoomin and zoomout button controls
// zoom in the minimap when the = key is pressed
if (inpMan.KeyDown(Key.Equals) && zoomin == false && sublightOnly == false)
{
sprMan.RemoveSprite(minimapSprite);
minimapSprite = sprMan.AddOverlaySprite("minimapzoomin.png");
minimapSprite.sclX = minimapSprite.texture.sizeX * 0.0158f;
minimapSprite.sclY = minimapSprite.texture.sizeY * 0.0162f;
minimapSprite.x = -16.725f;
minimapSprite.y = -13.075f;
AssignTextureToScreen(minimapSprite.texture);
// remove the tracker if the ship is not within the new view, or add it if it is
if (trackerZoomin == false)
sprMan.RemoveSprite(trackerSprite);
else
{
trackerSprite = sprMan.AddOverlaySprite("default.bmp");
trackerSprite.sclX = trackerSprite.texture.sizeX * (sizeCoefficient * 2);
trackerSprite.sclY = trackerSprite.texture.sizeX * (sizeCoefficient * 2);
trackerSprite.relX = trackerCoordX;
trackerSprite.relY = trackerCoordY;
AssignTextureToScreen(trackerSprite.texture);
trackerSprite.AttachTo(minimapSprite, true);
}
zoomin = true;
// attach the planet marker sprite if it should be showing now
switch(targetPlanet)
{
case 1:
PlanetMarkerSpawn(-1.9125f, 1.55f, 0.365f);
break;
case 2:
PlanetMarkerSpawn(1.315f, -0.25f, 0.6f);
break;
default:
break;
}
}
// zoom out the minimap when the - key is pressed
if (inpMan.KeyDown(Key.Minus) && zoomin == true && sublightOnly == false)
{
sprMan.RemoveSprite(minimapSprite);
minimapSprite = sprMan.AddOverlaySprite("minimapzoomout.png");
minimapSprite.sclX = minimapSprite.texture.sizeX * 0.0158f;
minimapSprite.sclY = minimapSprite.texture.sizeY * 0.0162f;
AssignTextureToScreen(minimapSprite.texture);
minimapSprite.x = -16.725f;
minimapSprite.y = -13.075f;
// remove the tracker if the ship is not within the new view, or add it if it is
if (trackerZoomin == true)
{
trackerCoordX *= 0.1262f;
trackerCoordY *= 0.1262f;
sprMan.RemoveSprite(trackerSprite);
trackerSprite = sprMan.AddOverlaySprite("default.bmp");
trackerSprite.sclX = trackerSprite.texture.sizeX * (sizeCoefficient * 2);
trackerSprite.sclY = trackerSprite.texture.sizeX * (sizeCoefficient * 2);
trackerSprite.x = trackerCoordX;
trackerSprite.y = trackerCoordY;
AssignTextureToScreen(trackerSprite.texture);
trackerSprite.AttachTo(minimapSprite, true);
}
else
{
trackerSprite = sprMan.AddOverlaySprite("default.bmp");
trackerSprite.sclX = trackerSprite.texture.sizeX * (sizeCoefficient * 2);
trackerSprite.sclY = trackerSprite.texture.sizeX * (sizeCoefficient * 2);
trackerSprite.relX = trackerCoordX;
trackerSprite.relY = trackerCoordY;
AssignTextureToScreen(trackerSprite.texture);
trackerSprite.AttachTo(minimapSprite, true);
}
zoomin = false;
// attach the planet marker sprite if it should be showing now
switch(targetPlanet)
{
case 3:
PlanetMarkerSpawn(-1.9125f, 1.55f, 0.365f);
break;
case 4:
PlanetMarkerSpawn(1.315f, -0.25f, 0.6f);
break;
default:
break;
}
}
// zoom in the minimap when the zoom in button is clicked
if(cursor.primaryDown)
{
if (cursor.IsOn(zoominButtonBounds) && zoomin == false && sublightOnly == false)
{
sprMan.RemoveSprite(minimapSprite);
minimapSprite = sprMan.AddOverlaySprite("minimapzoomin.png");
minimapSprite.sclX = minimapSprite.texture.sizeX * 0.0158f;
minimapSprite.sclY = minimapSprite.texture.sizeY * 0.0162f;
AssignTextureToScreen(minimapSprite.texture);
minimapSprite.x = -16.725f;
minimapSprite.y = -13.075f;
// remove the tracker if the ship is not within the new view, or add it if it is
if (trackerZoomin == false)
sprMan.RemoveSprite(trackerSprite);
else
{
trackerSprite = sprMan.AddOverlaySprite("default.bmp");
trackerSprite.sclX = trackerSprite.texture.sizeX * (sizeCoefficient * 2);
trackerSprite.sclY = trackerSprite.texture.sizeX * (sizeCoefficient * 2);
trackerSprite.relX = trackerCoordX;
trackerSprite.relY = trackerCoordY;
AssignTextureToScreen(trackerSprite.texture);
trackerSprite.AttachTo(minimapSprite, true);
}
zoomin = true;
// attach the planet marker sprite if it should be showing now
switch(targetPlanet)
{
case 1:
PlanetMarkerSpawn(-1.9125f, 1.55f, 0.365f);
break;
case 2:
PlanetMarkerSpawn(1.315f, -0.25f, 0.6f);
break;
default:
break;
}
}
// zoom out the minimap when the zoom out button is clicked
if (cursor.IsOn(zoomoutButtonBounds) && zoomin == true && sublightOnly == false)
{
sprMan.RemoveSprite(minimapSprite);
minimapSprite = sprMan.AddOverlaySprite("minimapzoomout.png");
minimapSprite.sclX = minimapSprite.texture.sizeX * 0.0158f;
minimapSprite.sclY = minimapSprite.texture.sizeY * 0.0162f;
AssignTextureToScreen(minimapSprite.texture);
minimapSprite.x = -16.725f;
minimapSprite.y = -13.075f;
// remove the tracker if the ship is not within the new view, or add it if it is
if (trackerZoomin == true)
sprMan.RemoveSprite(trackerSprite);
else
{
trackerSprite = sprMan.AddOverlaySprite("default.bmp");
trackerSprite.sclX = trackerSprite.texture.sizeX * (sizeCoefficient * 2);
trackerSprite.sclY = trackerSprite.texture.sizeX * (sizeCoefficient * 2);
trackerSprite.relX = trackerCoordX;
trackerSprite.relY = trackerCoordY;
AssignTextureToScreen(trackerSprite.texture);
trackerSprite.AttachTo(minimapSprite, true);
}
zoomin = false;
// attach the planet marker sprite if it should be showing now
switch(targetPlanet)
{
case 3:
PlanetMarkerSpawn(-1.9125f, 1.55f, 0.365f);
break;
case 4:
PlanetMarkerSpawn(1.315f, -0.25f, 0.6f);
break;
default:
break;
}
}
}
// update the trackers position when the two trackerCoord values start changing
trackerSprite.relX = trackerCoordX;
trackerSprite.relY = trackerCoordY;
#endregion
#region navigation functions for tracking beacon
#region map is zoomed in and ship is within inner system
if (zoomin == true && trackerZoomin == true && sublightOnly == false)
{
if (trackerCoordX > 3.25)
{
trackerCoordX = (trackerCoordX * 0.1262f);
trackerCoordY = (trackerCoordY * 0.1262f);
sprMan.RemoveSprite(minimapSprite);
minimapSprite = sprMan.AddOverlaySprite("minimapzoomout.png");
minimapSprite.sclX = minimapSprite.texture.sizeX * 0.0158f;
minimapSprite.sclY = minimapSprite.texture.sizeY * 0.0162f;
minimapSprite.x = -16.725f;
minimapSprite.y = -13.075f;
AssignTextureToScreen(minimapSprite.texture);
sprMan.RemoveSprite(trackerSprite);
trackerSprite = sprMan.AddOverlaySprite("default.bmp");
trackerSprite.sclX = trackerSprite.texture.sizeX * (sizeCoefficient * 2);
trackerSprite.sclY = trackerSprite.texture.sizeX * (sizeCoefficient * 2);
trackerSprite.x = trackerCoordX;
trackerSprite.y = trackerCoordY;
AssignTextureToScreen(trackerSprite.texture);
trackerSprite.AttachTo(minimapSprite, true);
zoomin = false;
trackerZoomin = false;
// attach the planet marker sprite if it should be showing now
switch(targetPlanet)
{
case 3:
PlanetMarkerSpawn(-1.9125f, 1.55f, 0.365f);
break;
case 4:
PlanetMarkerSpawn(1.315f, -0.25f, 0.6f);
break;
default:
break;
}
}
if (trackerCoordX < -3.25)
{
trackerCoordX = (trackerCoordX * 0.1262f);
trackerCoordY = (trackerCoordY * 0.1262f);
sprMan.RemoveSprite(minimapSprite);
minimapSprite = sprMan.AddOverlaySprite("minimapzoomout.png");
minimapSprite.sclX = minimapSprite.texture.sizeX * 0.0158f;
minimapSprite.sclY = minimapSprite.texture.sizeY * 0.0162f;
minimapSprite.x = -16.725f;
minimapSprite.y = -13.075f;
AssignTextureToScreen(minimapSprite.texture);
sprMan.RemoveSprite(trackerSprite);
trackerSprite = sprMan.AddOverlaySprite("default.bmp");
trackerSprite.sclX = trackerSprite.texture.sizeX * (sizeCoefficient * 2);
trackerSprite.sclY = trackerSprite.texture.sizeX * (sizeCoefficient * 2);
trackerSprite.x = trackerCoordX;
trackerSprite.y = trackerCoordY;
AssignTextureToScreen(trackerSprite.texture);
trackerSprite.AttachTo(minimapSprite, true);
zoomin = false;
trackerZoomin = false;
// attach the planet marker sprite if it should be showing now
switch(targetPlanet)
{
case 3:
PlanetMarkerSpawn(-1.9125f, 1.55f, 0.365f);
break;
case 4:
PlanetMarkerSpawn(1.315f, -0.25f, 0.6f);
break;
default:
break;
}
}
if (trackerCoordY > 2.508)
{
trackerCoordX = (trackerCoordX * 0.1262f);
trackerCoordY = (trackerCoordY * 0.1262f);
sprMan.RemoveSprite(minimapSprite);
minimapSprite = sprMan.AddOverlaySprite("minimapzoomout.png");
minimapSprite.sclX = minimapSprite.texture.sizeX * 0.0158f;
minimapSprite.sclY = minimapSprite.texture.sizeY * 0.0162f;
minimapSprite.x = -16.725f;
minimapSprite.y = -13.075f;
AssignTextureToScreen(minimapSprite.texture);
sprMan.RemoveSprite(trackerSprite);
trackerSprite = sprMan.AddOverlaySprite("default.bmp");
trackerSprite.sclX = trackerSprite.texture.sizeX * (sizeCoefficient * 2);
trackerSprite.sclY = trackerSprite.texture.sizeX * (sizeCoefficient * 2);
trackerSprite.x = trackerCoordX;
trackerSprite.y = trackerCoordY;
AssignTextureToScreen(trackerSprite.texture);
trackerSprite.AttachTo(minimapSprite, true);
zoomin = false;
trackerZoomin = false;
// attach the planet marker sprite if it should be showing now
switch(targetPlanet)
{
case 3:
PlanetMarkerSpawn(-1.9125f, 1.55f, 0.365f);
break;
case 4:
PlanetMarkerSpawn(1.315f, -0.25f, 0.6f);
break;
default:
break;
}
}
if (trackerCoordY < -2.508)
{
trackerCoordX = (trackerCoordX * 0.1262f);
trackerCoordY = (trackerCoordY * 0.1262f);
sprMan.RemoveSprite(minimapSprite);
minimapSprite = sprMan.AddOverlaySprite("minimapzoomout.png");
minimapSprite.sclX = minimapSprite.texture.sizeX * 0.0158f;
minimapSprite.sclY = minimapSprite.texture.sizeY * 0.0162f;
minimapSprite.x = -16.725f;
minimapSprite.y = -13.075f;
AssignTextureToScreen(minimapSprite.texture);
sprMan.RemoveSprite(trackerSprite);
trackerSprite = sprMan.AddOverlaySprite("default.bmp");
trackerSprite.sclX = trackerSprite.texture.sizeX * (sizeCoefficient * 2);
trackerSprite.sclY = trackerSprite.texture.sizeX * (sizeCoefficient * 2);
trackerSprite.x = trackerCoordX;
trackerSprite.y = trackerCoordY;
AssignTextureToScreen(trackerSprite.texture);
trackerSprite.AttachTo(minimapSprite, true);
zoomin = false;
trackerZoomin = false;
// attach the planet marker sprite if it should be showing now
switch(targetPlanet)
{
case 3:
PlanetMarkerSpawn(-1.9125f, 1.55f, 0.365f);
break;
case 4:
PlanetMarkerSpawn(1.315f, -0.25f, 0.6f);
break;
default:
break;
}
}
}
#endregion
#region map is zoomed out and ship is within inner system
if (zoomin == false && trackerZoomin == true && sublightOnly == false)
{
if (trackerCoordX > 0.41015)
{
sprMan.RemoveSprite(trackerSprite);
trackerSprite = sprMan.AddOverlaySprite("default.bmp");
trackerSprite.sclX = trackerSprite.texture.sizeX * (sizeCoefficient * 2);
trackerSprite.sclY = trackerSprite.texture.sizeX * (sizeCoefficient * 2);
trackerSprite.x = trackerCoordX;
trackerSprite.y = trackerCoordY;
AssignTextureToScreen(trackerSprite.texture);
trackerSprite.AttachTo(minimapSprite, true);
trackerZoomin = false;
}
if (trackerCoordX < -0.41015)
{
sprMan.RemoveSprite(trackerSprite);
trackerSprite = sprMan.AddOverlaySprite("default.bmp");
trackerSprite.sclX = trackerSprite.texture.sizeX * (sizeCoefficient * 2);
trackerSprite.sclY = trackerSprite.texture.sizeX * (sizeCoefficient * 2);
trackerSprite.x = trackerCoordX;
trackerSprite.y = trackerCoordY;
AssignTextureToScreen(trackerSprite.texture);
trackerSprite.AttachTo(minimapSprite, true);
trackerZoomin = false;
}
if (trackerCoordY > 0.316572)
{
sprMan.RemoveSprite(trackerSprite);
trackerSprite = sprMan.AddOverlaySprite("default.bmp");
trackerSprite.sclX = trackerSprite.texture.sizeX * (sizeCoefficient * 2);
trackerSprite.sclY = trackerSprite.texture.sizeX * (sizeCoefficient * 2);
trackerSprite.x = trackerCoordX;
trackerSprite.y = trackerCoordY;
AssignTextureToScreen(trackerSprite.texture);
trackerSprite.AttachTo(minimapSprite, true);
trackerZoomin = false;
}
if (trackerCoordY < -0.316572)
{
sprMan.RemoveSprite(trackerSprite);
trackerSprite = sprMan.AddOverlaySprite("default.bmp");
trackerSprite.sclX = trackerSprite.texture.sizeX * (sizeCoefficient * 2);
trackerSprite.sclY = trackerSprite.texture.sizeX * (sizeCoefficient * 2);
trackerSprite.x = trackerCoordX;
trackerSprite.y = trackerCoordY;
AssignTextureToScreen(trackerSprite.texture);
trackerSprite.AttachTo(minimapSprite, true);
trackerZoomin = false;
}
}
#endregion
#region map is zoomed in and ship is within outer system
if (zoomin == true && trackerZoomin == false && sublightOnly == false)
{
if (trackerCoordX > 3.25)
trackerCoordX = 3.25f;
if (trackerCoordX < -3.25)
trackerCoordX = -3.25f;
if (trackerCoordY > 2.508)
trackerCoordY = 2.508f;
if (trackerCoordY < -2.65)
trackerCoordY = -2.65f;
if (trackerCoordX > -0.41015 && trackerCoordX < 0.41015
&& trackerCoordY < 0.316572 && trackerCoordY > -0.316572)
{
trackerCoordX = (trackerCoordX / 0.1262f);
trackerCoordY = (trackerCoordY / 0.1262f);
trackerSprite = sprMan.AddOverlaySprite("default.bmp");
trackerSprite.sclX = trackerSprite.texture.sizeX * (sizeCoefficient * 2);
trackerSprite.sclY = trackerSprite.texture.sizeX * (sizeCoefficient * 2);
trackerSprite.x = trackerCoordX;
trackerSprite.y = trackerCoordY;
AssignTextureToScreen(trackerSprite.texture);
trackerSprite.AttachTo(minimapSprite, true);
trackerZoomin = true;
}
}
#endregion
#region map is zoomed out and ship is within outer system
if (zoomin == false && trackerZoomin == false && sublightOnly == false)
{
if (trackerCoordX > 3.25)
trackerCoordX = 3.25f;
if (trackerCoordX < -3.25)
trackerCoordX = -3.25f;
if (trackerCoordY > 2.508)
trackerCoordY = 2.508f;
if (trackerCoordY < -2.65)
trackerCoordY = -2.65f;
if (trackerCoordX > -0.41015 && trackerCoordX < 0.41015
&& trackerCoordY < 0.316572 && trackerCoordY > -0.316572)
{
trackerCoordX = (trackerCoordX / 0.1262f);
trackerCoordY = (trackerCoordY / 0.1262f);
sprMan.RemoveSprite(minimapSprite);
minimapSprite = sprMan.AddOverlaySprite("minimapzoomin.png");
minimapSprite.sclX = minimapSprite.texture.sizeX * 0.0158f;
minimapSprite.sclY = minimapSprite.texture.sizeY * 0.0162f;
minimapSprite.x = -16.725f;
minimapSprite.y = -13.075f;
AssignTextureToScreen(minimapSprite.texture);
sprMan.RemoveSprite(trackerSprite);
trackerSprite = sprMan.AddOverlaySprite("default.bmp");
trackerSprite.sclX = trackerSprite.texture.sizeX * (sizeCoefficient * 2);
trackerSprite.sclY = trackerSprite.texture.sizeX * (sizeCoefficient * 2);
trackerSprite.x = trackerCoordX;
trackerSprite.y = trackerCoordY;
AssignTextureToScreen(trackerSprite.texture);
trackerSprite.AttachTo(minimapSprite, true);
zoomin = true;
trackerZoomin = true;
// attach the planet marker sprite if it should be showing now
switch(targetPlanet)
{
case 1:
PlanetMarkerSpawn(-1.9125f, 1.55f, 0.365f);
break;
case 2:
PlanetMarkerSpawn(1.315f, -0.25f, 0.6f);
break;
default:
break;
}
}
}
#endregion
#endregion
#region functions for entering system map and movement within
#region calculates distances between the tracker and selected object
// calculates the distance between the tracker and the selected
// destination
if (sublightOnly == false && trackerZoomin == true)
{
switch (targetPlanet)
{
case 1:
trackerDistance = (Math.Abs(trackerCoordX + 1.9125f) +
Math.Abs(trackerCoordY - 1.55f));
break;
case 2:
trackerDistance = (Math.Abs(trackerCoordX - 1.315f) +
Math.Abs(trackerCoordY + 0.25f));
break;
default:
break;
}
}
if (sublightOnly == false && trackerZoomin == false)
{
switch (targetPlanet)
{
case 3:
trackerDistance = (Math.Abs(trackerCoordX + 1.9125f) +
Math.Abs(trackerCoordY - 1.55f));
break;
case 4:
trackerDistance = (Math.Abs(trackerCoordX - 1.315f) +
Math.Abs(trackerCoordY + 0.25f));
break;
default:
break;
}
}
#endregion
#region enter the system map and load all objects within
// detection of planet collision and prompt to enter planetary system map
if (trackerDistance < 0.25 && targetPlanet > 0 && sublightOnly == false)
{
if (trackerZoomin == true && targetPlanet < 3 || trackerZoomin
== false && targetPlanet > 2)
{
// when the tracker is close enough to a planet, run the functions
// for dropping out of warp, as well as load the new map plus any
// planets moons that are now within view
sublightOnly = true;
warping = false;
autoPilot = false;
stopped = false;
turnTimer = 0;
sprMan.RemoveSprite(warpbackgroundSprite);
sprMan.RemoveSprite(minimapSprite);
sprMan.RemoveSprite(trackerSprite);
sprMan.RemoveSprite(planetmarkerSprite);
minimapSprite = sprMan.AddOverlaySprite("systemmap.png");
minimapSprite.sclX = minimapSprite.texture.sizeX * 0.0158f;
minimapSprite.sclY = minimapSprite.texture.sizeY * 0.0162f;
minimapSprite.x = -16.725f;
minimapSprite.y = -13.075f;
AssignTextureToScreen(minimapSprite.texture);
trackerSprite = sprMan.AddOverlaySprite("default.bmp");
trackerSprite.sclX = trackerSprite.texture.sizeX * (sizeCoefficient * 2);
trackerSprite.sclY = trackerSprite.texture.sizeX * (sizeCoefficient * 2);
trackerSprite.AttachTo(minimapSprite, true);
AssignTextureToScreen(trackerSprite.texture);
switch(targetPlanet)
{
case 1:
trackerCoordX = (trackerCoordX + 1.9125f) * 10;
trackerCoordY = (trackerCoordY - 1.55f) * 10;
break;
case 2:
trackerCoordX = (trackerCoordX - 1.315f) * 10;
trackerCoordY = (trackerCoordY + 0.25f) * 10;
break;
case 3:
trackerCoordX = (trackerCoordX + 1.9125f) * 10;
trackerCoordY = (trackerCoordY - 1.55f) * 10;
break;
case 4:
trackerCoordX = (trackerCoordX - 1.315f) * 10;
trackerCoordY = (trackerCoordY + 0.25f) * 10;
break;
default:
break;
}
planet1Sprite = sprMan.AddSprite("defaultcircle.png");
planet1Sprite.sclX *= 4.0f;
planet1Sprite.sclY *= 4.0f;
planet1Sprite.x = (trackerCoordX * -25.1f) + 1.255f;
planet1Sprite.y = (trackerCoordY * -25.1f) + 3.245f;
planet1Sprite.colorOperation = Microsoft.DirectX.Direct3D.TextureOperation.SelectArg2;
planet1Sprite.tintGreen = 0;
planet1Sprite.tintRed = 255;
AssignTextureToScreen(planet1Sprite.texture);
planet1Moon1Sprite = sprMan.AddSprite("defaultcircle.png");
planet1Moon1Sprite.sclX *= 1.745f;
planet1Moon1Sprite.sclY *= 1.745f;
planet1Moon1Sprite.x = (trackerCoordX * -25.1f) - 42.25f;
planet1Moon1Sprite.y = (trackerCoordY * -25.1f) - 1.8f;
planet1Moon1Sprite.colorOperation = Microsoft.DirectX.Direct3D.TextureOperation.SelectArg2;
planet1Moon1Sprite.tintGreen = 0;
planet1Moon1Sprite.tintRed = 255;
AssignTextureToScreen(planet1Moon1Sprite.texture);
planet1Moon2Sprite = sprMan.AddSprite("defaultcircle.png");
planet1Moon2Sprite.sclX *= 1.745f;
planet1Moon2Sprite.sclY *= 1.745f;
planet1Moon2Sprite.x = (trackerCoordX * -25.1f) + 21.0f;
planet1Moon2Sprite.y = (trackerCoordY * -25.1f) + 29.5f;
planet1Moon2Sprite.colorOperation = Microsoft.DirectX.Direct3D.TextureOperation.SelectArg2;
planet1Moon2Sprite.tintGreen = 0;
planet1Moon2Sprite.tintRed = 255;
AssignTextureToScreen(planet1Moon2Sprite.texture);
playerNavAngle = playerSprite.rotZ;
sprMan.RemoveSprite(playerSprite);
playerSprite = sprMan.AddSprite("ship.png");
playerSprite.sclX = playerSprite.texture.sizeX * sizeCoefficient;
playerSprite.sclY = playerSprite.texture.sizeY * sizeCoefficient;
playerSprite.y = 4.25f;
playerSprite.rotZ = (float)playerNavAngle;
AssignTextureToScreen(playerSprite.texture);
playerXmov = 0.0f;
playerYmov = 0.0f;
currentPlanet = targetPlanet;
targetPlanet = 0;
// reloads 150 default dust particles
for (int i = 0; i < 150; i++)
{
spawnCoordX = (float)random.Next( -200, 200 )/10;
spawnCoordY = (float)random.Next( -180, 180 )/10;
spawnCount += 1;
dustSprite = sprMan.AddParticle("dust.bmp");
dustSprite.sclX = dustSprite.texture.sizeX * sizeCoefficient;
dustSprite.sclY = dustSprite.texture.sizeY * sizeCoefficient;
dustSprite.x = spawnCoordX;
dustSprite.y = spawnCoordY;
AssignTextureToScreen(dustSprite.texture);
dustSprite.rotZ = (float)random.Next( -200, 200 )/10;
dustSprite.customFunctions += new customFunction(ParticleControl);
}
// closes the viewscreen map if it's already open
if (viewrodlSprite.y == -2.25)
{
lowering = true;
viewscreenButtonLight.colorOperation = Microsoft.DirectX.Direct3D.TextureOperation.SelectArg2;
viewscreenButtonLight.tintGreen = 0;
viewscreenButtonLight.tintRed = 255;
}
}
}
#endregion
#region manage movement and collisions of all objects
// if in a planetary map instead of the system map, regular movement
// causes the minimap tracker and the planets/moons to move
if (sublightOnly == true)
{
trackerCoordX += (float)playerXmov/50 * TimeManager.secondDifference;
trackerCoordY += (float)playerYmov/50 * TimeManager.secondDifference;
if (borderCollisionX == false)
{
planet1Sprite.x -= (float)playerXmov/2 * TimeManager.secondDifference;
planet1Moon1Sprite.x -= (float)playerXmov/2 * TimeManager.secondDifference;
planet1Moon2Sprite.x -= (float)playerXmov/2 * TimeManager.secondDifference;
}
if (borderCollisionY == false)
{
planet1Sprite.y -= (float)playerYmov/2 * TimeManager.secondDifference;
planet1Moon1Sprite.y -= (float)playerYmov/2 * TimeManager.secondDifference;
planet1Moon2Sprite.y -= (float)playerYmov/2 * TimeManager.secondDifference;
}
// simulates gravity from the planet and moons and pulls the player
// towards them
if (speed < 12 && inpMan.KeyDown(Key.Space) == false)
{
planet1Xdiff = planet1Sprite.x - playerSprite.x;
planet1Ydiff = planet1Sprite.y - playerSprite.y;
planet1Angle = Math.Atan2(planet1Ydiff, planet1Xdiff);
playerXmov += (0.1 / Math.Abs(playerSprite.x - planet1Sprite.x))*(Math.Cos(planet1Angle));
playerYmov += (0.1 / Math.Abs(playerSprite.y - planet1Sprite.y))*(Math.Sin(planet1Angle));
planet1Moon1Xdiff = planet1Sprite.x - playerSprite.x;
planet1Moon1Ydiff = planet1Sprite.y - playerSprite.y;
planet1Moon1Angle = Math.Atan2(planet1Moon1Ydiff, planet1Moon1Xdiff);
playerXmov += (0.05 / Math.Abs(playerSprite.x - planet1Sprite.x))*(Math.Cos(planet1Moon1Angle));
playerYmov += (0.05 / Math.Abs(playerSprite.y - planet1Sprite.y))*(Math.Sin(planet1Moon1Angle));
planet1Moon2Xdiff = planet1Sprite.x - playerSprite.x;
planet1Moon2Ydiff = planet1Sprite.y - playerSprite.y;
planet1Moon2Angle = Math.Atan2(planet1Moon2Ydiff, planet1Moon2Xdiff);
playerXmov += (0.05 / Math.Abs(playerSprite.x - planet1Sprite.x))*(Math.Cos(planet1Moon2Angle));
playerYmov += (0.05 / Math.Abs(playerSprite.y - planet1Sprite.y))*(Math.Sin(planet1Moon2Angle));
}
else
{
// keeps speed under 12 so direction doesn't become locked
playerXmov *= 0.995;
playerYmov *= 0.995;
}
// detects if ship itself collides with a planet or moon and reverse
// the ships direction
if (Collisions.circleCollision(planet1Sprite, playerSprite))
{
if (targetPlanet == 1)
{
IsActivityFinished = true;
NextScreen = "GameName.Screens.PlanetScreen";
}
}
else if (Collisions.circleCollision(planet1Moon1Sprite, playerSprite))
{
if (targetPlanet == 2)
{
IsActivityFinished = true;
NextScreen = "GameName.Screens.PlanetScreen";
}
}
else if (Collisions.circleCollision(planet1Moon2Sprite, playerSprite))
{
if (targetPlanet == 3)
{
IsActivityFinished = true;
NextScreen = "GameName.Screens.PlanetScreen";
}
}
// keeps tracker within the minimap borders, and keeps the planets
// from moving any further if the tracker moves against these borders
if (trackerCoordX > 3.25)
{
trackerCoordX = 3.25f;
borderCollisionX = true;
}
else if (trackerCoordX < -3.25)
{
trackerCoordX = -3.25f;
borderCollisionX = true;
}
else
{
borderCollisionX = false;
}
if (trackerCoordY > 2.508)
{
trackerCoordY = 2.508f;
borderCollisionY = true;
}
else if (trackerCoordY < -2.65)
{
trackerCoordY = -2.65f;
borderCollisionY = true;
}
else
{
borderCollisionY = false;
}
}
#endregion
#endregion
#endregion
#region autopilot functions
#region autopilot activation and rotation
if (inpMan.KeyDown(Key.Q) && warping == false && sublightOnly == false)
{
turnTimer = 0;
autoPilot = true;
}
// stops the ship first before performing any turning
if (autoPilot == true && stopped == false)
{
playerXmov *= 0.98;
playerYmov *= 0.98;
if (speed < 0.2)
{
// come to full stop
playerXmov = 0;
playerYmov = 0;
stopped = true;
}
}
// automates all movement from here on out, unless player wrests control with
// the use of any movement control
if (trackerZoomin == true && stopped == true && sublightOnly == false)
{
// determines which planet is selected and point the ship towards it
switch (targetPlanet)
{
case 1:
playerXdiff = -1.9125f - trackerCoordX;
playerYdiff = 1.55f - trackerCoordY;
playerNavAngle = Math.Atan2(playerYdiff, playerXdiff);
angleToRotate = CommonFunctions.AngleToAngle(playerSprite.rotZ, (float)playerNavAngle);
secondsToTake = Math.Abs(angleToRotate / 5.0f);
if (turnTimer == 0)
{
turnTimer = secondsToTake;
turnTime = TimeManager.currentTick;
}
FRB.Instructions.InstructionManager.RotateSpriteToAccurate
( playerSprite, 0, 0, (float)playerNavAngle, secondsToTake);
break;
case 2:
playerXdiff = 1.315f - trackerCoordX;
playerYdiff = -0.25f - trackerCoordY;
playerNavAngle = Math.Atan2(playerYdiff, playerXdiff);
angleToRotate = CommonFunctions.AngleToAngle(playerSprite.rotZ, (float)playerNavAngle);
secondsToTake = Math.Abs(angleToRotate / 5.0f);
if (turnTimer == 0)
{
turnTimer = secondsToTake;
turnTime = TimeManager.currentTick;
}
FRB.Instructions.InstructionManager.RotateSpriteToAccurate
( playerSprite, 0, 0, (float)playerNavAngle, secondsToTake);
break;
case 3:
playerXdiff = (-1.9125f / 0.1262f) - trackerCoordX;
playerYdiff = (1.55f / 0.1262f) - trackerCoordY;
playerNavAngle = Math.Atan2(playerYdiff, playerXdiff);
angleToRotate = CommonFunctions.AngleToAngle(playerSprite.rotZ, (float)playerNavAngle);
secondsToTake = Math.Abs(angleToRotate / 5.0f);
if (turnTimer == 0)
{
turnTimer = secondsToTake;
turnTime = TimeManager.currentTick;
}
FRB.Instructions.InstructionManager.RotateSpriteToAccurate
( playerSprite, 0, 0, (float)playerNavAngle, secondsToTake);
break;
case 4:
playerXdiff = (1.315f / 0.1262f) - trackerCoordX;
playerYdiff = (-0.25f / 0.1262f) - trackerCoordY;
playerNavAngle = Math.Atan2(playerYdiff, playerXdiff);
angleToRotate = CommonFunctions.AngleToAngle(playerSprite.rotZ, (float)playerNavAngle);
secondsToTake = Math.Abs(angleToRotate / 5.0f);
if (turnTimer == 0)
{
turnTimer = secondsToTake;
turnTime = TimeManager.currentTick;
}
FRB.Instructions.InstructionManager.RotateSpriteToAccurate
( playerSprite, 0, 0, (float)playerNavAngle, secondsToTake);
break;
default:
break;
}
}
if (trackerZoomin == false && stopped == true && sublightOnly == false)
{
switch (targetPlanet)
{
case 1:
playerXdiff = (-1.9125f * 0.1262f) - trackerCoordX;
playerYdiff = (1.55f * 0.1262f) - trackerCoordY;
playerNavAngle = Math.Atan2(playerYdiff, playerXdiff);
angleToRotate = CommonFunctions.AngleToAngle(playerSprite.rotZ, (float)playerNavAngle);
secondsToTake = Math.Abs(angleToRotate / 5.0f);
if (turnTimer == 0)
{
turnTimer = secondsToTake;
turnTime = TimeManager.currentTick;
}
FRB.Instructions.InstructionManager.RotateSpriteToAccurate
( playerSprite, 0, 0, (float)playerNavAngle, secondsToTake);
break;
case 2:
playerXdiff = (1.315f * 0.1262f) - trackerCoordX;
playerYdiff = (-0.25f * 0.1262f) - trackerCoordY;
playerNavAngle = Math.Atan2(playerYdiff, playerXdiff);
angleToRotate = CommonFunctions.AngleToAngle(playerSprite.rotZ, (float)playerNavAngle);
secondsToTake = Math.Abs(angleToRotate / 5.0f);
if (turnTimer == 0)
{
turnTimer = secondsToTake;
turnTime = TimeManager.currentTick;
}
FRB.Instructions.InstructionManager.RotateSpriteToAccurate
( playerSprite, 0, 0, (float)playerNavAngle, secondsToTake);
break;
case 3:
playerXdiff = -1.9125f - trackerCoordX;
playerYdiff = 1.55f - trackerCoordY;
playerNavAngle = Math.Atan2(playerYdiff, playerXdiff);
angleToRotate = CommonFunctions.AngleToAngle(playerSprite.rotZ, (float)playerNavAngle);
secondsToTake = Math.Abs(angleToRotate / 5.0f);
if (turnTimer == 0)
{
turnTimer = secondsToTake;
turnTime = TimeManager.currentTick;
}
FRB.Instructions.InstructionManager.RotateSpriteToAccurate
( playerSprite, 0, 0, (float)playerNavAngle, secondsToTake);
break;
case 4:
playerXdiff = 1.315f - trackerCoordX;
playerYdiff = -0.25f - trackerCoordY;
playerNavAngle = Math.Atan2(playerYdiff, playerXdiff);
angleToRotate = CommonFunctions.AngleToAngle(playerSprite.rotZ, (float)playerNavAngle);
secondsToTake = Math.Abs(angleToRotate / 5.0f);
if (turnTimer == 0)
{
turnTimer = secondsToTake;
turnTime = TimeManager.currentTick;
}
FRB.Instructions.InstructionManager.RotateSpriteToAccurate
( playerSprite, 0, 0, (float)playerNavAngle, secondsToTake);
break;
default:
break;
}
}
#endregion
#region auto movement of ship and warping functions
if (autoPilot == true && stopped == true && targetPlanet > 0)
{
// autopilot warping uses the same functions as normal movement and warping
if (warping == false && TimeManager.SecondsSince(turnTime) >= turnTimer)
{
if (speed < 12)
{
// increments the x and y vectors based on ships current angle
playerXmov += (float)0.08f*(Math.Cos(playerSprite.rotZ));
playerYmov += (float)0.08f*(Math.Sin(playerSprite.rotZ));
}
else
{
// keeps speed under 12 so direction doesn't become locked
playerXmov *= 0.995;
playerYmov *= 0.995;
}
}
// warp meter is full and warp is engaged, change backround and begin loading particles
if (warpmeterSprite.y > -13.5 && warping == false && sublightOnly == false)
{
autoPilot = false;
stopped = false;
warping = true;
warpCount = 0;
warpTimer = TimeManager.currentTick;
warpbackgroundSprite = sprMan.AddUnorderedSprite("warpbackground.bmp");
warpbackgroundSprite.sclX = warpbackgroundSprite.texture.sizeX * 0.0162f;
warpbackgroundSprite.sclY = warpbackgroundSprite.texture.sizeY * 0.0162f;
// loads 50 warp particles to random positions
for (int h = 0; h < 50; h++)
{
spawnCoordX = (float)random.Next( -200, 200 )/10;
spawnCoordY = (float)random.Next( -180, 180 )/10;
warpCount += 1;
warpparticleSprite = sprMan.AddParticle("warpparticle.png");
warpparticleSprite.sclX = warpparticleSprite.texture.sizeX * sizeCoefficient;
warpparticleSprite.sclY = warpparticleSprite.texture.sizeY * sizeCoefficient;
warpparticleSprite.x = spawnCoordX;
warpparticleSprite.y = spawnCoordY;
warpparticleSprite.rotZ = playerSprite.rotZ;
warpparticleSprite.customFunctions += new customFunction(WarpParticleControl);
}
}
if (speed > 11.5 && Math.Abs(angleDifference) < 2*Math.PI*.025f && sublightOnly == false)
{
if (warpmeterSprite.y < -13.5)
{
warpmeterSprite.y += 5 * TimeManager.secondDifference;
}
}
}
#endregion
#endregion
textMan.RemoveText(debugText1);
debugText1 = textMan.AddText(playerXmov.ToString());
}
public override void Destroy()
{
base.Destroy();
}
// controls all dust particles for movement and destruction
public void ParticleControl(Sprite sprite, SpriteManager sprMan)
{
// move dust based on the current values for the ships speed
sprite.x -= ((float)playerXmov * ((sprite.rotZ/10)+1)) * TimeManager.secondDifference;
sprite.y -= ((float)playerYmov * ((sprite.rotZ/10)+1)) * TimeManager.secondDifference;
// removes dust particles if they touch a screen border, or if warp is active
if(sprite.x > 22)
{
sprMan.RemoveSprite(sprite);
spawnCount--;
}
if(sprite.x < -22)
{
sprMan.RemoveSprite(sprite);
spawnCount--;
}
if(sprite.y > 18)
{
sprMan.RemoveSprite(sprite);
spawnCount--;
}
if(sprite.y < -18)
{
sprMan.RemoveSprite(sprite);
spawnCount--;
}
if (warping == true)
{
sprMan.RemoveSprite(sprite);
spawnCount = 0;
}
}
// controls all warp particles for movement and destruction
public void WarpParticleControl(Sprite sprite, SpriteManager sprMan)
{
// moves particles based on a set speed, usually ship speed when entering
// warp
sprite.x -= ((float)playerXmov * 6) * TimeManager.secondDifference;
sprite.y -= ((float)playerYmov * 6) * TimeManager.secondDifference;
// removes warp particles if they touch a screen border, or if warp is
// deactivated
if(sprite.x > 22)
{
sprMan.RemoveSprite(sprite);
warpCount--;
}
if(sprite.x < -22)
{
sprMan.RemoveSprite(sprite);
warpCount--;
}
if(sprite.y > 18)
{
sprMan.RemoveSprite(sprite);
warpCount--;
}
if(sprite.y < -18)
{
sprMan.RemoveSprite(sprite);
warpCount--;
}
if (warping == false)
{
sprMan.RemoveSprite(sprite);
warpCount = 0;
}
}
// controls the viewscreen once opened
public void ViewscreenControl(Sprite sprite, SpriteManager sprMan)
{
#region cause viewscreen to open up at moment of creation
// once rods are raised the viewscreen is attached and this function starts
// to run, first it stretches it out along the X axis, and then the Y, once
// done "raised" is set to true and the next steps are executed
if (raised == false)
{
if (sprite.sclX < 36)
sprite.sclX += 150 * TimeManager.secondDifference;
else
sprite.sclX = 36;
if (sprite.sclX == 36 && sprite.sclY < 36)
sprite.sclY += 150 * TimeManager.secondDifference;
else if (sprite.sclY > 36)
{
sprite.sclY = 36;
raised = true;
}
}
#endregion
#region load all of the invisible clickable buttons onto the viewscreen
// buttons for the system map view
if (viewbuttonsloaded == false && raised == true && sublightOnly == false)
{
planetButton1 = sprMan.AddOverlaySprite("defaultcircle.png");
planetButton1.sclX = 2.05f;
planetButton1.sclY = 2.05f;
planetButton1.x = -13.9f;
planetButton1.y = 9.65f;
planetButton1.fade = 255;
AssignTextureToScreen(planetButton1.texture);
planetButton2 = sprMan.AddOverlaySprite("defaultcircle.png");
planetButton2.sclX = 2.45f;
planetButton2.sclY = 2.45f;
planetButton2.x = -4.55f;
planetButton2.y = 1.225f;
planetButton2.fade = 255;
AssignTextureToScreen(planetButton2.texture);
planetButton3 = sprMan.AddOverlaySprite("defaultcircle.png");
planetButton3.sclX = 1.95f;
planetButton3.sclY = 1.95f;
planetButton3.x = 5.75f;
planetButton3.y = 9.75f;
planetButton3.fade = 255;
AssignTextureToScreen(planetButton3.texture);
planetButton4 = sprMan.AddOverlaySprite("defaultcircle.png");
planetButton4.sclX = 1.45f;
planetButton4.sclY = 1.45f;
planetButton4.x = 12.1f;
planetButton4.y = 0.425f;
planetButton4.fade = 255;
AssignTextureToScreen(planetButton4.texture);
viewbuttonsloaded = true;
}
// buttons for the planetary map view
if (viewbuttonsloaded == false && raised == true && sublightOnly == true)
{
planetButton1 = sprMan.AddOverlaySprite("defaultcircle.png");
planetButton1.sclX = 2.75f;
planetButton1.sclY = 2.75f;
planetButton1.x = 1.25f;
planetButton1.y = 4.0f;
planetButton1.fade = 255;
AssignTextureToScreen(planetButton1.texture);
planetButton2 = sprMan.AddOverlaySprite("defaultcircle.png");
planetButton2.sclX = 1.2f;
planetButton2.sclY = 1.2f;
planetButton2.x = -9.3f;
planetButton2.y = 2.0f;
planetButton2.fade = 255;
AssignTextureToScreen(planetButton2.texture);
planetButton3 = sprMan.AddOverlaySprite("defaultcircle.png");
planetButton3.sclX = 1.0f;
planetButton3.sclY = 1.0f;
planetButton3.x = 5.8f;
planetButton3.y = 9.0f;
planetButton3.fade = 255;
AssignTextureToScreen(planetButton3.texture);
viewbuttonsloaded = true;
}
#endregion
#region functions for clicking planet buttons and setting destinations
// once buttons are loaded clicking them stops autopilot if it's active,
// and sets the target planet, marking it on the minimap(located in the
// minimap region)
if (viewbuttonsloaded == true && sublightOnly == false)
{
if (inpMan.KeyDown(Key.D1))
{
targetPlanet = 1;
playerSprite.ClearInstructions();
autoPilot = false;
stopped = false;
turnTimer = 0;
sprMan.RemoveSprite(planetmarkerSprite);
if (zoomin == true)
{
PlanetMarkerSpawn( -1.9125f, 1.55f, 0.365f);
}
}
if (inpMan.KeyDown(Key.D2))
{
targetPlanet = 2;
playerSprite.ClearInstructions();
autoPilot = false;
stopped = false;
turnTimer = 0;
sprMan.RemoveSprite(planetmarkerSprite);
if (zoomin == true)
{
PlanetMarkerSpawn( 1.315f, -0.25f, 0.6f);
}
}
if (inpMan.KeyDown(Key.D3))
{
targetPlanet = 3;
playerSprite.ClearInstructions();
autoPilot = false;
stopped = false;
turnTimer = 0;
sprMan.RemoveSprite(planetmarkerSprite);
if (zoomin == false)
{
PlanetMarkerSpawn( -1.9125f, 1.55f, 0.365f);
}
}
if (inpMan.KeyDown(Key.D4))
{
targetPlanet = 4;
playerSprite.ClearInstructions();
autoPilot = false;
stopped = false;
turnTimer = 0;
sprMan.RemoveSprite(planetmarkerSprite);
if (zoomin == false)
{
PlanetMarkerSpawn( 1.315f, -0.25f, 0.6f);
}
}
if(cursor.primaryDown)
{
if (cursor.IsOn(planetButton1))
{
targetPlanet = 1;
playerSprite.ClearInstructions();
autoPilot = false;
stopped = false;
turnTimer = 0;
sprMan.RemoveSprite(planetmarkerSprite);
if (zoomin == true)
{
PlanetMarkerSpawn( -1.9125f, 1.55f, 0.365f);
}
}
if (cursor.IsOn(planetButton2))
{
targetPlanet = 2;
playerSprite.ClearInstructions();
autoPilot = false;
stopped = false;
turnTimer = 0;
sprMan.RemoveSprite(planetmarkerSprite);
if (zoomin == true)
{
PlanetMarkerSpawn( 1.315f, -0.25f, 0.6f);
}
}
if (cursor.IsOn(planetButton3))
{
targetPlanet = 3;
playerSprite.ClearInstructions();
autoPilot = false;
stopped = false;
turnTimer = 0;
sprMan.RemoveSprite(planetmarkerSprite);
if (zoomin == false)
{
PlanetMarkerSpawn( -1.9125f, 1.55f, 0.365f);
}
}
if (cursor.IsOn(planetButton4))
{
targetPlanet = 4;
playerSprite.ClearInstructions();
autoPilot = false;
stopped = false;
turnTimer = 0;
sprMan.RemoveSprite(planetmarkerSprite);
if (zoomin == false)
{
PlanetMarkerSpawn( 1.315f, -0.25f, 0.6f);
}
}
}
}
// does the same as the above only in the planetary system map screen
if (viewbuttonsloaded == true && sublightOnly == true)
{
if (inpMan.KeyDown(Key.D1))
{
playerSprite.ClearInstructions();
autoPilot = false;
stopped = false;
turnTimer = 0;
targetPlanet = 1;
PlanetMarkerSpawn( 0.05f, -0.05f, 0.605f);
}
if (inpMan.KeyDown(Key.D2))
{
playerSprite.ClearInstructions();
autoPilot = false;
stopped = false;
turnTimer = 0;
targetPlanet = 2;
PlanetMarkerSpawn( -1.685f, -0.252f, 0.2f);
}
if (inpMan.KeyDown(Key.D3))
{
playerSprite.ClearInstructions();
autoPilot = false;
stopped = false;
turnTimer = 0;
targetPlanet = 3;
PlanetMarkerSpawn( 0.85f, 1.01f, 0.2f);
}
if(cursor.primaryDown)
{
if (cursor.IsOn(planetButton1))
{
playerSprite.ClearInstructions();
autoPilot = false;
stopped = false;
turnTimer = 0;
targetPlanet = 1;
PlanetMarkerSpawn( 0.05f, -0.05f, 0.605f);
}
if (cursor.IsOn(planetButton2))
{
playerSprite.ClearInstructions();
autoPilot = false;
stopped = false;
turnTimer = 0;
targetPlanet = 2;
PlanetMarkerSpawn( -1.685f, -0.252f, 0.2f);
}
if (cursor.IsOn(planetButton3))
{
playerSprite.ClearInstructions();
autoPilot = false;
stopped = false;
turnTimer = 0;
targetPlanet = 3;
PlanetMarkerSpawn( 0.85f, 1.01f, 0.2f);
}
}
}
#endregion
#region functions for removing everything and closing the viewscreen when prompted
if (lowering == true)
{
sprMan.RemoveSprite(planetButton1);
sprMan.RemoveSprite(planetButton2);
sprMan.RemoveSprite(planetButton3);
sprMan.RemoveSprite(planetButton4);
if (viewscreenSprite.sclY > 0.1)
viewscreenSprite.sclY -= 150 * TimeManager.secondDifference;
else
viewscreenSprite.sclY = 0.09f;
if (viewscreenSprite.sclY < 0.1 && viewscreenSprite.sclX > 0.1)
viewscreenSprite.sclX -= 150 * TimeManager.secondDifference;
else if (viewscreenSprite.sclX < 0.1)
{
viewscreenSprite.sclX = 0.1f;
raised = false;
lowering = false;
viewbuttonsloaded = false;
viewrodlSprite.yVelocity = -90;
sprMan.RemoveSprite(sprite);
}
}
#endregion
}
// respawns the planet market sprite during minimap transitions
public void PlanetMarkerSpawn(float x, float y, float scl)
{
sprMan.RemoveSprite(planetmarkerSprite);
planetmarkerSprite = sprMan.AddOverlaySprite("defaultcircle.png");
planetmarkerSprite.sclX = scl;
planetmarkerSprite.sclY = scl;
planetmarkerSprite.AttachTo(minimapSprite, true);
AssignTextureToScreen(planetmarkerSprite.texture);
planetmarkerSprite.relX = x;
planetmarkerSprite.relY = y;
planetmarkerSprite.fade = 50;
}
}
}