示例#1
0
        protected void Awake()
        {
            PlayerState    = GetComponent <Animator>();
            PlayerObject   = GetComponent <Rigidbody2D>();
            OverlapChecker = GetComponent <OverlapChecker>();

            PlayerState.SetBool(PlayerIsAlive, true);
        }
示例#2
0
        /// <summary>
        /// Awake is a Unity built-in message.
        /// Unity calls it when the object is loaded into the scene. Think of it like
        /// a constructor.
        /// </summary>
        protected void Awake()
        {
            animator = GetComponent <Animator>();
            body     = GetComponent <Rigidbody2D>();
            ground_overlap_checker = GetComponent <OverlapChecker>();

            animator.SetBool(animatorAlive, true);
        }
示例#3
0
        protected void Awake()
        {
            playerAnimator       = GetComponent <Animator>();
            cubePhysics          = GetComponent <Rigidbody2D>();
            playerOverlapChecker = GetComponent <OverlapChecker>();

            playerAnimator.SetBool(isAlive, true);
        }
示例#4
0
        /// <summary>
        /// Awake is a Unity built-in message.
        /// Unity calls it when the object is loaded into the scene. Think of it like
        /// a constructor.
        /// </summary>
        protected void Awake()
        {
            animator         = GetComponent <Animator>();
            physicsComponent = GetComponent <Rigidbody2D>();
            overlapChecker   = GetComponent <OverlapChecker>();

            // Make the player alive
            animator.SetBool(isAliveParam, true);
        }
    void Start()
    {
        startWait = new WaitForSeconds(startDelay);
        endWait   = new WaitForSeconds(endDelay);

        pausePanel.SetActive(false);
        endGamePanel.SetActive(false);

        SpawnAllPlayers();
        SetCameraTargets();
        SetScores();
        OverlapChecker.Setup();

        StartCoroutine(GameLoop());
    }
示例#6
0
 private void CheckPressed()
 {
     if (!isButtonPressed)
     {
         if (Input.GetAxis("Horizontal" + playerNumber) > 0 &&
             curZCoord < gridUpperZLimit)
         {
             if (OverlapChecker.CheckOverlap(playerNumber - 1, "Z", curZCoord + 1, curXCoord))
             {
                 isButtonPressed = true;
                 MoveRight();
             }
         }
         else if (Input.GetAxis("Horizontal" + playerNumber) < 0 &&
                  curZCoord > gridLowerZLimit)
         {
             if (OverlapChecker.CheckOverlap(playerNumber - 1, "Z", curZCoord - 1, curXCoord))
             {
                 isButtonPressed = true;
                 MoveLeft();
             }
         }
         else if (Input.GetAxis("Vertical" + playerNumber) > 0 &&
                  curXCoord > gridLowerXLimit)
         {
             if (OverlapChecker.CheckOverlap(playerNumber - 1, "X", curXCoord - 1, curZCoord))
             {
                 isButtonPressed = true;
                 MoveUp();
             }
         }
         else if (Input.GetAxis("Vertical" + playerNumber) < 0 &&
                  curXCoord < gridUpperXLimit)
         {
             if (OverlapChecker.CheckOverlap(playerNumber - 1, "X", curXCoord + 1, curZCoord))
             {
                 isButtonPressed = true;
                 MoveDown();
             }
         }
     }
 }
示例#7
0
            public List <PipeGroup> GetPipeGroups(double lengthBetweenPipe_Inch)
            {
                PipeGroupCollection pipeGroups = new PipeGroupCollection();
                SkewPipe            start;
                SkewPipe            pre, cur;

                start = pre = cur = SkewPipes[0];
                OverlapChecker overlap = new OverlapChecker(cur, lengthBetweenPipe_Inch);

                for (int i = 1; i < SkewPipes.Count(); i++)
                {
                    var result = overlap.Push(SkewPipes[i]);
                    if (result != null && result.Count != 0)
                    {
                        pipeGroups.AddRange(result);
                    }
                }
                pipeGroups.AddRange(overlap.Clear());
                return(pipeGroups);
            }
示例#8
0
    public void ShowAll()
    {
        OverlapChecker matrix = new OverlapChecker(PuzzleOption.BlockCountX, PuzzleOption.BlockCountY);

        foreach (var entity in inARowHorizontal)
        {
            int effectWidth = 3;
            int effectHeight = 1;
            int blockCount = entity.pattern.Count;

            float centerX = entity.x + (entity.pattern.width - 1) / 2f;
            float centerY = entity.y + (entity.pattern.height - 1) / 2f;
            AdjustEffectPos(matrix, effectWidth, effectHeight, blockCount, ref centerX, ref centerY);

            matrix.IncreaseOverlap(effectWidth, effectHeight, centerX, centerY);
            panel.AttachChild(UIEffectInARow.Create(blockCount), new Vector2(centerX, centerY), 1f);
        }

        foreach (var entity in inARowVertical)
        {
            int effectWidth = 3;
            int effectHeight = 1;
            int blockCount = entity.pattern.Count;

            float centerX = entity.x + (entity.pattern.width - 1) / 2f;
            float centerY = entity.y + (entity.pattern.height - 1) / 2f;
            AdjustEffectPos(matrix, effectWidth, effectHeight, blockCount, ref centerX, ref centerY);

            matrix.IncreaseOverlap(effectWidth, effectHeight, centerX, centerY);
            panel.AttachChild(UIEffectInARow.Create(blockCount), new Vector2(centerX, centerY), 1f);
        }

        // chains
        if (chainCount >= 3)
        {
            int effectWidth = 3;
            int effectHeight = 1;
            
            int minOverlap = int.MaxValue;
            float minOverlapX = 0;
            float minOverlapY = 0;
            foreach (var entity in matches)
            {
                int blockCount = entity.pattern.Count;
                float centerX = entity.x + (entity.pattern.width - 1) / 2f;
                float centerY = entity.y + (entity.pattern.height - 1) / 2f;
                AdjustEffectPos(matrix, effectWidth, effectHeight, blockCount, ref centerX, ref centerY);

                int overlap = matrix.GetOverlap(effectWidth, effectHeight, centerX, centerY);
                if (minOverlap > overlap)
                {
                    minOverlap = overlap;
                    minOverlapX = centerX;
                    minOverlapY = centerY;
                }
            }
            matrix.IncreaseOverlap(effectWidth, effectHeight, minOverlapX, minOverlapY);
            panel.AttachChild(UIEffectChain.Create(chainCount), new Vector2(minOverlapX, minOverlapY), 1f);
        }

        // multi-matches
        if (matches.Count >= 3)
        {
            int effectWidth = 2;
            int effectHeight = 1;

            int minOverlap = int.MaxValue;
            float minOverlapX = 0;
            float minOverlapY = 0;
            foreach (var entity in matches)
            {
                int blockCount = entity.pattern.Count;
                float centerX = entity.x + (entity.pattern.width - 1) / 2f;
                float centerY = entity.y + (entity.pattern.height - 1) / 2f;
                AdjustEffectPos(matrix, effectWidth, effectHeight, blockCount, ref centerX, ref centerY);

                int overlap = matrix.GetOverlap(effectWidth, effectHeight, centerX, centerY);
                if (minOverlap > overlap)
                {
                    minOverlap = overlap;
                    minOverlapX = centerX;
                    minOverlapY = centerY;
                }
            }
            matrix.IncreaseOverlap(effectWidth, effectHeight, minOverlapX, minOverlapY);
            panel.AttachChild(UIEffectMatch.Create(matches.Count), new Vector2(minOverlapX, minOverlapY), 1f);
        }

        // for test
        //matrix.DumpMatrix();
        //Debug.Break();
    }
示例#9
0
    private static float AdjustEffectPosY(OverlapChecker matrix, int effectWidth, int effectHeight, int blockCount, float centerX, float centerY)
    {
        int minOverlap = int.MaxValue;
        int minOverlapY = 0;
        for (int i = 0; i < blockCount + 4; i++)    // +-2 of block range
        {
            float gap = (i + 1) / 2;
            float y = centerY + (IsEven(i) ? -gap : gap);
            int intY = Mathf.FloorToInt(y);
            if (0 <= intY && intY < PuzzleOption.BlockCountY)
            {
                int overlap = matrix.GetOverlap(effectWidth, effectHeight, centerX, intY);

                if (overlap < minOverlap)
                {
                    minOverlap = overlap;
                    minOverlapY = intY;
                }

                if (overlap == 0)
                {
                    break;
                }
            }
        }
        centerY = minOverlapY;
        return centerY;
    }
示例#10
0
 private static void AdjustEffectPos(OverlapChecker matrix, int effectWidth, int effectHeight, int blockCount, ref float centerX, ref float centerY)
 {
     centerX = AdjustEffectPosX(effectWidth, effectHeight, centerX, centerY);
     centerY = AdjustEffectPosY(matrix, effectWidth, effectHeight, blockCount, centerX, centerY);
 }