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(); }
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)); }
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; }
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(); } }
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; }
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); }
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); }