コード例 #1
0
    void UpdateExplanations()
    {
        var index         = PlayingData.StageIndex;
        var stageData     = PlayingData.StageDatas[index];
        var clearTime     = PlayingData.GetClearTime(PlayingData.StageIndex);
        var clearTimeText = clearTime == 0 ? "未達成" : "最高記録 " + TatamiUtil.Int2Japanese(clearTime) + "回";

        StageNameText.text   = TatamiUtil.Int2Japanese(index) + " " + stageData.Name;
        ExplanationText.text = clearTimeText + "\n" + stageData.Explanation;
    }
コード例 #2
0
ファイル: TatamiManager.cs プロジェクト: Muratam/TatamiPuzzle
 void Init()
 {
     deltaPos = new Point2D(0, 0);
     moveTime = 0;
     player.Move(new Point2D(0, 0));
     moveText.text = "" + TatamiUtil.Int2Japanese(moveTime);
     foreach (var child in GetComponentsInChildren <Transform>())
     {
         if (child != this.transform)
         {
             Destroy(child.gameObject);
         }
     }
 }
コード例 #3
0
ファイル: TatamiManager.cs プロジェクト: Muratam/TatamiPuzzle
    void PlaceTatami(int index)
    {
        var text     = PlayingData.StageDatas[PlayingData.StageIndex].Data;
        var varslist = TatamiUtil.ReadCharaType(text);

        if (varslist == null)
        {
            return;
        }
        int min_x = 0, min_y = 0;
        var max_x = varslist.Select(_ => _[0] + _[2]).Max();
        var max_y = varslist.Select(_ => _[1] + _[3]).Max();

        this.maxColor = varslist.Select(_ => _[4]).Where(_ => _ != 'x').Max();
        Init();
        tatamiGridInfo = new TatamiObject[max_x - min_x, max_y - min_y];
        tatamiObjects  = new List <TatamiObject>();
        foreach (var vars in varslist)
        {
            int x = vars[0], y = vars[1], w = vars[2], h = vars[3], c = vars[4];
            if (c != 'x')
            {
                var tatamiClone = Instantiate(tatamiOriginal) as TatamiObject;
                tatamiObjects.Add(tatamiClone);
                tatamiClone.Place(this.transform, x, y, w, h, c);
                foreach (var xi in Enumerable.Range(x, w))
                {
                    foreach (var yi in Enumerable.Range(y, h))
                    {
                        Debug.Assert(tatamiGridInfo[xi, yi] == null, "重なっている畳があるぞ");
                        tatamiGridInfo[xi, yi] = tatamiClone;
                    }
                }
            }
            else
            {
                var obstacleClone = Instantiate(goObstacle) as GameObject;
                TatamiObject.PlaceObject(obstacleClone, this.transform, x, y, w, h);
                obstacleClone.transform.localScale = new Vector3(w, 1f, h);
            }
        }
        PlaceFusuma(max_x, max_y);
        var distance = Mathf.Max(max_x, max_y * Screen.width / Screen.height);

        mainCamera.transform.position = new Vector3(max_x / 2 - 0.5f, 10, -max_y / 2 - 4.5f)
                                        + new Vector3(0, Mathf.Sin(Mathf.Deg2Rad * 60f), -Mathf.Cos(Mathf.Deg2Rad * 60f)) * 1.6f * Mathf.Pow(distance, 1.4f) / 3;
    }
コード例 #4
0
ファイル: TatamiManager.cs プロジェクト: Muratam/TatamiPuzzle
    void MovePlayer()
    {
        if (deltaPos.SquareLength == 0)
        {
            deltaPos = new Point2D();
            if (Input.GetMouseButtonDown(0))
            {
                RaycastHit hit;
                if (Physics.Raycast(mainCamera.ScreenPointToRay(Input.mousePosition), out hit, 1000))
                {
                    var tatami = hit.collider.GetComponent <TatamiObject>();
                    if (tatami == null)
                    {
                        return;
                    }
                    if (tatami.x <= player.Pos.x && player.Pos.x <= tatami.x + tatami.w)
                    {
                        deltaPos.y = player.Pos.y > tatami.y ? -1 : 1;
                    }
                    else if (tatami.y <= player.Pos.y && player.Pos.y <= tatami.y + tatami.h)
                    {
                        deltaPos.x = player.Pos.x > tatami.x ? -1 : 1;
                    }
                }
            }
            else
            {
                if (Input.GetKeyDown(KeyCode.RightArrow))
                {
                    deltaPos.x = 1;
                }
                else if (Input.GetKeyDown(KeyCode.UpArrow))
                {
                    deltaPos.y = -1;
                }
                else if (Input.GetKeyDown(KeyCode.LeftArrow))
                {
                    deltaPos.x = -1;
                }
                else if (Input.GetKeyDown(KeyCode.DownArrow))
                {
                    deltaPos.y = 1;
                }
                else
                {
                    return;
                }
            }
        }
        var pos = player.Pos + deltaPos;

        if (pos.x < 0 || pos.y < 0 ||
            pos.x >= tatamiGridInfo.GetLength(0) ||
            pos.y >= tatamiGridInfo.GetLength(1) ||
            tatamiGridInfo[pos.x, pos.y] == null)
        {
            //stops
            if (moving)
            {
                moveText.text = "" + TatamiUtil.Int2Japanese(++moveTime);
            }
            moving   = false;
            deltaPos = new Point2D();
            if (!cleared && CheckCleared())
            {
                cleared = true;
                clearText.gameObject.SetActive(true);
            }
        }
        else
        {
            var currentTatami = tatamiGridInfo[player.Pos.x, player.Pos.y];
            var nextTatami    = tatamiGridInfo[pos.x, pos.y];
            if (currentTatami != nextTatami)
            {
                currentTatami.ChangeColor((currentTatami.Color + 1) % (maxColor + 1), deltaPos);
            }
            player.Move(pos);
            moving = true;
        }
    }