예제 #1
0
    public void SetCardData(byte[] cards, byte count)
    {
        //清空
        if (count == 0)
        {
            Array.Clear(_cardata, 0, _cardata.Length);
            _cardcount = 0;

            foreach (GameObject card in _cardlist)
            {
                Destroy(card);
            }
            _cardlist.Clear();

            return;
        }
        //牌数据
        Buffer.BlockCopy(cards, 0, _cardata, 0, count);
        _cardcount = count;

        int nColSpace = CardColSpace;

        if (AutoCalColSpace)
        {
            if (count < 2)
            {
                nColSpace = (int)(CardSize.x / 2);
            }
            else
            {
                nColSpace = (int)((800 - (int)CardSize.x) / (count - 1));
                if (nColSpace > (int)(CardSize.x / 2))
                {
                    nColSpace = (int)(CardSize.x / 2);
                }
            }
        }
        //初始化
        foreach (GameObject card in _cardlist)
        {
            Destroy(card);
        }
        _cardlist.Clear();


        if (gameObject.activeSelf == false)
        {
            gameObject.SetActive(true);
        }

        //创建牌
        for (int i = 0; i < _cardcount; i++)
        {
            GameObject obj = (GameObject)Instantiate(CardPrefabs);
            obj.transform.parent = transform;
            float zValue = ((float)i) / 100 + 1;
            obj.transform.localScale = new Vector3(1, 1, zValue);
            int nRow = (int)(i / RowMaxCards);
            int nCol = (int)(i % RowMaxCards);
            obj.transform.localPosition = new Vector3(nColSpace * nCol, CardRowSpace * nRow * (-1), 0);
            obj.name = "card_" + i.ToString();
            //Card
            UICard card = obj.GetComponent <UICard>();
            card.shoot     = new Vector3(0, ShootSpace, 0);;
            card.recvclick = Positively;
            card.duration  = Duration;
            card.CardData  = _cardata[i];
            card.SetShoot(false);
            card.SetMask(false);
            //Sprite
            UISlicedSprite sp = obj.GetComponentInChildren <UISlicedSprite>();
            sp.depth = BaseDepth + i;


            if (DisplayItem)
            {
                if (_cardata[i] == 253)
                {
                    sp.spriteName = "card_look";
                }
                else if (_cardata[i] == 254)
                {
                    sp.spriteName = "card_giveup";
                }
                else if (_cardata[i] == 252)
                {
                    sp.spriteName = "card_lose";
                }
                else
                {
                    sp.spriteName = GetCardTex(_cardata[i]);
                }
            }
            else
            {
                if (_cardata[i] == 253)
                {
                    sp.spriteName = "card_look";
                }
                else if (_cardata[i] == 254)
                {
                    sp.spriteName = "card_giveup";
                }
                else if (_cardata[i] == 252)
                {
                    sp.spriteName = "card_lose";
                }
                else
                {
                    sp.spriteName = "card_back";
                }
            }

            //事件
            UIButtonMessage msg = obj.GetComponent <UIButtonMessage>();
            msg.functionName = ClickEvent;
            msg.target       = target;

            _cardlist.Add(obj);
        }

        if (Align == ccAlignType.CENTER)
        {
            float nXRate = transform.localScale.x;
            if (_cardcount > RowMaxCards)
            {
                int nX = (-1) * (((int)((RowMaxCards - 1) * nColSpace * nXRate) + (int)CardSize.x) / 2 - ((int)CardSize.x / 2));
                transform.localPosition = _oldPostion + new Vector3(nX, 0, 0);
            }
            else
            {
                int nX = (-1) * (((int)((_cardcount - 1) * nColSpace * nXRate) + (int)CardSize.x) / 2 - ((int)CardSize.x / 2));
                transform.localPosition = _oldPostion + new Vector3(nX, 0, 0);
            }
        }
        else if (Align == ccAlignType.LEFT)
        {
            int nX = (-1) * (int)(CardSize.x / 2);
            transform.localPosition = _oldPostion + new Vector3(nX, 0, 0);
        }
        else if (Align == ccAlignType.RIGHT)
        {
            float nXRate = transform.localScale.x;
            if (_cardcount > RowMaxCards)
            {
                int nX = (-1) * (int)(((int)((RowMaxCards - 1) * nColSpace * nXRate) + CardSize.x) / 2 - (CardSize.x / 2));
                transform.localPosition = _oldPostion + new Vector3(nX, 0, 0);
            }
            else
            {
                int nX = (-1) * (int)(((int)((_cardcount - 1) * nColSpace * nXRate) + CardSize.x) / 2 - (CardSize.x / 2));
                transform.localPosition = _oldPostion + new Vector3(nX, 0, 0);
            }
        }
    }
예제 #2
0
    void OnGUI()
    {
        if (Event.current.type == EventType.MouseDown)
        {
            //记录鼠标按下的位置
            _first  = Input.mousePosition;
            _second = Input.mousePosition;
        }

        if (Event.current.type == EventType.mouseDrag)
        {
            //记录鼠标拖动的位置
            _second = Input.mousePosition;

            if (_second.x != _first.x && System.Math.Abs(_second.x - _first.x) > 10 && AllowMoveSelect)
            {
                Ray        ray = UICamera.currentCamera.ScreenPointToRay(_second);
                RaycastHit hitinfo;
                if (Physics.Raycast(ray, out hitinfo))
                {
                    UICard card = hitinfo.collider.gameObject.GetComponent <UICard>();
                    if (card != null)
                    {
                        card.SetMask(true);
                    }
                }
            }
        }

        if (Event.current.type == EventType.MouseUp)
        {
            if (_second.y > 160 && AllowDropCard && (_second.y - _first.y) > 10)
            {
                _first  = Vector3.zero;
                _second = Vector3.zero;

                foreach (GameObject obj in _cardlist)
                {
                    obj.GetComponent <UICard>().SetMask(false);
                }

                if (MoveUpEvent != "" && target != null)
                {
                    target.SendMessage(MoveUpEvent);
                }
                return;
            }

            if (_second.x > _first.x && System.Math.Abs(_second.x - _first.x) > 10 && AllowMoveSelect)
            {
                Dictionary <string, UICard> templist = new Dictionary <string, UICard>();
                for (float f = _first.x; f < _second.x; f = f + 4)
                {
                    Vector3 temp = _first;
                    temp.x = f;
                    Ray        ray = UICamera.currentCamera.ScreenPointToRay(temp);
                    RaycastHit hitinfo;
                    if (Physics.Raycast(ray, out hitinfo))
                    {
                        UICard card = hitinfo.collider.gameObject.GetComponent <UICard>();
                        if (card != null)
                        {
                            if (!templist.ContainsKey(card.name))
                            {
                                templist[card.name] = card;
                            }
                        }
                    }
                }
                foreach (KeyValuePair <string, UICard> kv  in templist)
                {
                    bool bstate = kv.Value.GetShoot();
                    kv.Value.SetShoot(!bstate);
                    kv.Value.SetMask(false);
                }
            }


            if (_second.x < _first.x && System.Math.Abs(_second.x - _first.x) > 10 && AllowMoveSelect)
            {
                Dictionary <string, UICard> templist = new Dictionary <string, UICard>();
                for (float f = _first.x; f > _second.x; f = f - 4)
                {
                    Vector3 temp = _first;
                    temp.x = f;
                    Ray        ray = UICamera.currentCamera.ScreenPointToRay(temp);
                    RaycastHit hitinfo;
                    if (Physics.Raycast(ray, out hitinfo))
                    {
                        UICard card = hitinfo.collider.gameObject.GetComponent <UICard>();
                        if (card != null)
                        {
                            if (!templist.ContainsKey(card.name))
                            {
                                templist[card.name] = card;
                            }
                        }
                    }
                }
                foreach (KeyValuePair <string, UICard> kv  in templist)
                {
                    bool bstate = kv.Value.GetShoot();
                    kv.Value.SetShoot(!bstate);
                    kv.Value.SetMask(false);
                }
            }

            _first  = Vector3.zero;
            _second = Vector3.zero;

            if (MoveSelectEvent != "" && target != null)
            {
                target.SendMessage(MoveSelectEvent);
            }
        }
    }
예제 #3
0
    public void AppendHandCard(byte bViewId, byte[] cards, byte count)
    {
        if (cards == null || count == 0)
        {
            return;
        }
        //牌数据
        Buffer.BlockCopy(cards, 0, _cardata, _cardcount, count);
        _cardcount += count;

        //计算间距
        int nColSpace = CardColSpace;

        if (gameObject.activeSelf == false)
        {
            gameObject.SetActive(true);
        }

        //牌对象
        for (int i = _cardcount - count; i < _cardcount; i++)
        {
            GameObject obj = (GameObject)Instantiate(CardPrefabs);
            obj.transform.parent = transform;
            float zValue = ((float)i) / 100 + 1;
            obj.transform.localScale = new Vector3(1, 1, zValue);

            int nRow = (int)(i / RowMaxCards);
            int nCol = (int)(i % RowMaxCards);

            Vector3 OldPos = Vector3.zero;

            switch (bViewId)
            {
            case 0: { OldPos = new Vector3(120, 250, 0); break; }

            case 1: { OldPos = new Vector3(-230, 100, 0); break; }

            case 2: { OldPos = new Vector3(-230, -100, 0); break; }

            case 3: { OldPos = new Vector3(300, -100, 0); break; }

            case 4: { OldPos = new Vector3(300, 100, 0); break; }
            }

            Vector3 NewPos = new Vector3(nColSpace * nCol, CardRowSpace * nRow * (-1), 0);
            obj.transform.localPosition = OldPos;
            TweenPosition.Begin(obj, 0.4f, NewPos);


            //TweenRotation.Begin(obj,0.5f,Quaternion.Euler(new Vector3(0,0,180)));
            obj.name = "card_" + i.ToString();

            //Card
            UICard card = obj.GetComponent <UICard>();
            card.shoot     = new Vector3(0, ShootSpace, 0);;
            card.recvclick = Positively;
            card.duration  = Duration;
            card.CardData  = _cardata[i];
            card.SetPos(NewPos);
            card.SetShoot(false);
            card.SetMask(false);
            card.recvclick = false;

            //Sprite
            UISlicedSprite sp = obj.GetComponentInChildren <UISlicedSprite>();
            sp.depth = BaseDepth + i;

            if (DisplayItem)
            {
                if (_cardata[i] == 253)
                {
                    sp.spriteName = "card_look";
                }
                else if (_cardata[i] == 254)
                {
                    sp.spriteName = "card_giveup";
                }
                else if (_cardata[i] == 252)
                {
                    sp.spriteName = "card_lose";
                }
                else
                {
                    sp.spriteName = GetCardTex(_cardata[i]);
                }
            }
            else
            {
                if (_cardata[i] == 253)
                {
                    sp.spriteName = "card_look";
                }
                else if (_cardata[i] == 254)
                {
                    sp.spriteName = "card_giveup";
                }
                else if (_cardata[i] == 252)
                {
                    sp.spriteName = "card_lose";
                }
                else
                {
                    sp.spriteName = "card_back";
                }
            }

            //事件
            UIButtonMessage msg = obj.GetComponent <UIButtonMessage>();
            msg.functionName = ClickEvent;
            msg.target       = target;
            _cardlist.Add(obj);
        }


        if (Align == ccAlignType.CENTER)
        {
            float nXRate = transform.localScale.x;
            if (_cardcount > RowMaxCards)
            {
                int nX = (-1) * (((int)((RowMaxCards - 1) * nColSpace * nXRate) + (int)CardSize.x) / 2 - ((int)CardSize.x / 2));
                transform.localPosition = _oldPostion + new Vector3(nX, 0, 0);
            }
            else
            {
                int nX = (-1) * (((int)((_cardcount - 1) * nColSpace * nXRate) + (int)CardSize.x) / 2 - ((int)CardSize.x / 2));
                transform.localPosition = _oldPostion + new Vector3(nX, 0, 0);
            }
        }
        else if (Align == ccAlignType.LEFT)
        {
            int nX = (-1) * (int)(CardSize.x / 2);
            transform.localPosition = _oldPostion + new Vector3(nX, 0, 0);
        }
        else if (Align == ccAlignType.RIGHT)
        {
            float nXRate = transform.localScale.x;
            if (_cardcount > RowMaxCards)
            {
                int nX = (-1) * (int)(((int)((RowMaxCards - 1) * nColSpace * nXRate) + CardSize.x) / 2 - (CardSize.x / 2));
                transform.localPosition = _oldPostion + new Vector3(nX, 0, 0);
            }
            else
            {
                int nX = (-1) * (int)(((int)((_cardcount - 1) * nColSpace * nXRate) + CardSize.x) / 2 - (CardSize.x / 2));
                transform.localPosition = _oldPostion + new Vector3(nX, 0, 0);
            }
        }
    }