예제 #1
0
    public override void OnInspectorGUI()
    {
        DrawDefaultInspector();

        PlanetLayout layoutScript = (PlanetLayout)target;

        if (GUILayout.Button("Distance"))
        {
            layoutScript.UpdateLayout();
            layoutScript.Clear();
        }
    }
예제 #2
0
        /// <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))
                {
                }
            };
        }
예제 #3
0
        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.");
        }