Пример #1
0
    public bool add(CardS card)
    {
        //Debug.Log(card.name);
        if (card == null)
        {
            return(false);
        }
        cards.Add(card);
        card.player    = this;
        card.scale     = transform.localScale.x;
        card.default_x = transform.position.x;
        card.y         = transform.position.y;
        card.default_y = transform.position.y;
        card.getCV().flush();
        for (int i = 0; i < cards.Count; i++)
        {
            cards[i].position = i;

            /*cards[i].SetLayer(-i);
             * Vector3 p = cards[i].transform.GetChild(0).transform.position;
             * cards[i].transform.GetChild(0).transform.position =
             *      new Vector3(p.x, p.y, cards[i].transform.position.z-0.5f);/**/
            cards[i].SetPosition();
        }
        return(true);
    }
Пример #2
0
    public CardS removeTemp()
    {
        CardS t = temp;

        temp = null;
        sort();
        return(t);
    }
Пример #3
0
 public void insertTemp(bool visible)
 {
     if (temp != null)
     {
         temp.setVisible(visible);
         insert(temp);
         temp = null;
     }
 }
Пример #4
0
    public CardS getRandom()
    {
        if (list.Count == 0)
        {
            return(null);
        }
        int   index = Random.Range(0, list.Count);
        CardS card  = (CardS)list[index];

        list.RemoveAt(index);
        return(card);
    }
Пример #5
0
 public void add(CardS card)
 {
     if (card == null)
     {
         return;
     }
     list.Add(card);
     card.player    = null;
     card.position  = 0;
     card.scale     = 0f;
     card.default_x = 0f;
     card.y         = 0f;
     card.default_y = 0f;
     card.SetLayer(0f);
     card.setVisible(false);
     card.x = transform.position.x;
     card.getCV().flush();
 }
Пример #6
0
 public int[] getLimits(int index, bool targetColor)
 {
     int[] limits = { 0, 14 };
     if (index > 0)
     {
         for (int i = index - 1; i >= 0; i--)
         {
             CardS t = getCard(i);
             if (t.getVisible())
             {
                 if (t.getColor() == targetColor)
                 {
                     limits[0] = t.getValue() + 1;
                 }
                 else
                 {
                     limits[0] = t.getValue();
                 }
                 break;
             }
         }
     }
     if (index < cards.Count - 1)
     {
         for (int i = index + 1; i < cards.Count; i++)
         {
             CardS t = getCard(i);
             if (t.getVisible())
             {
                 if (t.getColor() == targetColor)
                 {
                     limits[1] = t.getValue();
                 }
                 else
                 {
                     limits[1] = t.getValue() + 1;
                 }
                 break;
             }
         }
     }
     return(limits);
 }
Пример #7
0
 public void draw(CardS card)
 {
     if (card == null)
     {
         return;
     }
     temp        = card;
     card.player = this;
     card.getCV().flush();
     card.default_x = transform.position.x;
     card.y         = transform.position.y;
     card.default_y = transform.position.y;
     card.position  = cards.Count + 1;
     card.moveForTemp();
     card.scale = transform.localScale.x;
     for (int i = 0; i < cards.Count; i++)
     {
         cards[i].moveForTemp();
     }
 }
Пример #8
0
 public void addCard(CardS newCard, string line)
 {
     switch(line)
     {
         case "top":
             while(top[i].value != 0)
                 i++;
             top[i] = newCard;
             break;
         case "mid":
             while (mid[i].value != 0)
                 i++;
             mid[i] = newCard;
             break;
         case "low":
             while (low[i].value != 0)
                 i++;
             low[i] = newCard;
             break;
     }
     i = 0;
 }
Пример #9
0
 // Use this for initialization
 void Start()
 {
     parent = transform.parent.gameObject.GetComponent <CardS>();
 }
Пример #10
0
 public void insert(CardS card)
 {
     cards.Add(card);
     sort();
 }
Пример #11
0
    public IEnumerator MouseEvent()
    {
        if (player.hasTemp() || (Count() == 0 && aPool.Count() == 0))
        {
            game.play(true);
            if (isWhite)
            {
                if (DaVinciS.keyCard != null && !DaVinciS.keyCard.getVisible())
                {
                    bool result = game.judge(player, true);
                    yield return(new WaitForSeconds(1));

                    if (!result)
                    {
                        game.turn();
                    }
                    else
                    {
                        DaVinciS.info.text = "轮到玩家猜牌";
                    }
                }
            }
            else
            {
                if (DaVinciS.keyCard != null && !DaVinciS.keyCard.getVisible())
                {
                    game.judge(player, false);
                    yield return(new WaitForSeconds(1));

                    game.turn();
                }
            }
        }
        else
        {
            game.play(false);
            CardS c = getRandom();
            if (c != null)
            {
                c.scale = player.transform.localScale.x;
                c.getCV().flush();
                Camera camera = Camera.main;
                if (camera)
                {
                    //转换对象到当前屏幕位置
                    Vector3 screenPosition = camera.WorldToScreenPoint(c.transform.position);
                    //鼠标屏幕坐标
                    Vector3 mScreenPosition;
                    //若鼠标左键一直按着则循环继续
                    while (Input.GetMouseButton(0))
                    {
                        //鼠标屏幕上新位置
                        mScreenPosition = new Vector3(Input.mousePosition.x, Input.mousePosition.y, screenPosition.z);
                        // 对象新坐标
                        c.Drag(camera.ScreenToWorldPoint(mScreenPosition));
                        //协同,等待下一帧继续
                        yield return(new WaitForFixedUpdate());
                    }
                    c.StopDraging();
                    if (c.transform.position.y >= 0)
                    {
                        add(c);
                        c.Drag(transform.position);
                        c.scale = 0f;
                    }
                    else
                    {
                        player.draw(c);
                    }
                }
            }
        }
    }
Пример #12
0
    public IEnumerator move()
    {
        int cnt = 0;

        while (game.isPlaying())
        {
            if (!game.inGame(i))
            {
                takeTurn();
                if (!game.inGame(i))
                {
                    StartCoroutine(game.gameOver());
                    yield break;
                }
                cnt++;
                if (cnt >= role.Length - 1)
                {
                    break;
                }
            }
            bool isWhite = decideColor(i, o);
            if (pool[isWhite?0:1].Count() == 0)
            {
                isWhite = !isWhite;
            }
            if (pool[isWhite?0:1].Count() != 0)
            {
                role[i].draw(pool[isWhite?0:1].getRandom());
            }
            DaVinciS.info.text = "轮到" + role[i].name + "猜牌";
            yield return(new WaitForSeconds(1f));

            int p      = decidePlayer(i, o, isWhite) ? 0 : o,
                cindex = decideTarget(p, isWhite);
            if (cindex < 0)
            {
                isWhite = !isWhite;
                p       = decidePlayer(i, o, isWhite) ? 0 : o;
                cindex  = decideTarget(p, isWhite);
            }
            CardS c = role[p].getCard(cindex);
            DaVinciS.setKeyCard(c);
            int gs = decideGuess(p, cindex, isWhite);
            c.setI(gs);
            DaVinciS.info.text = role[i].name + "目标" + role[p].name + ",猜测值:" + gs;
            yield return(new WaitForSeconds(2f));

            if (!game.judge(role[i], true))
            {
                takeTurn();
                if (!game.inGame(i))
                {
                    if (game.inGame(0))
                    {
                        game.turn();
                    }
                    else
                    {
                        StartCoroutine(game.gameOver());
                    }
                    yield break;
                }
                cnt++;
                if (cnt >= role.Length - 1)
                {
                    yield return(new WaitForSeconds(1));

                    break;
                }
            }
            else if (!game.isPlaying())
            {
                StartCoroutine(game.gameOver());
                yield break;
            }
            yield return(new WaitForSeconds(1));
        }
        game.turn();
    }