Пример #1
0
        public void PickUpItem()
        {
            if (NetClient.instance == null)
            {
                dispose();
                return;
            }

            long curMs = NetClient.instance.CurServerTimeStampMS;

            if (curMs < cantGetTimer)
            {
                return;
            }

            if (NetClient.instance != null)
            {
                if (curMs - itemdta.initedTimer < 100)
                {
                    return;
                }
            }

            if (isFake)
            {
                FightText.play(FightText.MONEY_TEXT, SelfRole._inst.getHeadPos(), itemdta.count);
                dispose();
            }
            else
            {
                //int timer = NetClient.instance.CurServerTimeStamp;
                //if (timer - lastGetTimer < 3)
                //    return;
                //lastGetTimer = timer;
                //BaseRoomItem.instance.removeDropItm(itemdta.dpid);

                if (SelfRole.fsm.Autofighting &&
                    !AutoPlayModel.getInstance().WillPick((uint)itemdta.tpid))
                {
                    return;
                }
                if (a3_BagModel.getInstance().curi <= a3_BagModel.getInstance().getItems().Count&& (
                        a3_BagModel.getInstance().getItemNumByTpid((uint)itemdta.tpid) == 0 ||
                        a3_BagModel.getInstance().getItemNumByTpid((uint)itemdta.tpid) >= a3_BagModel.getInstance().getItemDataById((uint)itemdta.tpid).maxnum) &&
                    itemdta.tpid != 0)
                {
                    flytxt.instance.fly(ContMgr.getCont("BagProxy_noplace"));
                    return;
                }
                if (itemdta.ownerId == PlayerModel.getInstance().cid || itemdta.ownerId == 0)
                {
                    if (!A3_RollModel.getInstance().rollMapping.ContainsKey(itemdta.dpid))
                    {
                        BaseRoomItem.instance.removeDropItm(itemdta.dpid, false);
                    }
                }

                MapProxy.getInstance().sendPickUpItem(itemdta.dpid);
            }
        }
Пример #2
0
        private void SetRollResult()
        {
            if (!_textResult.IsActive())
            {
                _btnNeed.gameObject.SetActive(false);
                _btnGreed.gameObject.SetActive(false);
                _textResult.gameObject.SetActive(true);

                Roll result = null;

                if (A3_RollModel.getInstance().rollReusultMapping.ContainsKey(_rollItemdata.dpid))
                {
                    result = A3_RollModel.getInstance().rollReusultMapping[_rollItemdata.dpid];
                }

                _textResult.text = result == null?ContMgr.getCont("a3_roll_not_hava") : string.Format(" {0}" + ContMgr.getCont("a3_roll_get") + "({1})" + ContMgr.getCont("a3_roll_youget") + "({2})", result.name, result.max_roll.ToString(), result.roll.ToString());

                if (A3_RollModel.getInstance().rollMapping.ContainsKey(_rollItemdata.dpid))
                {
                    if (result == null)
                    {
                        A3_RollModel.getInstance().rollMapping[_rollItemdata.dpid].isCanPick = true;
                    }
                    else if (PlayerModel.getInstance().cid == result.roll_owner)
                    {
                        A3_RollModel.getInstance().rollMapping[_rollItemdata.dpid].isCanPick = true;
                    }
                }
            }
        }
Пример #3
0
        public override void onShowed()
        {
            single = this;

            OnBtnOpenHandler(_btnOpen.gameObject);

            BuildRollItemGo(A3_RollModel.getInstance().rollMapping);

            OnAddEventListener();
        }
Пример #4
0
        private void ClearRollItemGo()
        {
            foreach (var go in _goMapping)
            {
                StopCoroutine(go.Value.TimeBegin());
                go.Value.Dispose();
            }

            _goMapping.Clear();

            A3_RollModel.getInstance().RemoveRollDropItem(0, true);
        }
Пример #5
0
        public void RemoveRollItemGO(uint dpid)
        {
            if (_goMapping.ContainsKey(dpid))
            {
                StopCoroutine(_goMapping[dpid].TimeBegin());
                _goMapping[dpid].Dispose();
                _goMapping.Remove(dpid);
            }

            A3_RollModel.getInstance().RemoveRollDropItem(dpid);

            this.gameObject.SetActive(_goMapping.Count > 0);
        }
Пример #6
0
        public void ChangeBtnState()
        {
            _btnNeed.gameObject.SetActive(false);
            _btnGreed.gameObject.SetActive(false);
            var result = A3_RollModel.getInstance().rollReusultMapping[_rollItemdata.dpid];

            if (result == null)
            {
                return;
            }
            _textResult.gameObject.SetActive(true);

            if (result.roll_type != 0)
            {
                _textResult.text = string.Format(ContMgr.getCont("a3_roll_get") + "({0})({1})", result.roll.ToString(), ContMgr.getCont("a3_roll_type" + result.roll_type.ToString()));
            }

            if (result.max_roll != 0)
            {
                _textResult.gameObject.SetActive(false);

                SetRollResult();
            } // 已经有了结果
        }
Пример #7
0
        public void OnTeamInfo(Variant data)
        {
            int res = data["res"];

            Debug.Log("队伍信息" + data.dump());
            if (res < 0)
            {
                if (res == -1309)
                {
                    SendCreateTeam(0);
                    now_Team = true;
                    //TeamProxy.getInstance().SendInvite(trage_cid);
                    //now_Team = false;
                }
                else
                {
                    Globle.err_output(res);
                }
                return;
            }
            switch ((TeamCmd)res)
            {
            case TeamCmd.CreateTeam:
                SetCreateTeam(data);
                break;

            case TeamCmd.GetMapTeam:
                SetMapTeam(data);
                break;

            case TeamCmd.WatchTeamInfo:
                SetWatchTeamInfo(data);
                break;

            case TeamCmd.SyncTeamBlood:    //同步队伍血量
                SetSyncTeamBlood(data);
                break;

            case TeamCmd.CurrentMapTeamPos:    //队员坐标;
                GetTeamPos(data);
                break;

            case TeamCmd.ApplyJoinTeam:
                SetApplyJoinTeam(data);
                break;

            case TeamCmd.AffirmApply:
                break;

            case TeamCmd.LeaveTeam:    //离开队伍 都是case 8 不管主动离开还是被T
                SetLeaveTeam(data);
                break;

            case TeamCmd.Invite:
                break;

            case TeamCmd.AffirmInvite:    //10确认邀请
                SetAffirmInvite(data);
                break;

            case TeamCmd.KickOut:    //踢出
                SetKickOut(data);
                break;

            case TeamCmd.ChangeCaptain:    //更换队长
                SetChangeCaptain(data);
                break;

            case TeamCmd.Dissolve:
                SetDissolve(data);
                break;

            case TeamCmd.EditorInfo:    //修改队伍信息
                SetChangeTeamInfo(data);
                break;

            case TeamCmd.ChangeObject:    //15队长队伍目的信息变更时,服务器发来数据
                SetTeamobject_Change(data);
                break;

            case TeamCmd.Ready:    //16队员准备
                SetTeamReady(data);
                break;

            case TeamCmd.Get_curPageTeam:

                Get_curPageTeam_info(data);
                break;

            case TeamCmd.NoticeCaptainNewInfo:    //20 通知队长有新的申请
                SetNoticeCaptainNewInfo(data);
                break;

            case TeamCmd.NoticeApplyBeRefuse:    //21 申请加入队伍被拒绝
                break;

            case TeamCmd.NoticeHaveMemberLeave:    //22通知有成员离开队伍
                SetNoticeHaveMemberLeave(data);
                break;

            case TeamCmd.NoticeInvite:    //23通知邀请
                SetNoticeInvite(data);
                break;

            case TeamCmd.NewMemberJoin:    //24新队员入队
                SetNewMemberJoin(data);
                MonsterMgr._inst.RefreshVaildMonster();
                break;

            case TeamCmd.NoticeInviteBeRefuse:    //25通知邀请被拒绝
                SetNoticeInviteBeRefuse(data);
                break;

            case TeamCmd.NoticeOnlineStateChanged:    //26在线状态变更
                SetNoticeOnlineStateChange(data);
                break;

            //case TeamCmd.NoticeCombptOrLvChange:
            //    SetNoticeLvOrCombptChange(data);
            //    break;
            case TeamCmd.DropItemRoll:

                A3_RollModel.getInstance().SetRollDropItem(data["roll_dpitms"]._arr);
                if (a3_RollItem.single == null)
                {
                    InterfaceMgr.getInstance().ui_async_open(InterfaceMgr.A3_ROLL_ITEM);
                }

                break;

            case TeamCmd.Roll:

                A3_RollModel.getInstance().SetRollResult(data);
                dispatchEvent(GameEvent.Createimmedi((uint)TeamCmd.Roll, this, data));

                break;

            default:

                break;
            }
        }
Пример #8
0
        public override void Execute(float delta_time)
        {
            //if (dropTimer > dropDruation)
            //{//限定拾取不超时
            //    SelfRole.fsm.ChangeState(StateIdle.Instance);
            //    return;
            //}
            //dropTimer += delta_time;
            SelfRole._inst.m_moveAgent.avoidancePriority = 1;
            if (passed)
            {
                nearest        =
                    pickTarget = null;
            }
            if (nearest == null || !nearest.gameObject)
            {//选取一个掉落目标,移动过去
                DropItem drpitm;
                float    min = float.MaxValue;
                Dictionary <uint, DropItem> .Enumerator etor = BaseRoomItem.instance.dDropItem_own.GetEnumerator();
                while (etor.MoveNext())
                {
                    drpitm = etor.Current.Value;
                    if (drpitm != null && drpitm.gameObject)
                    {
                        bool hasOwner = drpitm.itemdta.ownerId != 0,
                             notMine  = drpitm.itemdta.ownerId != PlayerModel.getInstance().cid ||
                                        (TeamProxy.getInstance().MyTeamData != null && drpitm.itemdta.ownerId == TeamProxy.getInstance().MyTeamData.teamId);
                        if (hasOwner && notMine)
                        {
                            continue;
                        }
                        //!--距离超过拾取范围
                        if (Vector3.Distance(drpitm.transform.position.ConvertToGamePosition(), SelfRole._inst.m_curModel.transform.position.ConvertToGamePosition()) > StateInit.Instance.PickDistance)
                        {
                            continue;
                        }
                        //!--如果背包满且不是金币,不捡
                        if (a3_BagModel.getInstance().curi <= a3_BagModel.getInstance().getItems().Count&& (
                                a3_BagModel.getInstance().getItemNumByTpid((uint)drpitm.itemdta.tpid) == 0 ||
                                a3_BagModel.getInstance().getItemNumByTpid((uint)drpitm.itemdta.tpid) >= a3_BagModel.getInstance().getItemDataById((uint)drpitm.itemdta.tpid).maxnum) &&
                            drpitm.itemdta.tpid != 0)
                        {
                            continue;
                        }

                        if (A3_RollModel.getInstance().rollMapping.ContainsKey(drpitm.itemdta.dpid) && !A3_RollModel.getInstance().rollMapping[drpitm.itemdta.dpid].isCanPick)
                        {
                            continue;
                        }

                        else if (drpitm.canPick && AutoPlayModel.getInstance().WillPick((uint)drpitm.itemdta.tpid))
                        {
                            pickTarget = drpitm;
                            if (nearest == null)
                            {
                                nearest = pickTarget;
                            }
                            else
                            {
                                float dis = Vector3.Distance(pickTarget.transform.position.ConvertToGamePosition(), SelfRole._inst.m_curModel.transform.position.ConvertToGamePosition());
                                if (dis < min)
                                {
                                    min     = dis;
                                    nearest = pickTarget;
                                }
                            }
                        }
                        else
                        {
                            pickTarget = null;
                        }
                    }
                }

                calc_ori = SelfRole._inst.m_curModel.transform.position;
                if (nearest != null)
                {
                    //if (A3_RollModel.getInstance().rollMapping.ContainsKey(nearest.itemdta.dpid))  // 该物品是roll点物品
                    //{
                    //    bool isCanPick = A3_RollModel.getInstance().rollMapping[nearest.itemdta.dpid].isCanPick;

                    //    if (!isCanPick)
                    //    {
                    //        nearest = null;
                    //        calc_tar = Vector3.zero;
                    //    }
                    //    else
                    //    {
                    //        SelfRole._inst.SetDestPos(nearest.transform.position);
                    //        calc_tar = nearest.transform.position;
                    //        return;
                    //    }
                    //}
                    //else {

                    SelfRole._inst.SetDestPos(nearest.transform.position);
                    calc_tar = nearest.transform.position;

                    return;
                    //}
                }
                else
                {
                    calc_tar = Vector3.zero;
                }
            }
            else
            {
                //if (nearest != null)
                //{
                if (nearest.gameObject != null && Vector3.Distance(SelfRole._inst.m_curModel.position.ConvertToGamePosition(), nearest.transform.position.ConvertToGamePosition()) < 0.5f)
                {
                    nearest.PickUpItem();
                    SelfRole._inst.m_curAni.SetBool(EnumAni.ANI_RUN, false);
                    SelfRole.ChangeRideAniState(false);
                    nearest = null;
                }

                if (nearest != null)
                {
                    bool isOutOfTouch = Vector3.Distance(nearest.transform.position.ConvertToGamePosition(), SelfRole._inst.m_curModel.transform.position.ConvertToGamePosition()) > StateInit.Instance.PickDistance;
                    if (!passed && !isOutOfTouch)
                    {
                        SelfRole._inst.TurnToPos(nearest.transform.position);
                        SelfRole._inst.m_curAni.SetBool(EnumAni.ANI_RUN, true);
                        SelfRole.ChangeRideAniState(true);
                    }
                    else
                    {
                        nearest = null;
                        SelfRole._inst.m_curAni.SetBool(EnumAni.ANI_RUN, false);
                        SelfRole.ChangeRideAniState(false);
                    }
                }
                //}
            }


            calc_cur = SelfRole._inst.m_curModel.transform.position;
            passed   = CheckPass(calc_ori, calc_cur, calc_tar);
            if (nearest == null || nearest.gameObject == null)
            {
                SelfRole._inst.m_moveAgent.Stop();
                SelfRole._inst.m_curAni.SetBool(EnumAni.ANI_RUN, false);
                SelfRole.ChangeRideAniState(false);
                if (SelfRole.fsm.Autofighting)
                {
                    SelfRole.fsm.ChangeState(StateAttack.Instance);
                }
                else
                {
                    SelfRole.fsm.ChangeState(StateIdle.Instance);
                }
                return;
            }
        }