Пример #1
0
        public void update()
        {
            if (!AnimationHandler.IsAnimationRunning())
            {
                entity.setPosition(Input.mousePosition);
                CardUi                 topCard          = null;
                BoardAreaUi            clickedBoardArea = null;
                float                  topLayerDepth    = LowestLayerDepth;
                IEnumerable <Collider> neighbors        = Physics.boxcastBroadphaseExcludingSelf(this, collidesWithLayers);

                if (!Dragging && Input.leftMouseButtonPressed)
                {
                    foreach (var neighbor in neighbors)
                    {
                        CollisionResult collisionResult = new CollisionResult();
                        if (neighbor.isTrigger)
                        {
                            continue;
                        }

                        if (collidesWith(neighbor, out collisionResult))
                        {
                            Entity collidedEntity = collisionResult.collider.entity;

                            if (collidedEntity is CardUi)
                            {
                                float currentLayerDepth;
                                currentLayerDepth = collisionResult.collider.entity.getComponent <Sprite>().layerDepth;

                                if (currentLayerDepth < topLayerDepth)
                                {
                                    topCard       = (CardUi)collidedEntity;
                                    topLayerDepth = currentLayerDepth;
                                }
                            }
                            else if (collidedEntity is BoardAreaUi)
                            {
                                clickedBoardArea = (BoardAreaUi)collidedEntity;
                            }
                        }
                    }

                    if (topCard != null)
                    {
                        DraggedCard        = topCard;
                        DragOffsetPosition = DraggedCard.position - Input.mousePosition;
                        DraggedCard.getComponent <Sprite>().renderLayer = PickedUpRenderLayer;
                        Dragging = true;
                    }
                    else if (clickedBoardArea != null)
                    {
                        //TODO: remove
                        Console.WriteLine(clickedBoardArea.GetType());
                    }
                }
                else if (Dragging && Input.leftMouseButtonDown)
                {
                    //TODO: check zone colliding with
                    //collidesWithAny(out collisionResult);
                    DraggedCard.position = Input.mousePosition + DragOffsetPosition;
                }
                else if (Dragging && !Input.leftMouseButtonDown)
                {
                    DraggedCard.getComponent <Sprite>().renderLayer = DefaultRenderLayer;
                    Dragging = false;
                }
            }
        }
Пример #2
0
        private void InitializeGameComponentsUi(Hero[] myHeroes, Hero[] opponentHeroes, Card[] myCards)
        {
            NezSpriteFont font = new NezSpriteFont(InGameScene.content.Load <SpriteFont>("Arial"));

            BoardAreaUi[] sideBarEntities = new BoardAreaUi[30];

            int localPlayerWorkerCount = localPlayerFirst ? GameConstants.StartingWorkerCountFirstPlayer : GameConstants.StartingWorkerCountSecondPlayer;
            int opponentWorkerCount    = localPlayerFirst ? GameConstants.StartingWorkerCountSecondPlayer : GameConstants.StartingWorkerCountFirstPlayer;

            for (int x = 0; x < sideBarEntities.Length; x += sideBarEntities.Length / 2)
            {
                HandUi    handUi      = new HandUi();
                Texture2D handTexture = InGameScene.content.Load <Texture2D>(handTextureName);
                handUi.addComponent(new Sprite(handTexture));
                handUi.getComponent <Sprite>().renderLayer = BoardRenderLayer;
                InGameScene.addEntity(handUi);

                InPlayUi inPlayUi = new InPlayUi();
                handUi.getComponent <Sprite>().renderLayer = BoardRenderLayer;
                InGameScene.addEntity(inPlayUi);

                bool isOpponent = x < 15;

                Hero[] currentHeroes = isOpponent ? opponentHeroes : myHeroes;
                sideBarEntities[0 + x] = new HeroButton(font, null, currentHeroes[0]);
                if (GameMode == GameMode.ThreeHero)
                {
                    sideBarEntities[1 + x] = new HeroButton(font, null, currentHeroes[1]);
                    sideBarEntities[2 + x] = new HeroButton(font, null, currentHeroes[2]);
                }

                sideBarEntities[3 + x] = new BaseButton(font);
                sideBarEntities[4 + x] = new AddOnButton(font);
                sideBarEntities[5 + x] = new SpecUi(font);

                sideBarEntities[6 + x] = new TechBuildingButton(font, TechLevel.One);
                sideBarEntities[7 + x] = new TechBuildingButton(font, TechLevel.Two);
                sideBarEntities[8 + x] = new TechBuildingButton(font, TechLevel.Three);

                sideBarEntities[9 + x]  = new ZoneButton(font, Discard.DiscardString, 0);
                sideBarEntities[10 + x] = new ZoneButton(font, Deck.DeckString, GameConstants.StartingDeckSize);
                sideBarEntities[11 + x] = new ZoneButton(font, Hand.HandString, GameConstants.StartingHandSize);

                sideBarEntities[12 + x] = new GoldUi(font);

                int currentWorkerCount = isOpponent ? opponentWorkerCount : localPlayerWorkerCount;
                sideBarEntities[13 + x] = new WorkerCountUi(font, currentWorkerCount);

                SideBarButton CodexButton = new SideBarButton(font);
                CodexButton.DisplayName.text = Codex.CodexString;
                sideBarEntities[14 + x]      = new BoardAreaUi();
            }

            int numberOfColumns = 3;

            for (int x = 0; x < sideBarEntities.Length; x += numberOfColumns)
            {
                int verticalPosition = x / numberOfColumns * ScreenHeight / sideBarEntities.Length / numberOfColumns;
                for (int y = 0; y < numberOfColumns; y++)
                {
                    sideBarEntities[x + y]?.setPosition(new Vector2(
                                                            y * SideBarButton.SideBarWidth / numberOfColumns,
                                                            verticalPosition
                                                            ));
                }
            }
        }