예제 #1
0
    // Update is called once per frame
    void Update()
    {
        //if(cursorSelection.GetSelectedPlayerCharName() == gameObject.name)
        //{
        //    DebugAttMarPosList();
        //}
        //Debug.Log("calculateAttackRange: " + calculateAttackRange);
        if (gameController.GetDisplayTurnTextState() == false && gameController.GetPlayerTurnState() == true)
        {
            if (cursorSelection.GetSelectedPlayerCharName() == gameObject.name)
            {
                //Debug.Log(attMarkPosList.Count);
                if (calculateAttackRange == true)
                {
                    charStatus = GameObject.Find(cursorSelection.GetSelectedPlayerCharName()).GetComponent<CharacterStatus>();
                    charMove = GameObject.Find(cursorSelection.GetSelectedPlayerCharName()).GetComponent<CharacterMove>();
                    int attackRange = charStatus.GetAttackRange();

                    for (int i = 1; i <= attackRange; i++)
                    {
                        if (charMove.GetCurRow() - i >= 0)
                        {
                            Instantiate(Resources.Load("AttackMarker"), grid.row[charMove.GetCurRow() - i].column[charMove.GetCurCol()].transform.position, Quaternion.identity);
                            AttackMarkerPosition attMarPos = new AttackMarkerPosition();
                            attMarPos.row = charMove.GetCurRow() - i;
                            attMarPos.col = charMove.GetCurCol();
                            attMarkPosList.Add(attMarPos);
                        }

                        if (charMove.GetCurRow() + i < grid.row.Length)
                        {
                            Instantiate(Resources.Load("AttackMarker"), grid.row[charMove.GetCurRow() + i].column[charMove.GetCurCol()].transform.position, Quaternion.identity);
                            AttackMarkerPosition attMarPos = new AttackMarkerPosition();
                            attMarPos.row = charMove.GetCurRow() + i;
                            attMarPos.col = charMove.GetCurCol();
                            attMarkPosList.Add(attMarPos);
                        }

                        if (charMove.GetCurCol() - i >= 0)
                        {
                            Instantiate(Resources.Load("AttackMarker"), grid.row[charMove.GetCurRow()].column[charMove.GetCurCol() - i].transform.position, Quaternion.identity);
                            AttackMarkerPosition attMarPos = new AttackMarkerPosition();
                            attMarPos.row = charMove.GetCurRow();
                            attMarPos.col = charMove.GetCurCol() - i;
                            attMarkPosList.Add(attMarPos);
                        }

                        if (charMove.GetCurCol() + i < grid.row[charMove.GetCurRow()].column.Length)
                        {
                            Instantiate(Resources.Load("AttackMarker"), grid.row[charMove.GetCurRow()].column[charMove.GetCurCol() + i].transform.position, Quaternion.identity);
                            AttackMarkerPosition attMarPos = new AttackMarkerPosition();
                            attMarPos.row = charMove.GetCurRow();
                            attMarPos.col = charMove.GetCurCol() + i;
                            attMarkPosList.Add(attMarPos);
                        }
                    }

                    int counter = 1;
                    for (int j = 1; j <= attackRange; j++)
                    {
                        while (counter <= attackRange - j)
                        {
                            // Upper left
                            if (charMove.GetCurRow() - counter >= 0 && charMove.GetCurCol() - j > 0)
                            {
                                Instantiate(Resources.Load("AttackMarker"), grid.row[charMove.GetCurRow() - counter].column[charMove.GetCurCol() - j].transform.position, Quaternion.identity);
                                AttackMarkerPosition attMarPos = new AttackMarkerPosition();
                                attMarPos.row = charMove.GetCurRow() - counter;
                                attMarPos.col = charMove.GetCurCol() - j;
                                attMarkPosList.Add(attMarPos);
                            }

                            // Lower Left
                            if (charMove.GetCurRow() + counter < grid.row.Length && charMove.GetCurCol() - j > 0)
                            {
                                Instantiate(Resources.Load("AttackMarker"), grid.row[charMove.GetCurRow() + counter].column[charMove.GetCurCol() - j].transform.position, Quaternion.identity);
                                AttackMarkerPosition attMarPos = new AttackMarkerPosition();
                                attMarPos.row = charMove.GetCurRow() + counter;
                                attMarPos.col = charMove.GetCurCol() - j;
                                attMarkPosList.Add(attMarPos);
                            }

                            // Upper Right
                            if (charMove.GetCurRow() - counter >= 0 && charMove.GetCurCol() + j < grid.row[charMove.GetCurRow()].column.Length)
                            {
                                Instantiate(Resources.Load("AttackMarker"), grid.row[charMove.GetCurRow() - counter].column[charMove.GetCurCol() + j].transform.position, Quaternion.identity);
                                AttackMarkerPosition attMarPos = new AttackMarkerPosition();
                                attMarPos.row = charMove.GetCurRow() - counter;
                                attMarPos.col = charMove.GetCurCol() + j;
                                attMarkPosList.Add(attMarPos);
                            }

                            // Lower Right
                            if (charMove.GetCurRow() + counter < grid.row.Length && charMove.GetCurCol() + j < grid.row[charMove.GetCurRow()].column.Length)
                            {
                                Instantiate(Resources.Load("AttackMarker"), grid.row[charMove.GetCurRow() + counter].column[charMove.GetCurCol() + j].transform.position, Quaternion.identity);
                                AttackMarkerPosition attMarPos = new AttackMarkerPosition();
                                attMarPos.row = charMove.GetCurRow() + counter;
                                attMarPos.col = charMove.GetCurCol() + j;
                                attMarkPosList.Add(attMarPos);
                            }

                            counter++;
                        }
                    }
                    calculateAttackRange = false;
                }
            }
        }
    }