protected void Stop() { TimerHeap.DelTimer(timer); motor.StopRotate(); }
void OnSendButtonUp() { if (CommunityUIViewManager.Instance.GetChatUILogicText() == "") { return; } if (CommunityUIViewManager.Instance.GetInputLabelContentLength() > 50) { //MogoFXManager.Instance.FloatText("Too Many Words..."); MogoMsgBox.Instance.ShowFloatingText(LanguageData.GetContent(7527)); return; } if (m_bIsSendCDing) { //MogoFXManager.Instance.FloatText("Slow Down Please..."); MogoMsgBox.Instance.ShowFloatingText(LanguageData.GetContent(7526)); return; } TimerHeap.AddTimer(5000, 0, () => { m_bIsSendCDing = false; }); Debug.Log("Send"); m_bIsSendCDing = true; //TimerHeap.AddTimer(3000, 0, () => { m_bIsSendCDing = false; }); //if (m_iCurrentChannel == 2) //{ // EventDispatcher.TriggerEvent<string>("SendCommunityMessage", // m_iCurrentChannel + m_strFriendId + CommunityUIViewManager.Instance.GetChatUILogicText().Substring(m_iPrivateTalkHead)); //} //else //{ // EventDispatcher.TriggerEvent<string>("SendCommunityMessage", // m_iCurrentChannel + CommunityUIViewManager.Instance.GetChatUILogicText().Substring(m_iPrivateTalkHead)); //} string data = CommunityUIViewManager.Instance.GetChatUILogicText().Replace("\\n", ""); data = data.Replace("[", "["); data = data.Replace("]", "]"); for (int i = 0; i < data.Length; ++i) { if (data[i] == '<') { if (data.Length > i + 6) { if (data.Substring(i, 7) == "<info=(") { if (data.Length > i + 13) { string itemId = data.Substring(i + 7, 7); if (InventoryManager.Instance.GetItemByItemID(int.Parse(itemId), true) == null) { MogoMsgBox.Instance.ShowFloatingText("Not Have This Item"); return; } } } } } } if (m_iCurrentChannel == ChannelId.PERSONAL) { string chatStr = data.Substring(m_iPrivateTalkHead); if (chatStr.Length > 0 && chatStr[chatStr.Length - 1] == '|') { chatStr = chatStr.Substring(0, chatStr.Length - 1); } //Debug.LogError(m_strFriendId); MogoWorld.thePlayer.RpcCall("Chat", (byte)m_iCurrentChannel, (ulong)m_strFriendId, chatStr); if (m_dictIDToName.ContainsKey(m_strFriendId)) { string sendLevel = ""; FriendMessageGridData friendMessageGridData = FriendManager.Instance.GetFriendInfo(m_strFriendId); if (friendMessageGridData != null) // 私聊-好友等级 { sendLevel = friendMessageGridData.level; } else if (m_dictIDToLevel.ContainsKey(m_strFriendId))// 私聊-非好友等级 { sendLevel = m_dictIDToLevel[m_strFriendId].ToString(); } else { sendLevel = "**"; } string LvAndNameString = ""; if (MogoUIManager.IsShowLevel) { LvAndNameString = string.Concat("[", NAME_COLOR, "]", "LV", sendLevel, " ", m_dictIDToName[m_strFriendId], "[-]"); } else { LvAndNameString = string.Concat("[", NAME_COLOR, "]", m_dictIDToName[m_strFriendId], "[-]"); } //CommunityUIViewManager.Instance.AddChatUIDialogText("[" + PERSONAL_COLOR + "][" + LanguageData.GetContent(47302) + "] : 你对" + LvAndNameString + "说 : " + chatStr + "[-]", ChannelId.PERSONAL, (ulong)m_strFriendId); CommunityUIViewManager.Instance.AddChatUIDialogText("[" + PERSONAL_COLOR + "]" + CHANNEL_BLANK + LanguageData.GetContent(47305) + LvAndNameString + LanguageData.GetContent(47306) + chatStr + "[-]", ChannelId.PERSONAL, (ulong)m_strFriendId, ChannelId.PERSONAL, LvAndNameString, NAME_COLOR, 105); } m_lastWords = data.Substring(m_iPrivateTalkHead); //MogoWorld.thePlayer.RpcCall("Chat", (byte)m_iCurrentChannel, (uint)m_strFriendId, // CommunityUIViewManager.Instance.GetChatUILogicText().Substring(m_iPrivateTalkHead)); } else { //string chatStr = data.Substring(m_iPrivateTalkHead); string chatStr = data; if (chatStr.Length > 0 && chatStr[chatStr.Length - 1] == '|') { chatStr = chatStr.Substring(0, chatStr.Length - 1); } MogoWorld.thePlayer.RpcCall("Chat", (byte)m_iCurrentChannel, (ulong)0, chatStr); m_lastWords = data; //MogoWorld.thePlayer.RpcCall("Chat", (byte)m_iCurrentChannel, (uint)0, // CommunityUIViewManager.Instance.GetChatUILogicText().Substring(m_iPrivateTalkHead)); } EventDispatcher.TriggerEvent <string>(Events.OtherEvent.ClientGM, m_lastWords); m_iPrivateTalkHead = 0; CommunityUIViewManager.Instance.EmptyChatUIInput(); }
/// <summary> /// 选择创建角色 /// </summary> /// <param name="go"></param> void OnCreateCharacterSelected(GameObject go, bool needFadeIn) { var vocation = Int32.Parse(go.name); #region 动作 var goAnimator = m_Animators[vocation]; if (goAnimator != null) { goAnimator.SetInteger("Action", 35); actionTimer = TimerHeap.AddTimer(500, 0, () => { if (go && goAnimator) { goAnimator.SetInteger("Action", 34); } }); } #endregion #region 特效 switch (vocation) { case (int)Vocation.Warrior: if (m_sfxHandlers.ContainsKey(vocation) && m_fxTimes.ContainsKey(vocation)) { foreach (var item in m_sfxHandlers) { item.Value.RemoveAllFX(); } foreach (var item in m_fxTimes) { TimerHeap.DelTimer(item.Value); } m_sfxHandlers[vocation].HandleFx(10135); m_fxTimes[vocation] = TimerHeap.AddTimer(3000, 0, () => { if (m_sfxHandlers.ContainsKey(vocation)) { m_sfxHandlers[vocation].RemoveAllFX(); } }); } break; case (int)Vocation.Archer: if (m_sfxHandlers.ContainsKey(vocation) && m_fxTimes.ContainsKey(vocation)) { foreach (var item in m_sfxHandlers) { item.Value.RemoveAllFX(); } foreach (var item in m_fxTimes) { TimerHeap.DelTimer(item.Value); } m_sfxHandlers[vocation].HandleFx(10335); m_fxTimes[vocation] = TimerHeap.AddTimer(3000, 0, () => { if (m_sfxHandlers.ContainsKey(vocation)) { m_sfxHandlers[vocation].RemoveAllFX(); } }); } break; case (int)Vocation.Assassin: if (m_sfxHandlers.ContainsKey(vocation) && m_fxTimes.ContainsKey(vocation)) { foreach (var item in m_sfxHandlers) { item.Value.RemoveAllFX(); } foreach (var item in m_fxTimes) { TimerHeap.DelTimer(item.Value); } m_sfxHandlers[vocation].HandleFx(10435); m_fxTimes[vocation] = TimerHeap.AddTimer(3000, 0, () => { if (m_sfxHandlers.ContainsKey(vocation)) { m_sfxHandlers[vocation].RemoveAllFX(); } }); } break; case (int)Vocation.Mage: if (m_sfxHandlers.ContainsKey(vocation) && m_fxTimes.ContainsKey(vocation)) { foreach (var item in m_sfxHandlers) { item.Value.RemoveAllFX(); } foreach (var item in m_fxTimes) { TimerHeap.DelTimer(item.Value); } m_sfxHandlers[vocation].HandleFx(10235); m_sfxHandlers[vocation].HandleFx(10239, null, (fxgo, fxid) => { fxgo.transform.parent = m_avatarList[vocation].gameObject.transform.Find("Bip_master/bip_weapon_separate/equip_mage_staff_02_p(Clone)"); fxgo.transform.localPosition = Vector3.zero; fxgo.transform.localEulerAngles = new Vector3(270, 0, 0); fxgo.transform.localScale = new Vector3(1, 1, 1); }); m_fxTimes[vocation] = TimerHeap.AddTimer(3000, 0, () => { if (m_sfxHandlers.ContainsKey(vocation)) { m_sfxHandlers[vocation].RemoveFXs(10235); } }); } break; default: break; } #endregion var cameraSlot = m_cameraSlots.GetValueOrDefault(vocation, null); m_loginCamera.SetTarget(cameraSlot); var avatar = m_avatarList.GetValueOrDefault(vocation, null); if (avatar == null) { return; } if (m_lastSelectedCharacter != null) { m_lastSelectedCharacter.Unfocus(); } avatar.Focus(); if (needFadeIn) { m_lastSelectedCharacter.FadeOut(); avatar.FadeIn(); } else { foreach (var item in m_avatarList) { if (item.Value != avatar) { item.Value.FadeOut(); } } } m_lastSelectedCharacter = avatar; NewLoginUIViewManager.Instance.ShowCreateCharacterDetailUI(); var chrInfo = CharacterInfoData.dataMap.GetValueOrDefault(int.Parse(go.name), null); if (chrInfo != null) { NewLoginUIViewManager.Instance.SetCreateCharacterJobDetailName(LanguageData.dataMap[chrInfo.vocation].content); NewLoginUIViewManager.Instance.SetCreateCharacterJobDetailInfo(LanguageData.dataMap[chrInfo.discription].content); List <JobAttrGridData> listd = new List <JobAttrGridData>() { new JobAttrGridData() { attrName = LanguageData.GetContent(46802), level = chrInfo.attack }, new JobAttrGridData() { attrName = LanguageData.GetContent(46803), level = chrInfo.defence }, new JobAttrGridData() { attrName = LanguageData.GetContent(46804), level = chrInfo.range }, }; NewLoginUIViewManager.Instance.FillJobAttrGridData(listd); } #region 音效 SoundManager.PlaySoundByID(19); #endregion #region 限制创建 switch (vocation) { case 1: case 2: case 4: case 3: NewLoginUIViewManager.Instance.SetEnterButtonLabel(LanguageData.GetContent(46800), true); NewLoginUIViewManager.Instance.ShowDiceAndName(true); NewLoginUIViewManager.Instance.SetCharacterNameInputText(""); EventDispatcher.TriggerEvent <byte>(Events.UIAccountEvent.OnGetRandomName, (byte)avatar.vocation); break; //NewLoginUIViewManager.Instance.SetEnterButtonLabel(LanguageData.GetContent(46801), false); //NewLoginUIViewManager.Instance.ShowDiceAndName(false); // TO DO //NewLoginUIViewManager.Instance.SetCharacterNameInputText(""); //EventDispatcher.TriggerEvent<byte>(Events.UIAccountEvent.OnGetRandomName, (byte)avatar.vocation); //break; } switch (vocation) { case 1: m_currentPos = 3; NewLoginUIViewManager.Instance.SelectCreateCharacterDetailUIJobIcon(3); break; case 2: m_currentPos = 4; NewLoginUIViewManager.Instance.SelectCreateCharacterDetailUIJobIcon(4); break; case 3: m_currentPos = 1; NewLoginUIViewManager.Instance.SelectCreateCharacterDetailUIJobIcon(1); break; case 4: m_currentPos = 2; NewLoginUIViewManager.Instance.SelectCreateCharacterDetailUIJobIcon(2); break; } #endregion GameProcManager.SetGameProgress(ProcType.CreateCharacter, "SelectCharacter"); }
public void SetBarrelRotate(GameObject go) { HideGameObject(go); TimerHeap.AddTimer((uint)fireRotateDelay, 0, barrel.SetRotate, target); // barrel.SetRotate(target); }
private void ShowFightRange(int hitActionID) { SkillAction action = SkillAction.dataMap[hitActionID]; float offsetX = action.hitXoffset; float offsetY = action.hitYoffset; float angleOffset = 180; switch (action.targetRangeType) { case 0: //扇形 { float raidus = action.targetRangeParam[0] * 0.01f; float angle = action.targetRangeParam[1]; var cube = new GameObject(); var filter = cube.AddComponent <MeshFilter>(); cube.AddComponent <MeshRenderer>(); DrawCircle(cube, filter, raidus, angle, offsetX, offsetY, angleOffset); TimerHeap.AddTimer <GameObject>(1000, 0, (g) => { GameObject.Destroy(g); }, cube); break; } case 1: //圆形 { float raidus = action.targetRangeParam[0] * 0.01f; float angle = 360; var circle = new GameObject(); var filter = circle.AddComponent <MeshFilter>(); circle.AddComponent <MeshRenderer>(); DrawCircle(circle, filter, raidus, angle, offsetX, offsetY, angleOffset, action.castPosType); TimerHeap.AddTimer <GameObject>(1000, 0, (g) => { GameObject.Destroy(g); }, circle); break; } case 2: //单体 { break; } case 3: //矩形 { float h = action.targetRangeParam[0] * 0.01f; float w = action.targetRangeParam[1] * 0.01f; var cube = new GameObject(); var filter = cube.AddComponent <MeshFilter>(); cube.AddComponent <MeshRenderer>(); //float sin = (float)Math.Sin(angleOffset * Math.PI / 180); //float cos = (float)Math.Cos(angleOffset * Math.PI / 180); Matrix4x4 m = theOwner.Transform.localToWorldMatrix; Matrix4x4 m1 = new Matrix4x4(); m1.SetRow(0, new Vector4(0, 0, 0, offsetY)); //1 m1.SetRow(1, new Vector4(0, 1, 0, 0)); m1.SetRow(2, new Vector4(0, 0, 0, offsetX)); //-1 m1.SetRow(3, new Vector4(0, 0, 0, 1)); m = m * m1; Vector3 posi = new Vector3(m.m03, m.m13, m.m23); var mesh = new Mesh(); //cube.transform.position = theOwner.Transform.position; cube.transform.position = posi; cube.transform.rotation = theOwner.Transform.rotation; cube.transform.Rotate(new Vector3(0, 90, 0)); var v0 = cube.transform.position + cube.transform.forward * w * 0.5f; cube.transform.position = v0; cube.transform.rotation = theOwner.Transform.rotation; var v1 = cube.transform.position + cube.transform.forward * h; //cube.transform.position = theOwner.Transform.position; cube.transform.position = posi; cube.transform.rotation = theOwner.Transform.rotation; cube.transform.Rotate(new Vector3(0, -90, 0)); var v2 = cube.transform.position + cube.transform.forward * w * 0.5f; cube.transform.position = v2; cube.transform.rotation = theOwner.Transform.rotation; var v3 = cube.transform.position + cube.transform.forward * h; cube.transform.position = Vector3.zero; cube.transform.rotation = new Quaternion(); mesh.vertices = new Vector3[] { v0, v1, v2, v3 }; mesh.triangles = new int[] { 2, 1, 0, 2, 3, 1 }; filter.mesh = mesh; TimerHeap.AddTimer <GameObject>(1000, 0, (g) => { GameObject.Destroy(g); }, cube); break; } case 4: //前方半圆 { float raidus = action.targetRangeParam[0] * 0.01f; float angle = 180; var cube = new GameObject(); var filter = cube.AddComponent <MeshFilter>(); cube.AddComponent <MeshRenderer>(); DrawCircle(cube, filter, raidus, angle, offsetX, offsetY, angleOffset); TimerHeap.AddTimer <GameObject>(1000, 0, (g) => { GameObject.Destroy(g); }, cube); break; } case 6: //世界坐标,龙专用 { float x1 = action.targetRangeParam[0] * 0.01f; float y1 = action.targetRangeParam[1] * 0.01f; float x2 = action.targetRangeParam[2] * 0.01f; float y2 = action.targetRangeParam[3] * 0.01f; float minX = Math.Min(x1, x2); float maxX = Math.Max(x1, x2); float minY = Math.Min(y1, y2); float maxY = Math.Max(y1, y2); float radiusX = minX + (maxX - minX) * 0.5f; float radiusY = minY + (maxY - minY) * 0.5f; float radius = Vector2.Distance(new Vector2(x1, y1), new Vector2(x2, y2)) * 0.5f; var cube = new GameObject(); var filter = cube.AddComponent <MeshFilter>(); cube.AddComponent <MeshRenderer>(); DrawCircle(cube, filter, radius, 360, new Vector3(radiusX, theOwner.Transform.position.y + 3, radiusY)); TimerHeap.AddTimer <GameObject>(1000, 0, (g) => { GameObject.Destroy(g); }, cube); break; } } }
void OnDestroy() { TimerHeap.DelTimer(timerID); }
void OnDestroy() { TimerHeap.DelTimer(timer); RemoveListeners(); }
public override void Release() { this.hasInit = false; TimerHeap.DelTimer(this.heartbeatTimer); }
protected override void OnDestroy() { TimerHeap.DelTimer(this.stopTimer); ActorVisibleManager.Instance.Remove(base.FixTransform); base.OnDestroy(); }
void Tick() { TimerHeap.Tick(); FrameTimerHeap.Tick(); }
void Awake() { //LoadCreateCharacter(); m_vecThisInit = transform.localPosition; TimerHeap.AddTimer(500, 0, ResetPos); }
protected override void OnDisable() { TimerHeap.DelTimer(this.mDelayScrollId); TimerHeap.DelTimer(this.mDelayEffectId); base.OnDisable(); }
void Start() { TimerHeap.AddTimer(100, 0, SetData); }
private void SwitchNormal() { TimerHeap.DelTimer(this.timerId); this.SetFlashLight(false); }
public void Update() { NetTcpManager.Instance.Recv(); TimerHeap.Tick(); }
public override void ClearData() { TimerHeap.DelTimer(this.stopTimer); base.ClearData(); }
public override void CreateActualModel() { isCreatingModel = true; AssetCacheMgr.ReleaseLocalInstance(GameObject); AvatarModelData data = AvatarModelData.dataMap.Get((int)vocation); SubAssetCacheMgr.GetPlayerInstance(data.prefabName, (prefab, guid, go) => { var gameObject = go as GameObject; var actor = gameObject.AddComponent <ActorPlayer>(); actor.theEntity = this; motor = gameObject.AddComponent <MogoMotorServer>(); animator = gameObject.GetComponent <Animator>(); sfxHandler = gameObject.AddComponent <SfxHandler>(); //actor.mogoMotor = motor; audioSource = gameObject.AddComponent <AudioSource>(); audioSource.rolloffMode = AudioRolloffMode.Custom; GameObject = gameObject; Transform = gameObject.transform; GameObject.layer = 20; //otherplayer //Debug.LogError("entityPlayer.CreateActualModel:" + gameObject.layer); // Debug.LogError(GameObject.name + " " + ID + " Player CreateActualModel: " + Transform.position); this.Actor = actor; //Transform.localScale = scale; Transform.tag = "OtherPlayer"; UpdatePosition(); foreach (var item in gameObject.GetComponentsInChildren <SkinnedMeshRenderer>(true)) { item.enabled = false; } if (data.scale > 0) { Transform.localScale = new Vector3(data.scale, data.scale, data.scale); } base.CreateModel(); LoadEquip(); foreach (var item in gameObject.GetComponentsInChildren <SkinnedMeshRenderer>(true)) { item.enabled = true; } //Debug.Log("AddComponent<CombineSkinnedMeshes>"); //gameObject.AddComponent<CombineSkinnedMeshes>(); //Debug.Log("AddComponent<CombineSkinnedMeshes>"); gameObject.SetActive(false); idleTimer = TimerHeap.AddTimer(1000, 0, DelayCheckIdle); TimerHeap.AddTimer(3000, 0, () => { if (gameObject == null) { return; } gameObject.SetActive(true); isCreatingModel = false; SetBillBoard(); MogoFXManager.Instance.AddShadow(gameObject, ID); //gameObject.AddComponent<MogoObjOpt>().ObjType = MogoObjType.Player; //if (gameObject.GetComponent<Animator>() != null) //{ // gameObject.GetComponent<Animator>().enabled = false; //} //if (gameObject.GetComponent<Animation>() != null) //{ // gameObject.GetComponent<Animation>().enabled = false; //} }); Actor.ActChangeHandle = ActionChange; UpdateDressWing(); AddEquipFX(loadedEquipId); AddJewelFX(loadedJewelId); AddStrenthFX(loadedStrengthenId); } ); }
protected override void UpdateMoveByPointState(float deltaTime) { if (base.IsMovePausing) { if (!this.IsClearTargetPosition && !this.GetEntity().IsStatic&& !this.GetEntity().IsDizzy&& !this.GetEntity().IsWeak&& (XUtility.StartsWith(this.CurActionStatus, "run") || XUtility.StartsWith(this.CurActionStatus, "idle") || this.GetEntity().IsMoveCast) && base.ToCorner < base.NavMeshPath.get_corners().Length) { base.IsMovePausing = false; base.FixTransform.LookAt(new Vector3(base.NavMeshPath.get_corners()[base.ToCorner].x, base.FixTransform.get_position().y, base.NavMeshPath.get_corners()[base.ToCorner].z)); base.LeftLength = XUtility.DistanceNoY(base.FixTransform.get_position(), base.NavMeshPath.get_corners()[base.ToCorner]); if (this.CanChangeActionTo("run", true, 0, false)) { this.ChangeAction("run", false, true, 1f, 0, 0, string.Empty); } } } else { base.CalculateNextPace(deltaTime); if ((!XUtility.StartsWith(this.CurActionStatus, "run") && !XUtility.StartsWith(this.CurActionStatus, "idle") && !this.GetEntity().IsMoveCast) || this.GetEntity().IsStatic || this.GetEntity().IsDizzy || this.GetEntity().IsWeak) { base.IsMovePausing = true; base.MovingDirection = Vector3.get_zero(); } else if (XUtility.DistanceNoY(base.FixTransform.get_position(), base.NavMeshPosition) <= 0.05f || base.ToCorner == base.NavMeshPath.get_corners().Length || (base.NextPace >= base.LeftLength && base.ToCorner == base.NavMeshPath.get_corners().Length - 1)) { if (!this.IsClearTargetPosition) { this.IsClearTargetPosition = true; base.MovingDirection = Vector3.get_zero(); base.FixTransform.set_position(new Vector3(base.NavMeshPosition.x, base.FixTransform.get_position().y, base.NavMeshPosition.z)); TimerHeap.DelTimer(this.stopTimer); this.stopTimer = TimerHeap.AddTimer(350u, 0, delegate { if (this.IsClearTargetPosition && XUtility.StartsWith(this.CurActionStatus, "run")) { this.ChangeAction("idle", false, true, 1f, 0, 0, string.Empty); } }); } } else if (base.NavMeshPath.get_corners().Length > 0 && (XUtility.DistanceNoY(base.FixTransform.get_position(), base.NavMeshPath.get_corners()[base.ToCorner]) <= 0.05f || base.NextPace > base.LeftLength)) { if (!this.IsClearTargetPosition) { base.FixTransform.set_position(new Vector3(base.NavMeshPath.get_corners()[base.ToCorner].x, base.FixTransform.get_position().y, base.NavMeshPath.get_corners()[base.ToCorner].z)); base.ToCorner++; base.MovingDirection = Vector3.get_zero(); if (base.ToCorner < base.NavMeshPath.get_corners().Length) { base.FixTransform.LookAt(new Vector3(base.NavMeshPath.get_corners()[base.ToCorner].x, base.FixTransform.get_position().y, base.NavMeshPath.get_corners()[base.ToCorner].z)); base.LeftLength = XUtility.DistanceNoY(base.FixTransform.get_position(), base.NavMeshPath.get_corners()[base.ToCorner]); } } } else if (!this.IsClearTargetPosition && (XUtility.StartsWith(this.CurActionStatus, "run") || XUtility.StartsWith(this.CurActionStatus, "idle") || this.GetEntity().IsMoveCast) && base.ToCorner < base.NavMeshPath.get_corners().Length) { Vector3 vector = new Vector3(base.NavMeshPath.get_corners()[base.ToCorner].x - base.FixTransform.get_position().x, 0f, base.NavMeshPath.get_corners()[base.ToCorner].z - base.FixTransform.get_position().z); base.MovingDirection = vector.get_normalized(); base.FixTransform.LookAt(new Vector3(base.NavMeshPath.get_corners()[base.ToCorner].x, base.FixTransform.get_position().y, base.NavMeshPath.get_corners()[base.ToCorner].z)); } } }
// 为去除警告暂时屏蔽以下代码 //private uint stiffTotal = 0; virtual public void OnHit(int _actionID, uint _attackerID, uint woundId, List <int> harm) { if (theOwner.CurrentMotionState == MotionState.DEAD) { return; } if (theOwner.currSpellID != -1) {//专为旋风斩之类有duration的技能临时做 SkillData s = SkillData.dataMap[theOwner.currSpellID]; if (SkillAction.dataMap[s.skillAction[0]].duration > 0) { return; } } if (!theOwner.immuneShift) { theOwner.ClearSkill(true); } SkillAction action = SkillAction.dataMap[_actionID]; if (action.hitSfx != null && action.hitSfx[0] > 0) { theOwner.PlayFx((int)action.hitSfx[0]); } HitBuff(action); List <int> hitAction = action.hitAction; if (hitAction == null || hitAction.Count == 0 || theOwner.immuneShift) { return; } int _act = Utils.Choice <int>(hitAction); bool cfgShow = true; if (((theOwner is EntityMonster) && (theOwner as EntityMonster).ShowHitAct != 0) || ((theOwner is EntityDummy) && (theOwner as EntityDummy).ShowHitAct != 0) || ((theOwner is EntityMercenary) && (theOwner as EntityMercenary).ShowHitAct != 0)) { cfgShow = false; } string actName = theOwner.CurrActStateName(); if ((theOwner is EntityMyself) && (MapData.dataMap.Get(MogoWorld.thePlayer.sceneId).type == MapType.ARENA)) {//如果主角在竞技场内受到HIT,无视之,不进受击状态 List <int> hitAction2 = SkillAction.dataMap[_actionID].hitAction; if (hitAction2 == null || hitAction.Count == 0) { return; } int action2 = Utils.Choice <int>(hitAction2); if (action2 == ActionConstants.HIT) { return; } } if (MogoWorld.showHitAction && _act > 0 && theOwner.curHp > 0 && !actName.EndsWith("getup") && !actName.EndsWith("knockout") && !actName.EndsWith(PlayerActionNames.names[ActionConstants.HIT_GROUND]) && //!theOwner.IsInTransition() && cfgShow) {//如果没填就不做受击表现 theOwner.ChangeMotionState(MotionState.HIT, _actionID, _attackerID); } if (MogoWorld.showHitEM && !(theOwner is EntityMonster) && action.hitExtraSpeed != 0) { theOwner.motor.SetExrtaSpeed(-action.hitExtraSpeed); theOwner.motor.SetMoveDirection(theOwner.Transform.forward); TimerHeap.AddTimer <EntityParent>((uint)(action.hitExtraSl * 1000), 0, (e) => { if (e == null || e.motor == null) { return; } e.motor.SetExrtaSpeed(0); }, theOwner); } }
private void TimeOutPick() { MogoWorld.thePlayer.RpcCall("PickDropReq", ID); TimerHeap.AddTimer <string, uint>(30, 0, EventDispatcher.TriggerEvent, Events.FrameWorkEvent.AOIDelEvtity, ID); }
public void ResetConnon(GameObject go) { barrel.Rest(); timerID = TimerHeap.AddTimer((uint)defaultFireRestTime, 0, SetNextFire, go); }
public override void CreateModel() { if (belongAvatar != MogoWorld.thePlayer.ID)//不是自己的东西不显示,目前Entity会被创建,统一在退出副本时销毁掉落实体 { LoggerHelper.Debug("belongAvatar: " + belongAvatar + " " + MogoWorld.thePlayer.ID); return; } string modelName = null; if (gold != 0)//金币数量不为零,则这是金币 { modelName = m_goldModelName; } else {//否则为装备 int look = -1; int quality = -1; if (ItemEquipmentData.dataMap.ContainsKey(itemId)) { look = ItemEquipmentData.dataMap[itemId].look; quality = ItemEquipmentData.dataMap[itemId].quality; } else if (ItemJewelData.dataMap.ContainsKey(itemId)) { look = ItemJewelData.dataMap[itemId].look; quality = ItemJewelData.dataMap[itemId].quality; } else if (ItemMaterialData.dataMap.ContainsKey(itemId)) { look = ItemMaterialData.dataMap[itemId].look; quality = ItemMaterialData.dataMap[itemId].quality; } if (look != -1) { //var model = DropModelData.dataMap.FirstOrDefault(t => t.Value.type == equipment.type && t.Value.subtype == equipment.subtype); var model = DropModelData.dataMap.Get(look); if (model != null) { modelName = model.prefab; } var fx = DropFXData.dataMap.FirstOrDefault(t => t.Value.quality == quality); if (fx.Value != null) { m_glowFxId = fx.Value.fx; } } } LoggerHelper.Debug("EntityDrop create:" + ID); Action <UnityEngine.Object> action = (gameObject) => { GameObject = gameObject as GameObject; Transform = GameObject.transform; Transform.position = position; //Transform.eulerAngles = rotation; Transform.localScale = scale; Transform.tag = "Item"; UpdatePosition(); sfxHandler = GameObject.AddComponent <SfxHandler>(); BoxCollider collider = GameObject.AddComponent <BoxCollider>(); collider.isTrigger = true; collider.size = new Vector3(2, 2, 4); var ap = GameObject.AddComponent <ActorDrop>(); ap.theEntity = this; Actor = ap; if (m_glowFxId > 0) { sfxHandler.HandleFx(m_glowFxId); } //ap.TweenTo(position, tweenTarget, 0.5f); Transform.position = new Vector3(tweenTarget.x, tweenTarget.y, tweenTarget.z); Vector3 tempVec = Transform.position; Mogo.Util.MogoUtils.GetPointInTerrain(tempVec.x, tempVec.z, out tempVec); Transform.position = new Vector3(tempVec.x, tempVec.y + 0.5f, tempVec.z); // transform.position = tweenEnd + new Vector3(0, 0.5f, 0); ap.ThrowTo(Transform.position.y + 3f, 0.25f); tId = TimerHeap.AddTimer(1500, 0, DragToPlayer); }; if (String.IsNullOrEmpty(modelName)) { noModel = true; var go = new GameObject(); action(go); } else { SubAssetCacheMgr.GetCharacterInstance(modelName, (prefab, guid, gameObject) => { action(gameObject); } ); } }
// 发出攻击 public void OnAttacking(int hitActionID, Matrix4x4 ltwm, Quaternion rotation, Vector3 forward, Vector3 position) { //能进本方法,说明已经能过前面的ID存在校验 SkillAction action = SkillAction.dataMap[hitActionID]; // 如果需要,关闭碰撞 if (action.removeCollider == 1) { // 调用自己去除碰撞 Physics.IgnoreLayerCollision(8, 11); TimerHeap.AddTimer(500, 0, () => { Physics.IgnoreLayerCollision(8, 11, false); }); } if (action.freeze == 1) {//冻结周围, hitAction后解冻 FreezeButMyself(); } if (action.replication == 1) {//分身 theOwner.CreateDuplication(); } // 播动作 int act = action.action; if (act > 0) { if (PlayerActionNames.names.ContainsKey(act)) { theOwner.skillActName = PlayerActionNames.names[act]; } else { theOwner.skillActName = ""; } if (theOwner is EntityMercenary && theOwner.blackBoard.skillReversal == 0 && !theOwner.NotTurn()) {//雇佣兵每action都会面朝敌人 EntityParent enemy = theOwner.GetTargetEntity(); if (enemy != null && enemy.Transform != null && theOwner.Transform != null) { //theOwner.motor.SetTargetToLookAt(enemy.Transform); theOwner.Transform.LookAt(new Vector3(enemy.Transform.position.x, theOwner.Transform.position.y, enemy.Transform.position.z)); } } theOwner.SetAction(act); } AttackingFx(action); AttackingMove(action); AttackBuff(action); List <object> args = new List <object>(); args.Add(ltwm); args.Add(rotation); args.Add(forward); args.Add(position); theOwner.delayAttackTimerID = TimerHeap.AddTimer((uint)(action.actionBeginDuration / theOwner.aiRate), 0, DelayAttack, hitActionID, args); if (theOwner is EntityDummy && action.spawnPoint > 0 && MogoWorld.IsClientMission) { MogoWorld.thePlayer.RpcCall("CliEntitySkillReq", (uint)1, (uint)action.spawnPoint); } //theOwner.breakAble = false; }
private void OnClickBtnFinish(GameObject sender) { TimerHeap.DelTimer(this.timer); this.Clean(); this.Show(false); }
void OnDestroy() { RemoveListeners(); TimerHeap.DelTimer(timer); TimerHeap.DelTimer(teleportTimer); }
private void ReadCallBack(IAsyncResult asyncResult) { this.myRequestState = (Downloader.RequestState)asyncResult.get_AsyncState(); Stream streamResponse = this.myRequestState.streamResponse; int num = streamResponse.EndRead(asyncResult); this.myRequestState.read = num; try { if (num > 0) { this.Result = this.fs.BeginWrite(this.myRequestState.BufferRead, 0, num, new AsyncCallback(this.WriteCallBack), this.myRequestState); return; } } catch (Exception ex) { TimerHeap.DelTimer(this.timeOutTimer); if (this.Handle != null) { this.Handle.Unregister(this.Result.get_AsyncWaitHandle()); this.Handle = null; } if (this.ManualHandle) { return; } Debug.LogError("ReadCallBack Exception raised!"); Debug.LogError(ex.ToString()); if (this.ManualHandle) { return; } Loom.Current.QueueOnMainThread(delegate { this.ExceptionHandle(); }); return; } string md5FilePath = Downloader.GetMd5FilePath(this.fileFullName); FileHelper.DeleteIfExist(md5FilePath); TimerHeap.DelTimer(this.timeOutTimer); long length = this.fs.get_Length(); this.fs.Dispose(); if (this.Handle != null) { this.Handle.Unregister(this.Result.get_AsyncWaitHandle()); } this.myRequestState.response.Close(); Debug.LogFormat("localFileLen: {0} localFileSize: {1} downloadFileSize: {2}", new object[] { length, this.localFileSize, this.downloadFileSize }); if ((long)this.localFileSize == this.downloadFileSize && length == this.downloadFileSize) { if (++this.downloadFileIndex < this.urls.get_Count()) { Loom.Current.QueueOnMainThread(delegate { this.SetDetails(); }); this.fs.Close(); this.retryTime = 0; Loom.Current.QueueOnMainThread(delegate { this.Download(this.urls.get_Item(this.downloadFileIndex), this.localPaths.get_Item(this.downloadFileIndex)); }); } else { this.fs.Close(); this.allIsFinish = true; Loom.Current.QueueOnMainThread(delegate { this.DoFinished(); }); } } else { this.fs.Dispose(); File.Delete(this.LocalPath); this.retryTime = 0; Loom.Current.QueueOnMainThread(delegate { this.Download(this.urls.get_Item(this.downloadFileIndex), this.localPaths.get_Item(this.downloadFileIndex)); }); } }
public void ReleaseCharacter() { try { foreach (var item in m_avatarList) { item.Value.ResetFade(); item.Value.RemoveOld(); AssetCacheMgr.ReleaseInstance(item.Value.gameObject); item.Value.Release(); //item.Value.gameObject.GetComponentsInChildren<SkinnedMeshRenderer>(true)[0].sharedMaterial.shader = // PlayerShader; } m_avatarList.Clear(); AssetCacheMgr.ReleaseResourceImmediate("fx_jqqd.prefab"); #region 特效 和 特效删除函数定时器 foreach (var item in m_fxTimes) { TimerHeap.DelTimer(item.Value); } foreach (var item in m_sfxHandlers) { item.Value.RemoveAllFX(); } m_sfxHandlers.Clear(); m_fxTimes.Clear(); #endregion #region 动作 foreach (var item in CharacterInfoData.dataMap) { //if (item.Value.runtimeAnimatorController != null) //{ if (!String.IsNullOrEmpty(item.Value.controller)) { AssetCacheMgr.ReleaseResourceImmediate(item.Value.controller); } //} } m_Animators.Clear(); #endregion //卸载模型资源 foreach (var item in AvatarModelData.dataMap) { if (!String.IsNullOrEmpty(item.Value.prefabName) && item.Value.prefabName.EndsWith(".prefab")) { AssetCacheMgr.ReleaseResourceImmediate(item.Value.prefabName); } } MogoFXManager.Instance.RemoveAllShadow(); } catch (Exception ex) { LoggerHelper.Except(ex); } }
// 对象从场景中删除, 在这里释放资源 override public void OnLeaveWorld() { Debug.Log("Monster RemoveShadow"); MogoFXManager.Instance.RemoveShadow(ID); BillboardLogicManager.Instance.RemoveBillboard(ID); #region Shader TimerHeap.DelTimer(fadeTimer); #endregion #region 大血条 if (m_monsterData != null && m_monsterData.hpShow != null && m_monsterData.hpShow.Count >= 2) { MainUIViewManager.Instance.ShowBossTarget(false); } #endregion TimerHeap.DelTimer(attachBuildingTime); //RemoveUniqEventListener<GameObject, Vector3>(MogoMotor.ON_MOVE_TO, OnMoveTo); EventDispatcher.RemoveEventListener <GameObject, Vector3>(MogoMotor.ON_MOVE_TO, OnMoveTo); EventDispatcher.RemoveEventListener(Events.OtherEvent.CallTeammate, OnHelp); skillManager.Clean(); battleManger.Clean(); if (Actor) { Actor.ActChangeHandle = null; } if (MonsterData.clientTrapId == 0) { base.OnLeaveWorld(); } else { EventDispatcher.RemoveEventListener <GameObject, Vector3>(MogoMotor.ON_MOVE_TO, OnMoveTo); RemoveListener(); ClearBinding(); if (GameObject) { var iid = GameObject.GetInstanceID(); if (MogoWorld.GameObjects.ContainsKey(iid)) { MogoWorld.GameObjects.Remove(iid); } } GameObject = null; Transform = null; weaponAnimator = null; animator = null; motor = null; sfxHandler = null; audioSource = null; } }
public static void Invoke(Action action) { TimerHeap.AddTimer(0, 0, action); }
public override void ClearData() { TimerHeap.DelTimer(this.hideArrowTimer); base.ClearData(); }