Beispiel #1
0
        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;
        }
Beispiel #2
0
 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;
        }
Beispiel #5
0
        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);
        }
Beispiel #8
0
 public Map(ResourceManager resources, TurnCycle turnCycle)
 {
     Model     = new HexModel(60);
     Resources = resources;
     TurnCycle = turnCycle;
 }