public ActionController(GameWindow window, Map worldMap, TurnCycle turnCycle, WorldView worldView) { this.window = window; this.factories = new AtomicReference <ActionResolverFactories>(); this.activeActionResolver = new AtomicReference <ActionResolver>(); this.factories.Value = new ActionResolverFactories( idleActionResolverFactory: () => new IdleActionResolver( activeActionResolver: activeActionResolver, actionResolverFactories: factories, worldMap: worldMap, worldView: worldView ), objectActionResolverFactory: selectedObject => new ObjectActionResolver( activeActionResolver: activeActionResolver, actionResolverFactories: factories, selectedObject: selectedObject, worldMap: worldMap, worldView: worldView ) ); this.activeActionResolver.Value = factories.Value.IdleAction.Invoke(); window.MouseButtonPressed += MouseButtonPressed; turnCycle.TurnChanged += TurnChanged; }
public GameController() { InitializeResources(); window = Window.GameWindowFactory.Initial(); turnCycle = new TurnCycle(); worldMap = new Map(resources, turnCycle); worldView = new WorldView(window, worldMap); }
public ActivePlayerLabel(Vector2f position, TurnCycle turnCycle) { Text = new Text { CharacterSize = 32, Font = FontExtensions.Font }; Position = position; turnCycle.TurnChanged += TurnChanged; }
public CurrentRoundLabel(Vector2f position, TurnCycle turnCycle) { Text = new Text { CharacterSize = 24, Color = Color.Black, DisplayedString = "1", Font = FontExtensions.Font }; Position = position; turnCycle.RoundChanged += RoundChanged; }
public ResourceAmountLabel(ResourceType resourceType, Vector2f position, TurnCycle turnCycle) { this.resourceType = resourceType; Text = new Text { CharacterSize = 24, Color = Color.Black, Font = FontExtensions.Font }; Position = position; turnCycle.TurnChanged += ActivePlayerChanged; }
private static void AddResourcePicture(this IComponentContainer container, ResourceType resourceType, Tile textureDescriptor, TurnCycle turnCycle, Vector2f startPosition, int order) { var offset = new Vector2f(150, 0) * order; var picture = new Picture { Image = new Sprite { Texture = textureDescriptor.Texture, TextureRect = textureDescriptor.Bounds }, Position = startPosition + offset }; var label = new ResourceAmountLabel( resourceType: resourceType, position: startPosition + new Vector2f(70, 0) + offset, turnCycle: turnCycle ); container.Add(picture); container.Add(label); }
public static void InitializeComponents(this PageControl pageControl, GameWindow window, ResourceManager resources, TurnCycle turnCycle) { var tileset = resources.Get <GameTilesets>().Gui; var mainContainer = new ComponentContainer(); var topFrame = new Frame { Shape = new RectangleShape { FillColor = Color.White, Size = new Vector2f(window.Size.X, 100) }, Position = new Vector2f() }; mainContainer.Add(topFrame); pageControl.Add(mainContainer); pageControl.Set(mainContainer); var resourcesPicturesStartPosition = new Vector2f(300, 25); topFrame.Components.AddResourcePicture(ResourceType.Food, tileset.Food, turnCycle, resourcesPicturesStartPosition, 0); topFrame.Components.AddResourcePicture(ResourceType.Wood, tileset.Wood, turnCycle, resourcesPicturesStartPosition, 1); topFrame.Components.AddResourcePicture(ResourceType.Iron, tileset.Iron, turnCycle, resourcesPicturesStartPosition, 2); topFrame.Components.AddResourcePicture(ResourceType.Gems, tileset.Gems, turnCycle, resourcesPicturesStartPosition, 3); var bottomFrameSize = new Vector2f(400, 40); var bottomFramePosition = new Vector2f(window.Size.X - bottomFrameSize.X, window.Size.Y - bottomFrameSize.Y); var bottomFrame = new Frame { Shape = new RectangleShape { FillColor = Color.White, Size = bottomFrameSize }, Position = bottomFramePosition }; mainContainer.Add(bottomFrame); var activePlayerLabel = new ActivePlayerLabel(new Vector2f(6, 0), turnCycle); var currentRoundLabel = new CurrentRoundLabel(new Vector2f(bottomFrameSize.X - 64, 6), turnCycle); bottomFrame.Components.Add(activePlayerLabel); bottomFrame.Components.Add(currentRoundLabel); }
public Map(ResourceManager resources, TurnCycle turnCycle) { Model = new HexModel(60); Resources = resources; TurnCycle = turnCycle; }