public override void OnInspectorGUI() { DrawDefaultInspector(); PlanetLayout layoutScript = (PlanetLayout)target; if (GUILayout.Button("Distance")) { layoutScript.UpdateLayout(); layoutScript.Clear(); } }
/// <summary> /// Registers delegates to initialize certain classes automatically on db load /// Also explicitly loads certain related entities /// </summary> void SetInitializers() { var objectContext = ((IObjectContextAdapter)this).ObjectContext; objectContext.ObjectMaterialized += (sender, e) => { var obj = e.Entity; Type t = ObjectContext.GetObjectType(e.Entity.GetType()); //Console.WriteLine(t); if (t == typeof(PlanetLayout)) { PlanetLayout p = e.Entity as PlanetLayout; ((PlanetLayout)obj).InitLayout(); } else if (t == typeof(DBPlanet)) { //this.Entry(e.Entity).Reference(ee => ee.Colony).Load(); } else if (t == typeof(StructureModel)) { this.Structures.Include(e0 => ((StructureModel)e0).Weapon).First(e1 => e1.Id == ((StructureModel)e1).Id); } else if (t == typeof(DBColony)) { CommandCenterModel cm = this.CommandCenters.First(ff => ff.Id == ((DBColony)e.Entity).CommandCenterID); ((DBColony)e.Entity).CommandCenter = new CommandCenterModel(cm); } else if (t == typeof(CommandCenterModel)) { } }; }
public override void Execute() { Debug.Log("Loading game..."); var planets = Map.Map .Select(ToPlanet); var layout = new PlanetLayout(planets); Store.SetPlanetLayout(layout); var gameResource = Resources.Load <GameObject>(Path); if (gameResource is null) { Debug.LogError("Expected game to be a game object, but got null"); Fail(); return; } var game = GameObject.Instantiate(gameResource); var planetBlueprint = game.GetDirectChildByName(PlanetObjectName); if (planetBlueprint is null) { Debug.LogError("Expected planet to be a child game object to the Game prefab"); Fail(); return; } var blueprintRectTransform = planetBlueprint.GetComponent <RectTransform>(); var gameCanvas = game.GetComponent <Canvas>(); if (gameCanvas is null) { Debug.LogError("Expected camera to exist"); Fail(); return; } var serverScreen = new Vector2(1920, 960); var clientScreen = new Vector2(gameCanvas.pixelRect.width, gameCanvas.pixelRect.height); var planetWidth = clientScreen.y / 12; var scaleFactor = clientScreen / serverScreen; var delta = serverScreen / 2; foreach (var planet in layout) { var copy = GameObject.Instantiate(planetBlueprint, game.transform); var transform = (copy.transform as RectTransform); transform.position = scaleFactor * (planet.Position + delta); transform.sizeDelta = new Vector2(planetWidth, planetWidth); var script = copy.GetComponent <PlanetView>(); script.SetPlanet(planet); script.enabled = true; copy.SetActive(true); } GameObject.Destroy(planetBlueprint); gameCanvas.worldCamera = Camera.main; Debug.Log("Game loaded."); }