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); } }
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; } } } }
public override void onShowed() { single = this; OnBtnOpenHandler(_btnOpen.gameObject); BuildRollItemGo(A3_RollModel.getInstance().rollMapping); OnAddEventListener(); }
private void ClearRollItemGo() { foreach (var go in _goMapping) { StopCoroutine(go.Value.TimeBegin()); go.Value.Dispose(); } _goMapping.Clear(); A3_RollModel.getInstance().RemoveRollDropItem(0, true); }
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); }
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(); } // 已经有了结果 }
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; } }
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; } }