예제 #1
0
    private void BiPaiResult(PlayerHead head1, PlayerHead head2)
    {
        bipaipanel.Hide();
        PlayerHead head = BiJiao(head1, head2);

        if (head == head1)
        {
            head2.IsOver = true;
        }
        else
        {
            head1.IsOver = true;
        }

        PlayerHead nextPlayer = GetCanBipaiPlayer(head);

        if (nextPlayer == null)
        {
            SetWinner(head);
            return;
        }
        //Debug.LogError("最大的牌:" + head.data.name);
        if (head2 is MySelfHead && head2.IsOver == false)
        {
            NextPlayerOpaHandler(head2);
        }
        else
        {
            Mogo.Util.TimerHeap.AddTimer <PlayerHead>(1000, 0, NextPlayerOpaHandler, head2);
        }
        //
    }
예제 #2
0
 public Task <PlayerHead[]> GetPlayerHeads(string playername)
 => _client.GetPlayerHeadAsync(playername)
 .ContinueWith(t =>
 {
     var results = JsonSerializer.Deserialize <PlayerIdResult[]>(t.Result);
     return(results.Select(x => PlayerHead.FromResult(x)).Where(x => x != null).Cast <PlayerHead>().ToArray());
 }, TaskScheduler.Default);
예제 #3
0
 void Awake()
 {
     PlayerCollider    = new PlayerCollider(this);
     PlayerFoot        = GetComponentInChildren <PlayerFoot>();
     PlayerHead        = GetComponentInChildren <PlayerHead>();
     PlayerRigidbody2D = GetComponent <Rigidbody2D>();
 }
예제 #4
0
    private void SetWinner(PlayerHead head)
    {
        winnerPlayer = head;
        if (bipaipanel.IsHide() == false)
        {
            bipaipanel.Hide();
        }
        if (winnerPlayer != null)
        {
            Debug.LogError("本轮结束,胜出者:" + head.data.name);
        }
        EnabledAllButton(false);
        ReadlyButton.gameObject.SetActive(true);
        ReadlyButton.interactable = true;
        buttonParentCon.gameObject.SetActive(false);

        for (int i = 0; i < jettonObjList.Count; i++)
        {
            jettonObjList[i].transform.DOMove(head.transform.position, 1.5f);
        }
        int jettonTotal = 0;

        for (int i = 0; i < headList.Count; i++)
        {
            jettonTotal += headList[i].GetChangeJetton();
        }
        head.ChangeJetton(Mathf.Abs(jettonTotal));
        Mogo.Util.TimerHeap.AddTimer(1500, 0, AddJetton);
    }
예제 #5
0
 /// <summary>
 /// 准备按钮事件
 /// </summary>
 private void ReadlyButtonOnClick()
 {
     ResetGuize();
     ReadlyButton.gameObject.SetActive(false);
     buttonParentCon.gameObject.SetActive(true);
     //数据清理还原
     tempCardIndex = 0;
     if (readlyCardItemList.Count > 0)//已经准备好了
     {
         for (int i = 0; i < readlyCardItemList.Count; i++)
         {
             readlyCardItemList[i].Reset();
         }
     }
     for (int i = 0; i < headList.Count; i++)
     {
         headList[i].Reset();
     }
     winnerPlayer   = null;
     minJettionData = JettonData.GetByID(1);
     ResetData();
     ReadlyCard();
     resultPanel.Hide();
     //下锅底
     for (int i = 0; i < headList.Count; i++)
     {
         BetJetton(headList[i]);
     }
     GenzhuTotalNum = 1;
 }
예제 #6
0
 public void SetPlayerData(PlayerHead playerHead)
 {
     this.playerHead = playerHead;
     nameText.text   = playerHead.data.name;
     for (int i = 0; i < playerHead.cardItemList.Count; i++)
     {
         Tweener tweener = playerHead.cardItemList[i].transform.DOMove(conList[i].position, 0.2f);
     }
 }
예제 #7
0
    private bool IsGenZhu(PlayerHead head, out bool isBipai)
    {
        isBipai = false;
        //
        int           randomMax        = 10000;
        int           surplusPlayerNum = GetSurplusPlayerNum();
        int           kanPlayerNum     = GetKanPlayerNum();
        bool          isChujetton      = true;
        CardShapeType type             = GetShapeType(head.dataList);         //获取牌的类型
        bool          isCanBipai       = GenzhuTotalNum >= minBipaiGenzhuNum; //是否可以比牌

        if (GenzhuTotalNum > 20)
        {
            isBipai = true;
        }
        if (type >= CardShapeType.TONG_HUA_SHUN)
        {
        }
        else if (type == CardShapeType.JIN_HUA)
        {
        }
        else if (type == CardShapeType.SHUN_ZI)
        {
        }
        else if (type == CardShapeType.DUI_ZI)
        {
            if (isCanBipai == false && kanPlayerNum > 3 && surplusPlayerNum > 3)
            {
                isChujetton = false;
            }
            if (isChujetton)
            {
                if (isCanBipai)
                {
                    isBipai = true;
                }
            }
        }
        else//单牌
        {
            if (kanPlayerNum > 2 && surplusPlayerNum > 2)
            {
                isChujetton = false;
            }
            if (isChujetton)
            {
                if (isCanBipai)
                {
                    isBipai = true;
                }
            }
        }

        return(isChujetton);
    }
    void Awake()
    {
        Cursor.visible   = false;
        Cursor.lockState = CursorLockMode.Locked;

        animator   = GetComponent <Animator>();
        playerHead = GetComponent <PlayerHead>();

        ghostAvatar = FindObjectOfType <GhostAvatar>();

        Singletons.timeManager.OnTimeWarpChangedEvent += OnTimeWarpChanged;
    }
예제 #9
0
    private void BiPaiHandler(PlayerHead obj)
    {
        int playerIndex = headList.IndexOf(obj);

        CreatePlayerCardData(0);
        CreatePlayerCardData(playerIndex);


        bipaipanel.Show(obj, headList[0]);
        HideAllBiPaiButton();
        Mogo.Util.TimerHeap.AddTimer <PlayerHead, PlayerHead>(2000, 0, BiPaiResult, obj, headList[0]);
    }
예제 #10
0
    void Awake()
    {
        darkness = MiscUtils.FindChildInHierarchy(gameObject, "CenterEyeAnchor").transform.Find("Darkness").GetComponent <HoloGrid>();

        avatarXform = GameObject.Find("Player").transform;
        ghostAvatar = FindObjectOfType <GhostAvatar>();

        animator         = avatarXform.GetComponent <Animator>();
        playerHead       = avatarXform.GetComponent <PlayerHead>();
        motionController = avatarXform.GetComponent <MotionController>();

        originalParentXform = transform.parent;

        Singletons.timeManager.OnTimeWarpChangedEvent += OnTimeWarpChanged;
    }
예제 #11
0
 /// <summary>
 /// 发牌到位
 /// </summary>
 /// <param name="item"></param>
 private void FapaiUnitComplete(CardItem item, PlayerHead head)
 {
     item.transform.SetAsLastSibling();
     head.AddCard(item);
     if (tempCardIndex >= playerNum * 3)
     {
         for (int i = 0; i < readlyCardItemList.Count; i++)
         {
             if (playerCardItemList.IndexOf(readlyCardItemList[i]) < 0)
             {
                 readlyCardItemList[i].gameObject.SetActive(false);
             }
         }
     }
 }
예제 #12
0
    private List <GameObject> jettonObjList = new List <GameObject>();//

    /// <summary>
    /// 下注
    /// </summary>
    /// <param name="head"></param>
    private void BetJetton(PlayerHead head)
    {
        GameObject obj = GetJettonObj();

        obj.transform.position = head.transform.position;
        jettonObjList.Add(obj);
        obj.gameObject.SetActive(true);
        obj.GetComponent <Image>().sprite = Resources.Load <Sprite>("Textures/room/jetton/" + minJettionData.resPath);
        Vector3 v       = new Vector3(Random.Range(-100, 100), Random.Range(20, 120), 0);
        Tweener tweener = obj.transform.DOLocalMove(v, 0.2f);

        head.ChangeJetton(-minJettionData.value);

        guizePanel.SetZongZhuAdd(minJettionData.value);
    }
 private void GetComponentsFromPlayer()
 {
     player_hitbox      = GetComponentInChildren <Hitfield>();
     player_head        = GetComponentInChildren <PlayerHead>();
     player_menu        = GetComponentInChildren <Menu>();
     camera             = GetComponentInChildren <Camera>();
     area               = GetComponentInChildren <SteamVR_PlayArea>();
     hands              = GetComponentsInChildren <SteamVR_Behaviour_Pose>();
     reviveFields       = GetComponentsInChildren <Player_Revivefield>();
     gloves             = GetComponentsInChildren <Mitten>();
     player_grayscale   = GetComponentInChildren <Grayscale_ImageEffect>();
     player_controllers = GetComponentsInChildren <Controller>();
     player_hands_steam = GetComponentsInChildren <Hand>();
     teleporters        = GetComponentsInChildren <Teleport>();
     //Steam_VR_Manager.steamManager.EnableRender();
 }
예제 #14
0
    private PlayerHead GetCanBipaiPlayer(PlayerHead head)
    {
        List <PlayerHead> list = new List <PlayerHead>();

        for (int i = 0; i < headList.Count; i++)
        {
            if (headList[i] != head && headList[i].IsOver == false)
            {
                list.Add(headList[i]);
            }
        }
        if (list.Count == 0)
        {
            return(null);
        }
        return(list[Random.Range(0, list.Count)]);
    }
예제 #15
0
    public void AddInfoBillboard(uint playerId, Transform trans, EntityParent self, bool showBlood, HeadBloodColor bloodColor = HeadBloodColor.Red, bool showAnger = false)
    {
        //if (trans == null)
        //    return;

        if (m_heads.ContainsKey(playerId))
        {
            //LoggerHelper.Warning("Same player id: " + playerId);
            var head = m_heads[playerId] as PlayerHead;
            head.ShowBillboardBlood(showBlood);
            head.ShowBillboardAnger(showAnger);
            head.SetBillboardBloodColor(bloodColor);
        }
        else
        {
            var head = new PlayerHead(playerId, trans, OnLoadPlayerHeadFinished, self, showBlood, bloodColor, showAnger);
        }
    }
예제 #16
0
 protected override void OnShow(params object[] args)
 {
     if (args != null && args.Length > 0)
     {
         player          = args[0] as PlayerHead;
         nameText.text   = player.data.name;
         success.enabled = !player.IsOver;
         lose.enabled    = !success.enabled;
         numText.text    = player.GetChangeJetton() + "";
         if (player.IsHaveData())
         {
             for (int i = 0; i < cardList.Count; i++)
             {
                 cardList[i].SetData(player.dataList[i]);
             }
         }
     }
 }
    public void CreateLocalAvatar(int playerNum)
    {
        GameObject head = PhotonNetwork.Instantiate(this.headPrefab.name, headAnchor.position, headAnchor.rotation, 0);

        head.transform.parent = headAnchor;

        localPlayerTarget = head.GetComponent <PlayerHead>();
        localPlayerTarget.photonView.RPC("Initialize", RpcTarget.All, playerNum);

        localPlayerLeftHand  = CreateHand(leftHandAnchor, false, playerNum);
        localPlayerRightHand = CreateHand(rightHandAnchor, true, playerNum);

        GameObject torso = PhotonNetwork.Instantiate(torsoPrefab.name, head.transform.position, Quaternion.identity);

        localPlayerTarget.SetTorso(torso);
        torso.GetComponent <PlayerTorso>().photonView.RPC("Initialize", RpcTarget.All, playerNum);

        photonView.RPC("SyncPlayerInfoWithMaster", RpcTarget.All);
    }
예제 #18
0
    void OnLoadPlayerHeadFinished(PlayerHead head, uint playerId, Transform trans, EntityParent obj)
    {
        Quaternion qu = new Quaternion();

        qu.eulerAngles = Vector3.zero;

        head.AddToParent(m_stage, qu);

        if (m_heads.ContainsKey(playerId) == false)
        {
            m_heads.Add(playerId, head);
        }

        if (m_trans.ContainsKey(playerId) == false)
        {
            m_trans.Add(playerId, trans);
        }

        SetHead(obj);
    }
예제 #19
0
 private void OnCollisionEnter2D(Collision2D collision)
 {
     if (collision.gameObject.name == "Player")
     {
         PlayerHead.launchEffet(gameObject, new Effet(nameEffet, timeEffet,
                                                      delegate()
         {
             Vector2 localScale            = PlayerHead.staticT.localScale;
             localScale.x                 *= 1.5f;
             localScale.y                 *= 1.5f;
             PlayerHead.staticT.localScale = localScale;
         }, delegate()
         {
             Vector2 localScale            = PlayerHead.staticT.localScale;
             localScale.x                 /= 1.5f;
             localScale.y                 /= 1.5f;
             PlayerHead.staticT.localScale = localScale;
         }));
     }
 }
예제 #20
0
    void Awake()
    {
        stepSize   = 3;
        stepPoints = new List <Transform>();
        Singletons.timeManager.OnTimeWarpChangedEvent += OnTimeWarpChanged;

        ghostBodyGO          = transform.Find("GhostBody").gameObject;
        playerHead           = FindObjectOfType <PlayerHead>();
        playerXform          = playerHead.transform;
        playerRadius         = playerXform.GetComponent <CharacterController>().radius;
        lineRenderer         = GetComponent <LineRenderer>();
        lineRenderer.enabled = false;

        stepPointPrefab = Resources.Load <GameObject>("StepPoint");

        capsuleSphere1Xform = playerXform.Find("CapsuleSphere1");
        capsuleSphere2Xform = playerXform.Find("CapsuleSphere2");

        nonPlayerLayerMask = ~(1 << (int)Layers.Layer.PlayerHead | 1 << (int)Layers.Layer.PlayerMain | 1 << (int)Layers.Layer.PlayerLimbs);
    }
예제 #21
0
 private void OnEnable()
 {
     transform.rotation = GyroManager.rotation;
     if (playerHead == null)
     {
         playerHead = FindObjectOfType <PlayerHead>();
     }
     if (collCount)
     {
         collCount.text = "Collectibles " + ScoreSystem.instance.collectibleCount + "/" + ScoreSystem.instance.maxCollectibleCount;
     }
     if (lifeCount)
     {
         lifeCount.text = "Durability " + playerHead.bumpCount + "/" + playerHead.BumpMax;
     }
     if (time)
     {
         time.text = (int)(Time.time - ScoreSystem.instance.timeStart) + "Sec.";
     }
 }
예제 #22
0
 private void OnCollisionEnter2D(Collision2D collision)
 {
     if (collision.gameObject.name == "Player")
     {
         collision.gameObject.GetComponent <AudioSource>().Play();
         PlayerHead.launchEffet(gameObject, new Effet(nameEffet, 0,
                                                      delegate()
         {
             Vector2 localScale            = PlayerHead.staticT.localScale;
             localScale.x                 *= 1.2f;
             localScale.y                 *= 1.2f;
             PlayerHead.staticT.localScale = localScale;
         }, delegate()
         {
             Vector2 localScale            = PlayerHead.staticT.localScale;
             localScale.x                 /= 1.2f;
             localScale.y                 /= 1.2f;
             PlayerHead.staticT.localScale = localScale;
         }));
     }
 }
예제 #23
0
 private PlayerHead BiJiao(PlayerHead head1, PlayerHead head2)
 {
     if (head1.IsHaveData() == false)
     {
         CreatePlayerCardData(head1.playerIndex);
     }
     if (head2.IsHaveData() == false)
     {
         CreatePlayerCardData(head2.playerIndex);
     }
     if (BiJiao(head1.dataList, head2.dataList))
     {
         head2.IsOver = true;
         return(head1);
     }
     else
     {
         head1.IsOver = true;
         return(head2);
     }
 }
예제 #24
0
    // Start is called before the first frame update
    void Start()
    {
        //GetComponents
        aud  = GetComponent <AudioSource>();
        anim = GetComponent <Animator>();
        rb   = GetComponent <Rigidbody2D>();

        //Get all Body Parts
        foreach (Transform c in transform)
        {
            if (c.gameObject.name.Equals("HeadPoint"))
            {
                head = c.gameObject.GetComponent <PlayerHead>();
            }
            if (c.gameObject.name.Equals("ChestPoint"))
            {
                chest = c.gameObject.GetComponent <PlayerChest>();
            }
            if (c.gameObject.name.Equals("GroinPoint"))
            {
                abdomin = c.gameObject.GetComponent <PlayerAbdomin>();
            }
            if (c.gameObject.name.Equals("LegPoint1"))
            {
                leg1 = c.gameObject.GetComponent <PlayerLeg>();
            }
            if (c.gameObject.name.Equals("LegPoint2"))
            {
                leg2 = c.gameObject.GetComponent <PlayerLeg>();
            }
            if (c.gameObject.name.Equals("ArmPoint1"))
            {
                arm1 = c.gameObject.GetComponent <PlayerArm>();
            }
            if (c.gameObject.name.Equals("ArmPoint2"))
            {
                arm2 = c.gameObject.GetComponent <PlayerArm>();
            }
        }
    }
예제 #25
0
    protected override void Update()
    {
        if (base.isInitialize)
        {
            base.Update();
        }
        else
        {
            CUIFormScript form = Singleton <CUIManager> .GetInstance().GetForm(FightForm.s_battleUIForm);

            if (form != null)
            {
                string    name      = string.Format("HeroHeadHud/HeroHead{0}", base.currentConf.Param[0]);
                Transform transform = form.transform.FindChild(name);
                if (transform != null)
                {
                    GameObject gameObject = transform.gameObject;
                    if (gameObject.activeInHierarchy)
                    {
                        base.AddHighLightGameObject(gameObject, true, form, true);
                        if ((NewbieGuideBaseScript.ms_originalGo.Count > 0) && (NewbieGuideBaseScript.ms_highlitGo.Count > 0))
                        {
                            PlayerHead component = NewbieGuideBaseScript.ms_originalGo[0].GetComponent <PlayerHead>();
                            PlayerHead head2     = NewbieGuideBaseScript.ms_highlitGo[0].GetComponent <PlayerHead>();
                            if ((component != null) && (head2 != null))
                            {
                                head2.SetPrivates(component.state, component.MyHero, component.HudOwner);
                            }
                        }
                        base.Initialize();
                    }
                    else
                    {
                        this.CompleteHandler();
                    }
                }
            }
        }
    }
예제 #26
0
    /// <summary>
    /// 初始化玩家
    /// </summary>
    private void InitPlayer()
    {
        for (int i = 0; i < playerNum; i++)
        {
            GameObject obj  = panelObj.transform.Find("PlayerHead0" + i).gameObject;
            PlayerHead head = null;
            if (i == 0)
            {
                head = obj.AddComponent <MySelfHead>();
            }
            else
            {
                head = obj.AddComponent <PlayerHead>();
            }

            PlayerData data = new PlayerData();
            data.name    = "我是" + i;
            data.glodNum = 100000;
            head.SetData(data);
            headList.Add(head);
            head.playerIndex = i;
        }
    }
예제 #27
0
    /// <summary>
    /// 发牌
    /// </summary>
    private void FaPaiHandler()
    {
        CardItem item = readlyCardItemList[readlyCardItemList.Count - tempCardIndex - 1];

        item.transform.SetAsLastSibling();
        playerCardItemList.Add(item);
        PlayerHead head    = headList[tempCardIndex % 5];
        Tweener    tweener = item.transform.DOMove(head.GetCardCon().position, 0.2f);

        tweener.OnComplete(delegate() {
            FapaiUnitComplete(item, head);
        });
        tempCardIndex++;
        if (tempCardIndex >= 15)
        {
            Mogo.Util.TimerHeap.DelTimer(ShowCardTimeId);
            GenzhuButton.interactable = true;
            JiazhuButton.interactable = true;
            if (GenzhuTotalNum >= minBipaiGenzhuNum)
            {
                BiButton.interactable = true;
            }
        }
    }
예제 #28
0
    void OnLoadPlayerHeadFinished(PlayerHead head, uint playerId, Transform trans, EntityParent obj)
    {
        Quaternion qu = new Quaternion();
        qu.eulerAngles = Vector3.zero;

        head.AddToParent(m_stage, qu);

        if (m_heads.ContainsKey(playerId) == false)
        {
            m_heads.Add(playerId, head);
        }

        if (m_trans.ContainsKey(playerId) == false)
        {
            m_trans.Add(playerId, trans);
        }

        SetHead(obj);
    }
예제 #29
0
    private void NextPlayerOpaHandler(PlayerHead head)
    {
        List <PlayerHead> notOverPlayerList = GetNotOverPlayer();

        if (notOverPlayerList.Count == 1)
        {
            SetWinner(notOverPlayerList[0]);
            return;
        }
        PlayerHead next = null;

        if (head.playerIndex + 1 == headList.Count)
        {
            //到了玩家自己
            GenzhuTotalNum++;
            next = headList[0];
            if (next.IsOver == false)
            {
                GenzhuButton.interactable = true;
                JiazhuButton.interactable = true;
                QiButton.interactable     = true;
                if (GenzhuTotalNum >= minBipaiGenzhuNum)
                {
                    BiButton.interactable = true;
                }
                return;//如果自己还没输则返回等待自己手动操作
            }
            else
            {
                EnabledAllButton(false);
            }
        }
        else
        {
            next = headList[head.playerIndex + 1];
            GenzhuButton.interactable = false;
            JiazhuButton.interactable = false;
            QiButton.interactable     = false;
            if (GenzhuTotalNum >= minBipaiGenzhuNum)
            {
                BiButton.interactable = false;
            }
        }
        if (next.IsOver)
        {
            NextPlayerOpaHandler(next);
            return;
        }
        ShowCardTimeId = Mogo.Util.TimerHeap.AddTimer <PlayerHead>(500, 0, NextPlayerOpaHandler, next);
        bool isBipai          = false;
        int  randomMax        = 10000;
        int  random           = Random.Range(0, randomMax);
        bool isChujetton      = false;
        int  surplusPlayerNum = GetSurplusPlayerNum();
        int  kanPlayerNum     = GetKanPlayerNum();
        bool isKan            = false;

        if (next.dataList != null && next.dataList.Count == 3)
        {
            isKan = true;
        }
        if (isKan == false)
        {
            //看牌的几率30%
            if (random < randomMax * 0.5f)
            {
                CreatePlayerCardData(next.playerIndex);//看牌
                next.SetResultText("看牌");
                isChujetton = IsGenZhu(next, out isBipai);
            }
            else
            {
                isChujetton = true;
            }
        }
        else
        {
            isChujetton = IsGenZhu(next, out isBipai);
        }
        if (isChujetton == true)
        {
            BetJetton(next);
            if (isBipai)
            {
                PlayerHead bipaiPlayer = GetCanBipaiPlayer(next);
                if (bipaiPlayer == null)
                {
                    SetWinner(next);
                    return;
                }
                else
                {
                    bipaipanel.Show(bipaiPlayer, next);
                    Mogo.Util.TimerHeap.DelTimer(ShowCardTimeId);
                    ShowCardTimeId = Mogo.Util.TimerHeap.AddTimer <PlayerHead, PlayerHead>(2000, 0, BiPaiResult, bipaiPlayer, next);
                }
            }
        }
        else
        {
            next.GiveUp();
        }
    }
예제 #30
0
 void Awake()
 {
     rb   = GetComponentInChildren <Rigidbody>();
     head = GetComponentInChildren <PlayerHead>();
 }
예제 #31
0
 private void Start()
 {
     playerCollider = GetComponent <CapsuleCollider>();
     rb             = GetComponent <Rigidbody>();
     playerHead     = GetComponentInChildren <PlayerHead>();
 }
예제 #32
0
    public void AddInfoBillboard(uint playerId, Transform trans, EntityParent self, bool showBlood, HeadBloodColor bloodColor = HeadBloodColor.Red, bool showAnger = false)
    {
        //if (trans == null)
        //    return;

        if (m_heads.ContainsKey(playerId))
        {
            //LoggerHelper.Warning("Same player id: " + playerId);
            var head = m_heads[playerId] as PlayerHead;
            head.ShowBillboardBlood(showBlood);
            head.ShowBillboardAnger(showAnger);
            head.SetBillboardBloodColor(bloodColor);
        }
        else
        {
            var head = new PlayerHead(playerId, trans, OnLoadPlayerHeadFinished, self, showBlood, bloodColor, showAnger);
        }        
    }