public static void Initialize(SolarBodiesContext context) { context.Database.EnsureCreated(); if (!context.Planets.Any()) { var MoonEarth = new Moon() { name = "Moon", Diameter = 1737, }; var Earth = new Planet() { name = "Earth", DistanceFromSun = 1, Surface = "Rocky", Diameter = 6371, Moon = MoonEarth }; context.Planets.Add(Earth); context.Moons.Add(MoonEarth); var Deimos = new Moon() { name = "Phobos", Diameter = 11, }; var Mars = new Planet() { name = "Mars", DistanceFromSun = 1.52, Surface = "Rocky", Diameter = 3390, Moon = Deimos }; context.Planets.Add(Mars); context.Moons.Add(Deimos); context.SaveChanges(); } if (!context.Asteroids.Any()) { var _52Europa = new Asteroid() { name = "52 Europa", Diameter = 315, Origin = "Asteroid belt", Shape = "triaxial ellipsoid" }; context.Asteroids.Add(_52Europa); context.SaveChanges(); } if (!context.SBodies.Any()) { var SBodies = new SBodies() { Planets = "http://localhost:5000/api/v1/planets/", Asteroids = "http://localhost:5000/api/v1/Asteroids" }; context.SBodies.Add(SBodies); context.SaveChanges(); } }
public abstract string Serialize(); //Returns string code of all necessary save data //Static method for deserializing string code formed by all Entities' Serialize methods. public static Entity Deserialize(string code, string type, GameController game) { string[] des = code.Split(','); Entity result = null; if (type == "enemy") { if (des[0] == "bullet") { if (des[1] == "normal") { result = new Bullet(Convert.ToDouble(des[2]), Convert.ToDouble(des[3])); (result as Bullet).direction = -1; return(result); } if (des[1] == "slanted") { result = new Slanted_Bullet(Convert.ToDouble(des[2]), Convert.ToDouble(des[3]), Convert.ToDouble(des[4])); (result as Slanted_Bullet).id = ID.Hostile; return(result); } } else if (des[0] == "asteroid") { result = new Asteroid(Convert.ToDouble(des[2]), Convert.ToDouble(des[3])); (result as Asteroid).health = Convert.ToInt32(des[1]); return(result); } else if (des[0] == "formation") { pattern flight = pattern.Straight; foreach (pattern val in Enum.GetValues(typeof(pattern))) { if (des[3] == val.ToString()) { flight = val; break; } } return(new Formation(Convert.ToDouble(des[1]), Convert.ToDouble(des[2]), flight)); } else if (des[0] == "ai") { result = new AI(Convert.ToDouble(des[1]), Convert.ToDouble(des[2]), pattern.Straight); return(result); } else if (des[0] == "mine") { result = new Mine(Convert.ToDouble(des[1]), Convert.ToDouble(des[2]), pattern.Straight); return(result); } else if (des[0] == "tracker") { result = new Tracker(Convert.ToDouble(des[1]), Convert.ToDouble(des[2]), pattern.Straight); return(result); } else if (des[0] == "powerup") { PowerUp p = PowerUp.Empty; foreach (PowerUp val in Enum.GetValues(typeof(PowerUp))) { if (des[3] == val.ToString()) { p = val; break; } } result = new Powerup(Convert.ToDouble(des[1]), Convert.ToDouble(des[2]), p); return(result); } else if (des[0] == "boss") { if (des[1] == "easy") { result = new Boss_Easy(Convert.ToDouble(des[2]), Convert.ToDouble(des[3]), Convert.ToInt32(des[4]), game.winWidth, game.winHeight); foreach (MState val in Enum.GetValues(typeof(MState))) { if (des[5] == val.ToString()) { (result as Boss_Easy).currentState = val; break; } } (result as Boss_Easy).isEntering = Convert.ToBoolean(des[6]); (result as Boss_Easy).goingBackwards = Convert.ToBoolean(des[7]); (result as Boss_Easy).dir = Convert.ToInt32(des[8]); return(result); } else if (des[1] == "medium") { result = new Boss_Medium(Convert.ToDouble(des[2]), Convert.ToDouble(des[3]), Convert.ToInt32(des[4]), game.winWidth, game.winHeight); foreach (State val in Enum.GetValues(typeof(State))) { if (des[5] == val.ToString()) { (result as Boss_Medium).state = val; break; } } return(result); } else if (des[1] == "hard") { result = new Boss_Hard(Convert.ToDouble(des[2]), Convert.ToDouble(des[3]), Convert.ToInt32(des[4]), game.winWidth, game.winHeight); foreach (State val in Enum.GetValues(typeof(State))) { if (des[5] == val.ToString()) { (result as Boss_Hard).state = val; break; } } foreach (Direction val in Enum.GetValues(typeof(Direction))) { if (des[6] == val.ToString()) { (result as Boss_Hard).dir = val; break; } } (result as Boss_Hard).x_axis = Convert.ToDouble(des[7]); return(result); } } else { throw new Exception("Enemy type Unknown."); } } else if (type == "player") { result = new Player(Convert.ToDouble(des[0]), Convert.ToDouble(des[1]), Convert.ToInt32(des[3]), Convert.ToInt32(des[4]), game, "SHIP_IMAGE"); foreach (PowerUp val in Enum.GetValues(typeof(PowerUp))) { if (des[2] == val.ToString()) { (result as Player).powerup = val; break; } } (result as Player).isPoweredUp = Convert.ToBoolean(des[5]); (result as Player).cheating = Convert.ToBoolean(des[7]); (result as Player).powerUpCounter = Convert.ToDouble(des[6]); (result as Player).image = des[8]; (result as Player).triple = Convert.ToBoolean(des[9]); (result as Player).wanderingbullets = Convert.ToBoolean(des[10]); (result as Player).extraSpeed = Convert.ToBoolean(des[11]); (result as Player).rapid_fire = Convert.ToBoolean(des[12]); (result as Player).isInvincible = Convert.ToBoolean(des[13]); (result as Player).LoadPowerups(); return(result); } else if (type == "playerBullet") { if (des[1] == "normal") { result = new Bullet(Convert.ToInt32(des[2]), Convert.ToInt32(des[3])); (result as Bullet).direction = 1; return(result); } else if (des[1] == "slanted") { result = new Slanted_Bullet(Convert.ToDouble(des[2]), Convert.ToDouble(des[3]), Convert.ToDouble(des[4])); (result as Slanted_Bullet).id = ID.Friendly; return(result); } else if (des[1] == "wandering") { pattern p = pattern.Straight; foreach (pattern val in Enum.GetValues(typeof(pattern))) { if (des[6] == val.ToString()) { p = val; break; } } result = new Wandering_Bullet(Convert.ToDouble(des[2]), Convert.ToDouble(des[3]), p); (result as Wandering_Bullet).id = ID.Friendly; (result as Wandering_Bullet).original_X = Convert.ToDouble(des[4]); (result as Wandering_Bullet).original_Y = Convert.ToDouble(des[5]); (result as Wandering_Bullet).x_axis = Convert.ToDouble(des[7]); return(result); } } return(result); }
public static Entity Deserialize(string code, string type, GameController game) { string[] des = code.Split(','); Entity result = null; if (type == "enemy") { if (des[0] == "bullet") { result = new Bullet(Convert.ToDouble(des[1]), Convert.ToDouble(des[2])); (result as Bullet).direction = -1; return(result); } else if (des[0] == "asteroid") { result = new Asteroid(Convert.ToDouble(des[2]), Convert.ToDouble(des[3])); (result as Asteroid).health = Convert.ToInt32(des[1]); return(result); } else if (des[0] == "formation") { pattern flight = pattern.Straight; foreach (pattern val in Enum.GetValues(typeof(pattern))) { if (des[3] == val.ToString()) { flight = val; break; } } return(new Formation(Convert.ToDouble(des[1]), Convert.ToDouble(des[2]), flight)); } else if (des[0] == "ai") { result = new AI(Convert.ToDouble(des[1]), Convert.ToDouble(des[2]), pattern.Straight); return(result); } else if (des[0] == "mine") { result = new Mine(Convert.ToDouble(des[1]), Convert.ToDouble(des[2]), pattern.Straight); return(result); } else if (des[0] == "tracker") { result = new Tracker(Convert.ToDouble(des[1]), Convert.ToDouble(des[2]), pattern.Straight); return(result); } else if (des[0] == "powerup") { PowerUp p = PowerUp.Empty; foreach (PowerUp val in Enum.GetValues(typeof(PowerUp))) { if (des[3] == val.ToString()) { p = val; break; } } result = new Powerup(Convert.ToDouble(des[1]), Convert.ToDouble(des[2]), p); } else if (des[0] == "boss") { } else { throw new Exception("Enemy type Unknown."); } } else if (type == "player") { result = new Player(Convert.ToDouble(des[0]), Convert.ToDouble(des[1]), Convert.ToInt32(des[3]), Convert.ToInt32(des[4]), game, "SHIP_IMAGE"); foreach (PowerUp val in Enum.GetValues(typeof(PowerUp))) { if (des[2] == val.ToString()) { (result as Player).powerup = val; break; } } if (des[5] == "True") { (result as Player).isPoweredUp = true; } else { (result as Player).isPoweredUp = false; } if (des[7] == "True") { (result as Player).cheating = true; } else { (result as Player).cheating = false; } (result as Player).powerUpCounter = Convert.ToDouble(des[6]); } else if (type == "playerBullet") { result = new Bullet(Convert.ToInt32(des[1]), Convert.ToInt32(des[2])); (result as Bullet).direction = 1; return(result); } return(result); }
void Update() { if (model.gameOver) { view.restartText.gUIText.text = "Press 'R' for Restart"; } //Hazard control for (int i = 0; i < model.hazards.Count; i++) { if (model.hazards[i].GetCollider() != null) { if (model.hazards[i].GetType() == typeof(Model.EnemySpaceship)) { Model.EnemySpaceship enemySpaceship = (Model.EnemySpaceship)model.hazards[i]; //Player/Enemy Spaceship bolts collision for (int j = 0; j < enemySpaceship.GetCannon().bolts.Count; j++) { if (model.player.spaceship.CollisionDetection(enemySpaceship.GetCannon().bolts[j].collider, NO_OPERATOR)) { Transform modelTransform = model.player.spaceship.gameObject.transform; view.playerSpaceship.explosion.Explode(modelTransform.position, modelTransform.rotation); GameOver(); break; } //Enemy Spaceship bolts/Boundary collision if (enemySpaceship.GetCannon().bolts[j].CollisionDetection(model.boundary.collider, NOT_OPERATOR)) enemySpaceship.GetCannon().DestroyBolt(j); } //Enemy spaceship control /* if (Time.time > enemySpaceship.nextMove.x) { enemySpaceship.nextMove.x = Time.time + enemySpaceship.moveRate.x; enemySpaceship.targetManeuver = (enemySpaceship.kind == 0 ? UnityEngine.Random.Range(7, 10) : UnityEngine.Random.Range(4, 6)) * -Mathf.Sign(gameObject.transform.position.x); enemySpaceship.moveRate.x = UnityEngine.Random.Range(enemySpaceship.moveRateMin, enemySpaceship.moveRateMax); } *//* if (Time.time > enemySpaceship.nextMove.y) { enemySpaceship.nextMove.y = Time.time + enemySpaceship.moveRate.y; enemySpaceship.targetManeuver = (enemySpaceship.kind == 0 ? UnityEngine.Random.Range(5, 8) : UnityEngine.Random.Range(0, 3)) * -Mathf.Sign(gameObject.transform.position.x); enemySpaceship.moveRate.y = UnityEngine.Random.Range(enemySpaceship.moveRateMin, enemySpaceship.moveRateMax); }*/ /* float newManeuver = Mathf.MoveTowards(enemySpaceship.rigidbody.velocity.x, enemySpaceship.targetManeuver, 7.5f * Time.deltaTime); enemySpaceship.rigidbody.velocity = new Vector3(newManeuver, 0.0f, enemySpaceship.rigidbody.velocity.z); */ if (enemySpaceship.rigidbody != null) enemySpaceship.rigidbody.rotation = Quaternion.Euler(0.0f, 0.0f, enemySpaceship.rigidbody.velocity.x * -7f); if (Time.time > enemySpaceship.cannon.nextFire) { enemySpaceship.cannon.nextFire = Time.time + enemySpaceship.cannon.fireRate; enemySpaceship.cannon.Fire(); View.EnemySpaceship enemySpaceshipView = (View.EnemySpaceship)view.hazards[i]; enemySpaceshipView.NewBolt(enemySpaceship.cannon.bolts[enemySpaceship.cannon.bolts.Count - 1].gameObject.transform); } } else { //Asteroid control Model.Asteroid asteroid = (Model.Asteroid)model.hazards[i]; asteroid.eulerAngles.x += Time.deltaTime * asteroid.rotationSpeed.x; asteroid.eulerAngles.y += Time.deltaTime * asteroid.rotationSpeed.y; asteroid.eulerAngles.z += Time.deltaTime * asteroid.rotationSpeed.z; if (asteroid.gameObject != null) asteroid.gameObject.transform.eulerAngles = asteroid.eulerAngles; } //Flag hazard for deletion by exit of boundary if (model.hazards[i].CollisionDetection(model.boundary.collider, NOT_OPERATOR)) { removeHazards.Add(i); } //Player/Hazard collision if (model.player.spaceship.CollisionDetection(model.hazards[i].GetCollider(), NO_OPERATOR)) { Transform modelTransform = model.player.spaceship.gameObject.transform; view.playerSpaceship.explosion.Explode(modelTransform.position, modelTransform.rotation); modelTransform = model.hazards[i].GetGameObject().transform; if (view.hazards[i].GetType() == typeof(View.EnemySpaceship)) { View.EnemySpaceship enemySpaceship = (View.EnemySpaceship)view.hazards[i]; enemySpaceship.explosion.Explode(modelTransform.position, modelTransform.rotation); } else if (view.hazards[i].GetType() == typeof(View.Asteroid)) { View.Asteroid asteroid = (View.Asteroid)view.hazards[i]; asteroid.explosion.Explode(modelTransform.position, modelTransform.rotation); } model.hazards[i].Destroy(); removeHazards.Add(i); GameOver(); break; } //Hazards/Player bolts collision for (int j = 0; j < model.player.spaceship.cannon.bolts.Count; j++) { model.player.spaceship.cannon.bolts[j].CollisionDetection(model.hazards[i].GetCollider(), NO_OPERATOR); if (model.hazards[i].CollisionDetection(model.player.spaceship.cannon.bolts[j].GetCollider(), NO_OPERATOR)) { Transform modelTransform = model.hazards[i].GetGameObject().transform; if (view.hazards[i].GetType() == typeof(View.EnemySpaceship)) { View.EnemySpaceship enemySpaceship = (View.EnemySpaceship)view.hazards[i]; enemySpaceship.explosion.Explode(modelTransform.position, modelTransform.rotation); } else if (view.hazards[i].GetType() == typeof(View.Asteroid)) { View.Asteroid asteroid = (View.Asteroid)view.hazards[i]; asteroid.explosion.Explode(modelTransform.position, modelTransform.rotation); } AddScore(model.hazards[i].GetPoints()); model.player.spaceship.cannon.DestroyBolt(j); } } } } //Player control //Destroy bolts that exits the boundary for (int j = 0; j < model.player.spaceship.cannon.bolts.Count; j++) { if (model.player.spaceship.cannon.bolts[j].CollisionDetection(model.boundary.collider, NOT_OPERATOR)) model.player.spaceship.cannon.DestroyBolt(j); } if (!model.gameOver) { //Clamp player within the screen model.player.spaceship.rigidbody.position = new Vector3( Mathf.Clamp(model.player.spaceship.rigidbody.position.x, model.player.spaceship.boundary.x, model.player.spaceship.boundary.y), 0.0f, Mathf.Clamp(model.player.spaceship.rigidbody.position.z, model.player.spaceship.boundary.z, model.player.spaceship.boundary.w) ); //Roll player spaceship by sideways velocity // model.player.spaceship.rigidbody.rotation = Quaternion.Euler(0.0f, 0.0f, model.player.spaceship.rigidbody.velocity.x * -7f); } //Subscribe the ShootEvent ones when possible to fire if (!view.ShootEventSubscribed() && Time.time > model.player.spaceship.cannon.nextFire) { view.OnShoot += ShootEvent; } //UpdateView(model.player.spaceship.gameObject, view.playerSpaceship.gameObject); //Destroy hazards flagged for destroy foreach (int i in removeHazards) { model.hazards[i].Destroy(); } //Reset destroy flag list removeHazards = new List<int>(); }