コード例 #1
0
ファイル: Ship.cs プロジェクト: ManuelJager/ProjectExa
        public virtual void Import(Blueprint blueprint, BlockContext blockContext, GridInstanceConfiguration configuration)
        {
            if (blueprint.Blocks.Controller == null)
            {
                throw new ArgumentException("Blueprint must have a controller reference");
            }

            Totals          = new ShipGridTotals(this);
            BlockGrid       = new BlockGrid(pivot, OnGridEmpty, this);
            Configuration   = configuration;
            ActionScheduler = new ActionScheduler(this);
            Active          = true;
            BlockContext    = blockContext;

            var radius = blueprint.Blocks.MaxSize / 2f * canvasScaleMultiplier;

            mouseOverCollider.radius = radius;
            Navigation = navigationOptions.GetNavigation(this, blueprint);
            BlockGrid.Import(blueprint);
            Blueprint = blueprint;

            UpdateCanvasSize(blueprint);

            shipAi.Init();
        }
コード例 #2
0
        protected FriendlyShip SpawnFriendly(string name, float xPos, float yPos, GridInstanceConfiguration configuration = default)
        {
            var blueprint = Systems.Blueprints.GetBlueprint(name);
            var pos       = new Vector2(xPos, yPos);

            return(GameSystems.ShipFactory.CreateFriendly(blueprint, pos, configuration));
        }
コード例 #3
0
        protected void SpawnMothership(Blueprint mothership, GridInstanceConfiguration configuration = default)
        {
            var ship      = GameSystems.ShipFactory.CreateFriendly(mothership, Vector2.zero, configuration);
            var selection = ship.GetAppropriateSelection(new VicFormation());

            selection.Add(ship);
            GameSystems.GameplayInputManager.CurrentSelection = selection;
        }
コード例 #4
0
        public void FromCluster(Cluster cluster)
        {
            BlockGrid     = new BlockGrid(transform, OnGridEmpty, this);
            Configuration = new GridInstanceConfiguration {
                Invulnerable = false
            };

            foreach (var block in cluster)
            {
                block.transform.SetParent(transform);
                block.Parent = this;
                BlockGrid.Add(block);
            }

            foreach (var thruster in BlockGrid.Metadata.ThrusterList)
            {
                thruster.PowerDown();
            }
        }
コード例 #5
0
ファイル: ShipFactory.cs プロジェクト: ManuelJager/ProjectExa
        private T Configure<T>(GameObject shipGo, Vector2 worldPos, Blueprint blueprint, BlockContext blockContext, GridInstanceConfiguration configuration)
            where T : Ship {
            shipGo.transform.position = worldPos;
            var ship = shipGo.GetComponent<T>();
            var overlay = CreateOverlay(ship);
            ship.Import(blueprint, blockContext, configuration);

            var instanceString = ship.GetInstanceString();
            overlay.gameObject.name = $"Overlay: {instanceString}";
            shipGo.name = instanceString;

            return ship;
        }
コード例 #6
0
ファイル: ShipFactory.cs プロジェクト: ManuelJager/ProjectExa
 public EnemyShip CreateEnemy(Blueprint blueprint, Vector2 worldPos, GridInstanceConfiguration configuration) {
     var shipGo = Instantiate(enemyShipPrefab, GameSystems.SpawnLayer.ships);
     return Configure<EnemyShip>(shipGo, worldPos, blueprint, BlockContext.EnemyGroup, configuration);
 }
コード例 #7
0
ファイル: ShipFactory.cs プロジェクト: ManuelJager/ProjectExa
 public FriendlyShip CreateFriendly(Blueprint blueprint, Vector2 worldPos, GridInstanceConfiguration configuration) {
     var shipGo = Instantiate(friendlyShipPrefab, GameSystems.SpawnLayer.ships);
     return Configure<FriendlyShip>(shipGo, worldPos, blueprint, BlockContext.UserGroup, configuration);
 }