Esempio n. 1
0
 protected void Stop()
 {
     TimerHeap.DelTimer(timer);
     motor.StopRotate();
 }
Esempio n. 2
0
    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();
    }
Esempio n. 3
0
    /// <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");
    }
Esempio n. 4
0
 public void SetBarrelRotate(GameObject go)
 {
     HideGameObject(go);
     TimerHeap.AddTimer((uint)fireRotateDelay, 0, barrel.SetRotate, target);
     // barrel.SetRotate(target);
 }
Esempio n. 5
0
    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;
        }
        }
    }
Esempio n. 6
0
 void OnDestroy()
 {
     TimerHeap.DelTimer(timerID);
 }
Esempio n. 7
0
 void OnDestroy()
 {
     TimerHeap.DelTimer(timer);
     RemoveListeners();
 }
Esempio n. 8
0
 public override void Release()
 {
     this.hasInit = false;
     TimerHeap.DelTimer(this.heartbeatTimer);
 }
Esempio n. 9
0
 protected override void OnDestroy()
 {
     TimerHeap.DelTimer(this.stopTimer);
     ActorVisibleManager.Instance.Remove(base.FixTransform);
     base.OnDestroy();
 }
Esempio n. 10
0
 void Tick()
 {
     TimerHeap.Tick();
     FrameTimerHeap.Tick();
 }
Esempio n. 11
0
 void Awake()
 {
     //LoadCreateCharacter();
     m_vecThisInit = transform.localPosition;
     TimerHeap.AddTimer(500, 0, ResetPos);
 }
Esempio n. 12
0
 protected override void OnDisable()
 {
     TimerHeap.DelTimer(this.mDelayScrollId);
     TimerHeap.DelTimer(this.mDelayEffectId);
     base.OnDisable();
 }
Esempio n. 13
0
 void Start()
 {
     TimerHeap.AddTimer(100, 0, SetData);
 }
Esempio n. 14
0
 private void SwitchNormal()
 {
     TimerHeap.DelTimer(this.timerId);
     this.SetFlashLight(false);
 }
Esempio n. 15
0
 public void Update()
 {
     NetTcpManager.Instance.Recv();
     TimerHeap.Tick();
 }
Esempio n. 16
0
 public override void ClearData()
 {
     TimerHeap.DelTimer(this.stopTimer);
     base.ClearData();
 }
Esempio n. 17
0
        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);
            }

                                               );
        }
Esempio n. 18
0
 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));
         }
     }
 }
Esempio n. 19
0
        // 为去除警告暂时屏蔽以下代码
        //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);
            }
        }
Esempio n. 20
0
 private void TimeOutPick()
 {
     MogoWorld.thePlayer.RpcCall("PickDropReq", ID);
     TimerHeap.AddTimer <string, uint>(30, 0, EventDispatcher.TriggerEvent, Events.FrameWorkEvent.AOIDelEvtity, ID);
 }
Esempio n. 21
0
 public void ResetConnon(GameObject go)
 {
     barrel.Rest();
     timerID = TimerHeap.AddTimer((uint)defaultFireRestTime, 0, SetNextFire, go);
 }
Esempio n. 22
0
        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);
                }
                                                      );
            }
        }
Esempio n. 23
0
    // 发出攻击
    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);
 }
Esempio n. 26
0
    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));
            });
        }
    }
Esempio n. 27
0
    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);
        }
    }
Esempio n. 28
0
        // 对象从场景中删除, 在这里释放资源
        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;
            }
        }
Esempio n. 29
0
 public static void Invoke(Action action)
 {
     TimerHeap.AddTimer(0, 0, action);
 }
Esempio n. 30
0
 public override void ClearData()
 {
     TimerHeap.DelTimer(this.hideArrowTimer);
     base.ClearData();
 }