public override void Update() { foreach (var warehouse in gameBoard.Locations.Select(l => l.Occupant).OfType <Warehouse>() .Concat(gameBoard.Locations.Select(l => l.Occupant).OfType <Mine>().Select(m => m.Storage)) .Where(w => !w.Established)) { Prefabs .Warehouse(warehouse) .AddToState(state); warehouse.Established = true; } }
public GameplayState() { var game = new MiningLogisticsGameplay(); var play = game.Play().GetEnumerator(); play.MoveNext(); Entity .Empty .AddComponent(new GameStepBehavior(play, this, game.GameBoard)) .AddToState(this); Entity .Empty .AddComponent(new Transform()) .AddComponent(new Sprite(Texture2D("board"), origin: Vector2.Zero)) .AddToState(this); Entity .Empty .AddComponent(new ShowWarehousesBehavior(game.GameBoard, this)) .AddToState(this); Entity .Empty .AddComponent(new ShowPurchaseOrdersBehavior(game.GameBoard, this)) .AddToState(this); foreach (var corp in game.GameBoard.Corporations) { Entity.Empty .AddComponent(new Transform { Position = corp.Name == "LuDare" ? new Vector2(1640, 630) : corp.Name == "Adico" ? new Vector2(1640, 715) : corp.Name == "SparkTech Industries" ? new Vector2(1640, 800) : Vector2.Zero, }) .AddComponent(new FavorBehavior(corp)) .AddComponent(new TextSprite(SpriteFont("large"), color: Color.Black)) .AddToState(this); } foreach (var mine in game.GameBoard.Mines) { var loc = Prefabs.GetWarehousePosition(mine.Storage) - new Vector2(30, 0); var gauge = Entity.Empty .AddComponent(new Transform { Position = loc }); for (int i = 0; i < GameConfiguration.MaxCumulativeMineShutdowns; i++) { gauge.AddChild(Entity.Empty .AddComponent(new Transform { Position = new Vector2(4, 8 + (i * 14.5f)), Scale = 1.1f }) .AddComponent(new Sprite(Texture2D("shutdownpip"), color: Color.Red)) .AddComponent(new MinShutdownPipBehavior(i, mine)) ); } gauge.AddToState(this); } var sellOff = Entity .Empty .AddComponent(new Transform { Position = new Vector2(1730, 636) }); for (int i = 0; i < GameConfiguration.MaxSellOffPile; i++) { sellOff.AddChild(Entity .Empty .AddComponent(new Transform()) .AddComponent(new SellOfPipBehavior(i, game.GameBoard.SellOffPile)) .AddComponent(new Sprite(Texture2D("ironpip"))) ); } sellOff.AddToState(this); //foreach (var mine in game.GameBoard.Locations.Select(l => l.Occupant).OfType<Mine>()) //{ //} //Entity // .Empty // .AddComponent(new Transform()) // .AddComponent(new Sprite(GameContent.LazyGet<Texture2D>("pointer"), origin: Vector2.Zero)) // .AddComponent(new PointerBehavior()) // .AddToState(this); }