Ejemplo n.º 1
0
    public static RECTAPI calClientToScreen()
    {
        RECTAPI ClientRectHwnd = new RECTAPI();

        //下面代码限制鼠标在窗口
        //RECTAPI rectHwnd = new RECTAPI();
        //bool resultWindowRect = GameLogicAPI.GetWindowRect(m_WindowHwnd, ref rectHwnd);

        //下面代码限制鼠标在窗口客户区
        bool resultGetClientRect = GameLogicAPI.GetClientRect(Initialize.m_WindowHwnd, out ClientRectHwnd);

        //编辑器下要减去顶部工具栏高度
#if !UNITY_STANDALONE_WIN
        ClientRectHwnd.top += 24;
#endif
        POINTAPI pointCTS = new POINTAPI();
        pointCTS.x = ClientRectHwnd.left; pointCTS.y = ClientRectHwnd.top;
        bool resultCTS = GameLogicAPI.ClientToScreen(Initialize.m_WindowHwnd, ref pointCTS);
        ClientRectHwnd.left = pointCTS.x; ClientRectHwnd.top = pointCTS.y;

        pointCTS.x           = ClientRectHwnd.right - 1; pointCTS.y = ClientRectHwnd.bottom - 1;
        resultCTS            = GameLogicAPI.ClientToScreen(Initialize.m_WindowHwnd, ref pointCTS);
        ClientRectHwnd.right = pointCTS.x; ClientRectHwnd.bottom = pointCTS.y;

        return(ClientRectHwnd);
    }
Ejemplo n.º 2
0
 /// <summary>
 /// 格式化MapID,从配置里读取数据时,对传进来的主城地图ID都转换成1
 /// </summary>
 /// <param name="nMapID"></param>
 public static void formatMapID(ref int nMapID)
 {
     if (GameLogicAPI.isMainMap(nMapID))
     {
         nMapID = 1;
     }
 }
Ejemplo n.º 3
0
    private void applyAccelerate(bool acc)
    {
        if (!m_pFSM.isHero)
        {
            return;
        }

        cmd_creature_set_wing_state data;

        data.nEncounterFlag = 0;
        if (acc)
        {
            data.nType = WING_STATE_TYPE.WING_STATE_ACCELERATION;
        }
        else
        {
            data.nType = WING_STATE_TYPE.WING_STATE_NORMAL_FLIGHT;
        }


        IntPtrHelper helper  = new IntPtrHelper();
        int          len     = Marshal.SizeOf(data);
        IntPtr       ptr     = helper.toPtr <cmd_creature_set_wing_state>(ref data);
        int          eventID = (int)EntityLogicDef.ENTITY_CMD_SET_WING_STATE;

        GameLogicAPI.onEntityEvent(m_pFSM.entityID, eventID, len, "", ptr, len);
    }
Ejemplo n.º 4
0
        /// <summary>
        /// 向逻辑层发送智能施法状态数据
        /// </summary>
        private void SendSmartDataToLogic()
        {
            cmd_entity_set_smart_cast tempSmartData = new cmd_entity_set_smart_cast();
            int smartDataSize = Marshal.SizeOf(tempSmartData);
            cmd_entity_set_smart_cast_head tempSmartDataHead = new cmd_entity_set_smart_cast_head();
            int smartDateHeadSize = Marshal.SizeOf(tempSmartDataHead);

            tempSmartDataHead.nCount = slotSmartDatas.Count;
            int    len      = slotSmartDatas.Count * smartDataSize + smartDateHeadSize;
            IntPtr ptrBytes = Marshal.AllocHGlobal(len);
            Int64  pBytes   = ptrBytes.ToInt64();
            IntPtr ptr      = new IntPtr(pBytes);

            if (ptr == null || ptr == IntPtr.Zero)
            {
                return;
            }
            Marshal.StructureToPtr(tempSmartDataHead, ptr, false);
            pBytes += smartDateHeadSize;
            foreach (DictionaryEntry keypair in slotSmartDatas)
            {
                int id = (int)keypair.Key;
                cmd_entity_set_smart_cast data = (cmd_entity_set_smart_cast)keypair.Value;
                IntPtr ptrInfo = new IntPtr(pBytes);
                Marshal.StructureToPtr(data, ptrInfo, false);
                pBytes += smartDataSize;
            }
            GameLogicAPI.onEntityEvent(EntityFactory.MainHeroID, (int)EntityLogicDef.ENTITY_CMD_SET_SMART_CAST, len, "", ptrBytes, len);
            Marshal.FreeHGlobal(ptrBytes);
        }
Ejemplo n.º 5
0
    /// <summary>
    /// 检测功能按键是否有按下
    /// </summary>
    /// <param name="keyCtrlIndex">功能按键槽位序号</param>
    /// <returns></returns>
    public static bool CheckFunctionShortcutKeyDown(FuntionShortCutSlotIndex keyCtrlIndex)
    {
        if (!FuntionShortCutCtrl.GetInstance().dicCombinationShortcutKey.ContainsKey((int)keyCtrlIndex))
        {
            return(false);
        }

        //获取此槽位权限Flag, 如果为0代表全局开启,不限制
        //不为0则与场景保姆中的快捷键方案标识做&运算,判断当前是否有权限使用该槽位
        //如果无权限使用,则直接return掉
        int flag = SlotKeyCodeConfig.Instance.GetSlotFlag((int)SlotType.Function, (int)keyCtrlIndex);

        if (flag != 0 && (flag & GameLogicAPI.getHotkeyIndex()) == 0)
        {
            return(false);
        }

        if (FuntionShortCutCtrl.GetInstance().dicCombinationShortcutKey[(int)keyCtrlIndex].ModifierKeyCodeList.Count <= 0)//((int)keyCtrlIndex < (int)FuntionShortCutSlotIndex.Com_UpgradeSpellSlot0)
        {
            return(FuntionShortCutCtrl.GetInstance().CheckKeyCodeKeyStatus(keyCtrlIndex, KeyStatus.Down));
        }
        else
        {
            return(FuntionShortCutCtrl.GetInstance().CheckCombinationKeyStatus(keyCtrlIndex, KeyStatus.Down));
        }
    }
Ejemplo n.º 6
0
    private void GetDefaultRotateInfo(int _nCamp, out int _nAngle, out int _nXOffset, out int _nYOffset)
    {
        // 获取小地图信息
        SMinimapInfo sInfo = new SMinimapInfo();

        if (GameLogicAPI.getMinimapInfo(this.mMapID, ref sInfo) == false)
        {
            _nAngle = _nXOffset = _nYOffset = 0;
            return;
        }

        string[] strRotation = ((string)(sInfo.szDefaultRotation)).Split(';');
        for (int idx = 0; idx + 1 < strRotation.Length; idx = idx + 4)
        {
            int nCamp = Convert.ToInt32(strRotation[idx]);
            if (_nCamp == nCamp)
            {
                _nAngle   = Convert.ToInt32(strRotation[idx + 1]);
                _nXOffset = Convert.ToInt32(strRotation[idx + 2]);
                _nYOffset = Convert.ToInt32(strRotation[idx + 3]);
                return;
            }
        }
        _nAngle = _nXOffset = _nYOffset = 0;
        return;
    }
Ejemplo n.º 7
0
    void OnCameraModeChange(CameraMode mode)
    {
        if (BaseStageManager.Instance.CurSubState == EStage_SubState.ESSS_WAREND)
        {
            return;
        }

        isOcclusFadingEnabled_GodEye = false;
        if (!hostResManager.IsActive)
        {
            UpdateOcclusFading();
            return;
        }
        if (GameLogicAPI.isInWarScene() > 0 && AlwaysVisible && !isTerrain)
        {
            if (ObjectHeight > HightObj)
            {
                if (mode == CameraMode.TopControl || mode == CameraMode.MapGodControl || mode == CameraMode.DeadControl)
                {
                    isOcclusFadingEnabled_GodEye = true;
                }
            }
        }

        UpdateOcclusFading();
    }
Ejemplo n.º 8
0
        public void setHeroInfo(cmd_entity_hero_info cmdInfo, int nMaxExp)
        {
            nHeroID = cmdInfo.nHeroID;
            // 此处由于可能找不到对应的头像,策划特别提出随便加一个先
            heroIcon.sprite = USpriteManager.Instance.GetSprite(USpriteManager.ESpriteType.EST_HeadPortrait, WndID.WND_ID_PLAYERFRAME, 1, 6, cmdInfo.nHeroID);
            if (heroIcon.sprite == null)
            {
                heroIcon.sprite = USpriteManager.Instance.GetSprite(USpriteManager.ESpriteType.EST_HeadPortrait, WndID.WND_ID_PLAYERFRAME, 1, 6, 10);
            }

            heroName.text              = cmdInfo.chHeroName;
            heroStarLv.text            = cmdInfo.byStarLv.ToString();
            heroWinPro.text            = cmdInfo.usWinPro.ToString() + "%";
            matchCount.text            = cmdInfo.nGameCount.ToString();
            heroUseTimeSlider.maxValue = nMaxExp;
            heroUseTimeSlider.value    = cmdInfo.nGameCount;

            int nStarLvLimit = GameLogicAPI.getHeroStarLvLimit(nHeroID);
            int nHeroStar    = cmdInfo.byStarLv;

            nHeroStar = nHeroStar > nStarLvLimit ? nStarLvLimit : nHeroStar;
            heroStarItem.SetData(nHeroID, nHeroStar, false, false);

            setVisible(true);
        }
Ejemplo n.º 9
0
        bool isMatchWnd(IUIWnd wnd)
        {
            int       loadMask;
            EGameMode gameMode = GameLogicAPI.getCurGameMode();

            switch (gameMode)
            {
            case EGameMode.EGM_Moba:
                loadMask = (int)WndLoadMaskDef.WND_LoadMask_Moba;
                break;

            case EGameMode.EGM_MCAMP:
                loadMask = (int)WndLoadMaskDef.WND_LoadMask_MCAMP;
                break;

            case EGameMode.EGM_RPG:
            default:
                loadMask = (int)WndLoadMaskDef.WND_LoadMask_RPG;
                break;
            }

            int permissionMask = (int)WndPermissionMaskDef.WND_PM_Normal;

            if (StageManager.Instance.CurPermissionState == EStage_PermissionState.ESPS_OB)
            {
                permissionMask = (int)WndPermissionMaskDef.WND_PM_OB;
            }

            return((wnd.GetLoadMask() & loadMask) != 0 && (wnd.GetPermissionMask() & permissionMask) != 0);
        }
Ejemplo n.º 10
0
    public bool JudgeIsMouseLock()
    {
        bool bMouseLock = false;

        switch (m_eMouseLockState)
        {
        case EMouseLockModelType.EMLMT_OFF:
        {
            bMouseLock = false;
        }
        break;

        case EMouseLockModelType.EMLMT_INALL:
        {
            bMouseLock = true;
        }
        break;

        case EMouseLockModelType.EMLMT_INWAR:
        {
            bMouseLock = GameLogicAPI.isInWarScene() > 0;
        }
        break;

        default:
            break;
        }

        //UnityEngine.Debug.Log( "bMouseLock" + bMouseLock);
        return(bMouseLock);
    }
Ejemplo n.º 11
0
    /// <summary>
    /// 截取耗时并打印
    /// </summary>
    /// <param name="_strDebugInfo">额外信息打印</param>
    /// <param name="_nCostThreshold">耗时阀值</param>
    /// <param name="_bStart">重置耗时</param>
    public static void PrintTickCheck(string _strDebugInfo, uint _nCostThreshold = CostThreshold_Lv1, bool _bStart = false)
    {
#if TickCheck
        if (!UnityEngine.Debug.isDebugBuild)
        {
            return;
        }

        uint newCount = 0;
        if (_bStart)
        {
            Instance.m_nTickCheckCount = GameLogicAPI.getTickCount();
            newCount = Instance.m_nTickCheckCount;
        }
        else
        {
            newCount = GameLogicAPI.getTickCount();
        }

        uint deltaCount = newCount - Instance.m_nTickCheckCount;

        Instance.m_nTickCheckCount = newCount;

        if (deltaCount >= _nCostThreshold)
        {
            Trace.LogWarning("截取计时, " + _strDebugInfo + " ,阀值: " + _nCostThreshold + ",耗时:" + deltaCount);
        }
#endif
    }
Ejemplo n.º 12
0
    public void StopAutoMove(bool userStop = true)
    {
        if (!isAutoMoving)
        {
            return;
        }


        isAutoMoving = false;

        if (m_autoMoveNavModeFollow)
        {
            SoldierCamera.MainInstance <SoldierCamera>().exitNavMode(CameraNavMode.Follow);
            m_autoMoveNavModeFollow = false;
        }

        if (m_pFSM.showLog)
        {
            Trace.Log("StopAutoMove");
        }

        if (userStop)
        {
            cmd_creature_operation_type type = new cmd_creature_operation_type();
            type.nType = 0;
            IntPtrHelper helper = new IntPtrHelper();
            IntPtr       ptr    = helper.toPtr <cmd_creature_operation_type>(ref type);
            int          len    = Marshal.SizeOf(type);
            GameLogicAPI.onEntityEvent(m_pFSM.entityID, (int)EntityLogicDef.ENTITY_CMD_OPERATION_TYPE, len, "", ptr, len);
        }
        enableAutoMoveEffect(false);
    }
Ejemplo n.º 13
0
        public void OnTimer(int nTimerID)
        {
            switch (nTimerID)
            {
            case (int)EN_GameHud_Timer.ENGT_GameTimer:
            {
                uint nWarGameTimeMs = GameLogicAPI.getSyncTickCount() - LogicDataCenter.warInfoDataManager.WarStartTime;
                LogicDataCenter.warInfoDataManager.WarPlayTimeSec = nWarGameTimeMs / 1000;

                uint   nMin, nSec;
                string strMin, strSec;
                nMin   = LogicDataCenter.warInfoDataManager.WarPlayTimeSec / 60;
                nSec   = LogicDataCenter.warInfoDataManager.WarPlayTimeSec % 60;
                strMin = nMin.ToString("00");
                strSec = nSec.ToString("00");

                //更新游戏时间
                gameTime.text = strMin + ":" + strSec;
            }
            break;

            default:
                break;
            }
        }
Ejemplo n.º 14
0
        public void SetXPSkillInfo(int nSpellID)
        {
            if (nSpellID <= 0)
            {
                Debug.LogWarning("XPSKill," + nSpellID);
                return;
            }

            IntPtr Ptr = GameLogicAPI.getSpellData(nSpellID);

            if (Ptr == IntPtr.Zero)
            {
                Debug.LogWarning("XPSKill,Ptr == IntPtr.Zero," + nSpellID);
                return;
            }

            SPELL.SPELL_DATA spellData = IntPtrHelper.toData <SPELL.SPELL_DATA>(Ptr);
            IntPtr           strPtr    = GameLogicAPI.getSpellStrData(nSpellID, (int)SPELL_DATA_ID.SPDATA_DESC);
            String           szDesc    = IntPtrHelper.Ptr2Str(strPtr);

            Debug.Log("XPSKill," + spellData.nID + "," + szDesc + "," + nSpellID);

            UBB.toHtml(ref szDesc, UBB_FORMAT_TYPE.UGUI);

            slotTooltipTrigger.SetText(UTooltipParamName.BodyText, szDesc);
            slotTooltipTrigger.enabled = true;

            skillImage.sprite = USpriteManager.Instance.GetSprite(USpriteManager.ESpriteType.EST_Skill, WndID.WND_ID_WAR_XPSKILL, 1, spellData.nIcon);
            skillImage.gameObject.SetActive(true);

            xpSkillName = spellData.szName;
        }
Ejemplo n.º 15
0
    public void Update()
    {
        needUpdate = true;
        uint tick = GameLogicAPI.getTickCount();

        if (manager)
        {
            UpdateBehaviourOnTimerManager.UpdateBehaviourOnTimerLayer info = manager.getLayerInfo(layer);
            if (lastUpdateTick > info.roundStartTick)
            {
                //I am already updated in this round
                needUpdate = false;
            }
            else if (tick > manager.getFrameStartTick() + m_frameTickThread)
            {
                //update time for this frame is run out, wait for the next frame
                needUpdate = false;
            }
            if (m_indexOnLayer == info.componentCount - 1)
            {
                //the component[info.componentCount] is always valid. When it is destroyed, info.componentCount--
                manager.setRoundStartTick(layer);
            }
        }
        if (needUpdate)
        {
            OnUpdate();
            lastUpdateTick = tick;
        }
    }
Ejemplo n.º 16
0
    public override bool LateUpdate()
    {
        if (!Valid)
        {
            return(false);
        }
        uint tick = GameLogicAPI.getTickCount();

        if (needClose == true || (areaConfig.effectTotalTick > 0) && (tick > mEndTick))
        {
            return(false);
        }

        if (tick < mStartTick)
        {
            return(true);
        }

        if (tick >= mNextCreateTick)
        {
            mNextCreateTick = tick + (uint)areaConfig.effectIntervalTick;
            createEffect();
            mEffectLeftCount--;
        }

        if (mEffectLeftCount == 0)
        {
            needClose = true;
            return(false);
        }

        return(true);
    }
Ejemplo n.º 17
0
    private static void SoundDeleteHandle(SoundDeleteEventArgs e)
    {
        if (null == e)
        {
            return;
        }

        switch (e.soundType)
        {
        case SoundSystem.EMSoundType.Environment:
        {
            if (GameLogicAPI.isInWarScene() > 0)
            {
                CutToNextSceneSound();
            }
        }
        break;

        case SoundSystem.EMSoundType.Skill:
        {
            if (e.entityID > 0)
            {
                DeleteRandomSound(e.soundID, e.entityID);
            }
        }
        break;

        default:
            break;
        }
    }
Ejemplo n.º 18
0
    public override bool Begin()
    {
        if (!cameraConfig || null == EffectParam)
        {
            return(false);
        }
        base.Begin();
        uint tick = GameLogicAPI.getTickCount();

        mStartTick = tick;
        mEndTick   = mStartTick + (uint)cameraConfig.effectLiveTick + (uint)cameraConfig.delayTick;
        if (cameraConfig.effectRad > 0.01f && EntityFactory.MainHero)
        {
            Vector3 deta = EffectParam.targetPos - EntityFactory.MainHero.transform.position;
            if (deta.magnitude > cameraConfig.effectRad)
            {
                //创建失败,要进行回收,要不然缓存无法更新
                LightingEffectBehavior temp = this;
                LightingEffectFactory.Instance.CacheEffectBehavior(ref temp);
                return(false);
            }
        }

        bStartEffect = true;
        return(true);
    }
Ejemplo n.º 19
0
    private static void OnSceneLoadFinish(string sceneName)
    {
        isHaveData = false;
        //如果是非吃鸡场景,卸载.
        if (GameLogicAPI.getCurGameMode() != Game_ManagedDef.EGameMode.EGM_MCAMP)
        {
            AssetBundleManager.DeleteAssets(ref SafeZoneEffectRes, true);
            SafeZoneEffectInstance = null;
            return;
        }
        if (null == SafeZoneEffectRes)
        {
            SafeZoneEffectRes = AssetBundleManager.GetAssets(AssetType.Asset_Prefab, SafeZoneEffectGUID, true);
            if (!ResNode.isNullOrEmpty(SafeZoneEffectRes))
            {
                SafeZoneEffectInstance = SafeZoneEffectRes.InstanceMainRes <Effect.EffectNode>();
                if (SafeZoneEffectInstance)
                {
                    SafeZoneEffectInstance.Init();
                    SafeZoneEffectInstance.StopEffect();
                    SafeZoneTransform = SafeZoneEffectInstance.transform;
                    SafeZoneTransform.SetParent(EntityFactory.EffectGroup.transform);

                    GenerateZoneMaterial(SafeZoneEffectInstance);
                }
            }
        }

        if (SafeZoneEffectInstance)
        {
            SafeZoneEffectInstance.StopEffect();
        }
    }
Ejemplo n.º 20
0
        private void SetAllGoodsTileDataSource(ObservableList <UWarGoodsStoreItem> _datSource)
        {
            AllGoodsTile.SelectedIndex = -1;

            AllGoodsTile.OnDeselect.RemoveListener(OnAllGoodsOnDeselect);
            AllGoodsTile.OnSelect.RemoveListener(OnMobaGoodsSelected);
            AllGoodsTile.onDoubleClick.RemoveListener(OnMobaGoodsBuy);
            AllGoodsTile.onRightClick.RemoveListener(OnMobaGoodsBuy);


            int nHeroId = EntityFactory.MainHeroView.Property.GetNumProp(ENTITY_PROPERTY.PROPERTY_VOCATION);
            PersonSkinModelItem ModelItem = new PersonSkinModelItem();

            GameLogicAPI.GetPersonModel((UInt16)nHeroId, ref ModelItem);

            //移除英雄限制的装备
            var list = _datSource.Select(d => d).Where(s => (s.SchemeGoodsInfo.GoodsVocationLimit != 0 && s.SchemeGoodsInfo.GoodsVocationLimit == ModelItem.nTraits)).ToList();

            foreach (var i in list)
            {
                _datSource.Remove(i);
            }


            AllGoodsTile.DataSource = _datSource;

            AllGoodsTile.OnDeselect.AddListener(OnAllGoodsOnDeselect);
            AllGoodsTile.OnSelect.AddListener(OnMobaGoodsSelected);
            AllGoodsTile.onDoubleClick.AddListener(OnMobaGoodsBuy);
            AllGoodsTile.onRightClick.AddListener(OnMobaGoodsBuy);
        }
Ejemplo n.º 21
0
        public void ToggleHideWindow()
        {
            if (contentCanvasGroup.gameObject.activeSelf)
            {
                contentCanvasGroup.gameObject.SetActive(false);
                borderCanvasGroup.gameObject.SetActive(false);
                resizerImage.gameObject.SetActive(false);
                channelCanvasGroup.gameObject.SetActive(false);
                minimunCanvasGroup.alpha = 1f;

                m_isMin = true;
            }
            else
            {
                contentCanvasGroup.gameObject.SetActive(true);
                borderCanvasGroup.gameObject.SetActive(true);
                resizerImage.gameObject.SetActive(true);

                // 战场内不显示频道选择按钮组
                if (GameLogicAPI.isInWarScene() > 0)
                {
                    channelCanvasGroup.gameObject.SetActive(false);
                }
                else
                {
                    channelCanvasGroup.gameObject.SetActive(true);
                }

                m_isMin = false;
            }
        }
Ejemplo n.º 22
0
    // 小地图点击响应
    public bool OnMinimapClick(float xPos, float yPos, float zPos)
    {
        //if (InputManager.GetKey(KeyCode.LeftAlt) && m_teamCommandStart == false)
        //{
        //    m_teamCommandStart = true;
        //    m_teamCommandShow = false;
        //    m_commandStartScreenPos = getMousePosition();
        //    m_commandStartWorldPos.x = xPos;
        //    m_commandStartWorldPos.z = zPos;
        //    m_commandTryAttackFlag = true;
        //    return true;
        //}
        //关闭fps英雄的alt点解小地图发信号功能
        if (EntityFactory.MainHeroView != null)
        {
            PersonSkinModelItem item = new PersonSkinModelItem();
            int heroID = EntityFactory.MainHeroView.Property.GetNumProp(ENTITY_PROPERTY.PROPERTY_VOCATION);
            GameLogicAPI.GetPersonModel((UInt16)heroID, ref item);
            if (m_currentAttachType == MouseAttachFuncType.AltAttackSign && item.nPlayMode == 1)
            {
                return(false);
            }
        }
        if (GetAttachType() > (int)MouseAttachFuncType.None)
        {
            DoMouseAttachFunc(xPos, yPos, zPos);
            return(true);
        }

        return(false);
    }
Ejemplo n.º 23
0
        public void SetData(UTileItemClanSelfHero item, UTileClanSelfHero parentList)
        {
            cmd_clan_request_selfhero cmdData = item.data;

            heroIcon.sprite = USpriteManager.Instance.GetSprite(USpriteManager.ESpriteType.EST_HeadPortrait, WndID.WND_ID_CLAN_SELECTREQUESTCARD, 1, 7, cmdData.nHeroID);
            heroStarItem.SetData(cmdData.nHeroID, cmdData.nHeroStar, false, false);

            float   fValue   = cmdData.nNeedCardCount != 0 ? (float)item.data.nCardCount / item.data.nNeedCardCount : 0.0f;
            Vector2 baseVec2 = cardValue.rectTransform.sizeDelta;

            if (fValue >= 1)
            {
                baseVec2.x       = cardBase.rectTransform.sizeDelta.x;
                cardValue.sprite = parentList.cardValueSprites[1];
            }
            else
            {
                baseVec2.x       = fValue * cardBase.rectTransform.sizeDelta.x;
                cardValue.sprite = parentList.cardValueSprites[0];
            }
            cardValue.rectTransform.sizeDelta = baseVec2;

            int nStarLvLimit = GameLogicAPI.getHeroStarLvLimit(cmdData.nHeroID);

            if (cmdData.nHeroStar >= nStarLvLimit)
            {
                cardText.text = cmdData.nCardCount.ToString();
                maxBg.gameObject.SetActive(true);
            }
            else
            {
                cardText.text = cmdData.nCardCount.ToString() + "/" + cmdData.nNeedCardCount.ToString();
                maxBg.gameObject.SetActive(false);
            }
        }
Ejemplo n.º 24
0
 void EnterBattle()
 {
     Game_ManagedDef.EGameMode gamemode = GameLogicAPI.getCurGameMode();
     IsMoba      = gamemode == Game_ManagedDef.EGameMode.EGM_MCAMP ? false : true;
     IsReConnect = GameLogicAPI.IsContinuePlay();
     UISystem.Instance.SendWndMessage(WndMsgID.WND_MSG_COMMON_BATTLESTATE_ENTER, null);
     if (IsReConnect | IsMoba)
     {
         UISystem.Instance.SendWndMessage(WndMsgID.WND_MSG_COMMON_BATTLESTATE_ENTER_PlayMovie, null);
     }
     else
     {
         //实体还未创建
         if (EntityFactory.MainHeroView == null)
         {
             Debug.Log("EnterBattle 实体还未创建");
             EntityFactory.CreateMainHeroEntityEvent += OnHeroEntityLoadComplete;
         }
         else
         {
             //实体已创建
             Debug.Log("EnterBattle 实体已创建");
             OnHeroEntityLoadCompleteLoacl(EntityFactory.MainHeroView);
         }
     }
 }
Ejemplo n.º 25
0
    public static void Update()
    {
        if (!isSpreadStarted)
        {
            return;
        }

        if (SpreadTimeInSecond < 0.03f)
        {
            m_currPos       = dstCenter;
            m_currRadius    = dstRadius;
            isSpreadStarted = false;
            return;
        }
        uint tick = GameLogicAPI.getSyncTickCount();

        m_currTimes += (tick - m_currTicks) * 0.001f;
        m_currTicks  = tick;
        float t = m_currTimes / SpreadTimeInSecond;;

        m_currPos    = Vector3.Lerp(srcCenter, dstCenter, t);
        m_currRadius = Mathf.Lerp(srcRadius, dstRadius, t);
        if (m_currTimes >= SpreadTimeInSecond)
        {
            m_currPos       = dstCenter;
            m_currRadius    = dstRadius;
            isSpreadStarted = false;
        }
    }
Ejemplo n.º 26
0
    //#region 指示器
    ///// <summary>
    ///// 指示器对象显示半径
    ///// </summary>
    //public float BillboardRadius = 600;
    ///// <summary>
    ///// 指示器对象在这个角度内以直线方式绘制
    ///// </summary>
    //public int BillboardAngle = 30;
    ///// <summary>
    ///// 指示器坐标缓存
    ///// </summary>
    //protected UIBillboardCache BillboardCache = new UIBillboardCache();
    ///// <summary>
    ///// 临时实体数据
    ///// </summary>
    //private List<UIBillboardQueryResult> tmpAroundEntitys = new List<UIBillboardQueryResult>();
    ///// <summary>
    ///// 范围内活动的实体
    ///// </summary>
    //protected Dictionary<Int32, EntityView> RangeActivityEntity = new Dictionary<int, EntityView>();

    ///// <summary>
    ///// 需要隐藏的实体
    ///// </summary>
    //List<int> HideHeroList = new List<int>();

    ////保存附近玩家
    //public void saveAroundPlayer()
    //{
    //    EntityView ev = EntityFactory.getMainPlayer();
    //    if (ev == null)
    //    {
    //        return;
    //    }
    //    List<Int32> TmpEntityIDList = new List<int>(RangeActivityEntity.Keys);

    //    IList<EntityView> AroundEntitiesList = MapFinderManager.Nearest(ev.StateMachine.transform.position, ev.Sight, SPELL.CampFlag.CampFlag_Enemy);
    //    if (AroundEntitiesList == null)
    //    {
    //        return;
    //    }
    //    Int32 nTmpEntityID = 0;
    //    foreach (EntityView Entity_Ev in AroundEntitiesList)
    //    {
    //        nTmpEntityID = Entity_Ev.ID;
    //        if (Entity_Ev == null || Entity_Ev.StateMachine == null || Entity_Ev.StateMachine.GetState() == EntityState.Dead || Entity_Ev.Type != ENTITY_TYPE.TYPE_PLAYER_ROLE)
    //            continue;
    //        if (!RangeActivityEntity.ContainsKey(nTmpEntityID))
    //        {
    //            RangeActivityEntity.Add(nTmpEntityID, Entity_Ev);
    //        }
    //        else
    //        {
    //            TmpEntityIDList.Remove(nTmpEntityID);
    //        }
    //    }

    //    while (TmpEntityIDList.Count > 0)
    //    {
    //        nTmpEntityID = TmpEntityIDList[0];
    //        RangeActivityEntity.Remove(nTmpEntityID);
    //        TmpEntityIDList.RemoveAt(0);
    //    }
    //}

    ////更新指示器公告板信息
    //private void UpdateBillboard(System.Collections.Generic.List<UIBillboardQueryResult> entitys)
    //{
    //    BillboardCache.BeginProcessing();
    //    SFDisplayInfo info;
    //    UIBillboardMC tmpBillboard;
    //    for (int i = 0; i < entitys.Count; i++)
    //    {
    //        //从缓冲列表里获取可用的对象
    //        if (BillboardCache.GetUnusedBillboardMovieclip(entitys[i].entityID, out tmpBillboard))
    //        {
    //            info = tmpBillboard.Billboard.GetDisplayInfo();
    //            info.Visible = true;
    //            info.X = entitys[i].x;
    //            info.Y = entitys[i].y;
    //            tmpBillboard.Billboard.SetDisplayInfo(info);

    //            EntityView targetEntityView = EntityFactory.getEntityViewByID(entitys[i].entityID);
    //            int nEntityHeroID = targetEntityView.Property.GetNumProp(ENTITY_PROPERTY.PROPERTY_VOCATION);
    //            int nTargetCamp = (int)targetEntityView.CampFlag;
    //            //public function SetHeroBearing(_nTargetHeroPortraitID:int,_nTargetCamp:int,_strTargetDistance:String)

    //            if (tmpBillboard.Billboard.Invoke("SetHeroBearing", nEntityHeroID, nTargetCamp, entitys[i].angle,entitys[i].distance+"米") == null)
    //            {
    //                Trace.LogError("call SetHeroBearing failed.");
    //            }
    //        }
    //    }
    //    BillboardCache.EndProcessing();
    //}

    //private void GetPlayerAndUpdate()
    //{
    //    //移除上次调用存储的数据
    //    tmpAroundEntitys.Clear();
    //    if (RangeActivityEntity.Count > 0 && EntityFactory.MainHeroView.StateMachine.GetState() != EntityState.Dead)
    //    {
    //        foreach (KeyValuePair<int, EntityView> keypair in RangeActivityEntity)
    //        {
    //            GetQueryTarget(keypair.Key, keypair.Value.gameObject.transform);
    //        }
    //    }
    //    UpdateBillboard(tmpAroundEntitys);
    //}

    ////计算英雄与附近的玩家目标的角度并映射到UI上
    //private void GetQueryTarget(Int32 entityID, Transform TargetEntityTrans)
    //{
    //    Transform CameraTransform = SoldierCamera.MainInstance.getCameraTransform();
    //    //计算位置应该是计算英雄的位置,而不是相机的位置
    //    float checkDis = Vector3.Distance(TargetEntityTrans.position, EntityFactory.MainHero.transform.position);

    //    if (checkDis > EntityFactory.MainHeroView.Sight || ScreenRaycast.isInScreen(TargetEntityTrans.position))
    //        return;

    //    Vector3 vecHeroPos = EntityFactory.MainHeroView.gameObject.transform.position;
    //    Vector3 DirHeroToTarget = TargetEntityTrans.position - vecHeroPos;
    //    Vector3 DirHeroToCamera = CameraTransform.position - vecHeroPos;
    //    DirHeroToTarget.y = DirHeroToCamera.y = 0;


    //    //判断目标在相机的左右方,-1左方,+1右方
    //    Vector3 vecCross = Vector3.Cross(DirHeroToTarget.normalized, DirHeroToCamera.normalized);
    //    float fLorR = Mathf.Sign(-vecCross.y);

    //    //计算之间的夹角
    //    float angle = Vector3.Angle(DirHeroToTarget.normalized, DirHeroToCamera.normalized);
    //    float relAngle = (angle * fLorR + 90) % 360;


    //    float MovieWidth = MovieDef.GetWidth();
    //    float MovieHeight = MovieDef.GetHeight();

    //    UIBillboardQueryResult qr = new UIBillboardQueryResult();
    //    qr.entityID = entityID;
    //    qr.x = (MovieWidth / 2) + BillboardRadius * (Mathf.Cos(Mathf.Deg2Rad * (relAngle)));
    //    qr.y = (MovieHeight / 2) + BillboardRadius * (Mathf.Sin(Mathf.Deg2Rad * (relAngle)));

    //    //在这个角度范围内图标水平移动
    //    if (relAngle > BillboardAngle && relAngle < BillboardAngle + 120)
    //    {
    //        qr.y = (MovieHeight / 2) + BillboardRadius * (Mathf.Sin(Mathf.Deg2Rad * BillboardAngle));
    //    }

    //    qr.distance = Convert.ToUInt32(checkDis);
    //    qr.angle = Convert.ToInt32(relAngle+90);
    //    tmpAroundEntitys.Add(qr);

    //}

    //public void ClearBillboardCache()
    //{
    //    if (BillboardCache != null)
    //    {
    //        BillboardCache.ClearCache();
    //        BillboardCache = null;
    //    }

    //    if (RangeActivityEntity == null)
    //    {
    //        RangeActivityEntity.Clear();
    //        RangeActivityEntity = null;
    //    }

    //    if (tmpAroundEntitys != null)
    //    {
    //        tmpAroundEntitys.Clear();
    //        tmpAroundEntitys = null;
    //    }

    //    if (HideHeroList != null)
    //    {
    //        HideHeroList.Clear();
    //        HideHeroList = null;
    //    }
    //}


    //public void OnTimer(int nTimerID)
    //{
    //    switch( nTimerID )
    //    {
    //        case (int)EN_GameHud_Timer.ENGT_Pointer:
    //            {

    //                saveAroundPlayer();

    //                int nCount = HideHeroList.Count;
    //                for (int i = 0; i < nCount; ++i  )
    //                {
    //                    if (RangeActivityEntity.ContainsKey(HideHeroList[i]))
    //                    {
    //                        RangeActivityEntity.Remove(HideHeroList[i]);
    //                    }
    //                }
    //            }
    //            break;
    //        default:
    //            break;
    //    }
    //}



    //public void OnEvent(U3D_Render.Utility.EVENT eventID, int sourceID, System.Object objEvent)
    //{
    //    switch( eventID )
    //    {
    //        case EVENT.ENTITY_SHOW_HERO:
    //            {
    //                if ( objEvent == null )
    //                    return;
    //                SEntityShowHero event_data = (SEntityShowHero)objEvent;
    //                int nId = event_data.ev.ID;
    //                if (event_data.bIsHide && !HideHeroList.Contains(nId))
    //                    HideHeroList.Add(nId);
    //                else if (!event_data.bIsHide && HideHeroList.Contains(nId))
    //                    HideHeroList.Remove(nId);
    //            }
    //            break;
    //        default:
    //            break;
    //    }
    //}

    //#endregion
    #region 技能提示
    public void CreatureShowPormptUI(cmd_creature_ShowPromptUI data)
    {
        if (vSpellPrompt == null)
        {
            vSpellPrompt = new Value();
            MyRoot.AttachMovie(ref vSpellPrompt, "Com.Scaleform.WarGameHud.WGH_SpellPrompt", "vSpellPrompt", 0);
            SFDisplayInfo di = vSpellPrompt.GetDisplayInfo();
            di.X = 1920 / 2 + 100;
            di.Y = 1080 - 300;
            vSpellPrompt.SetDisplayInfo(di);
        }

        IntPtr DesPtr, IconPtr; //R

        ASpeedGame.Data.GameMobaSchemes.SSchemeShowSpellPrompt SchemesSpellPrompt = ASpeedGame.Data.GameMobaSchemes.GameMobaSchemesManager.Instance.GetSpellPromptInfo(data.nPromptID);


        if (SchemesSpellPrompt != null)
        {
            DesPtr  = GameLogicAPI.getShortcutDes(SchemesSpellPrompt.nSlotID, (int)SLOT_TYPE.SLOT_TYPE_SKILL);
            IconPtr = GameLogicAPI.getSpellData(SchemesSpellPrompt.nSpellID);

            if (DesPtr != IntPtr.Zero && IconPtr != IntPtr.Zero)
            {
                string           des       = IntPtrHelper.Ptr2Str(DesPtr);
                SPELL.SPELL_DATA spellData = IntPtrHelper.toData <SPELL.SPELL_DATA>(IconPtr);

                if (vSpellPrompt == null || vSpellPrompt.Invoke("SetSpellPromptInfo", spellData.nIcon, des.ToUpper(), Convert.ToBoolean(data.nType)) == null)
                {
                    Trace.LogWarning("SetSpellPromptInfo failed.");
                }
            }
        }
    }
Ejemplo n.º 27
0
    // 进入状态
    public bool OnEnter(IntPtr lParam)
    {
        cmd_Entity_Change_Wing_State param = IntPtrHelper.toData <cmd_Entity_Change_Wing_State>(lParam);

        currWing_State = param;
        m_bWing        = false;


        tr            = m_pFSM.transform;
        lastFrameTick = GameLogicAPI.getTickCount();

        ApplyAnimation();

        floatingState   = FloatingState.Float;
        fMinFloatHeight = param.fMinFlyHeight;
        if (fMinFloatHeight < 0.01f) //2016-09-01暂时方案,param可能还没有参数传过来,所以变成0,此时先取预制体的浮空最低高度
        {
            Debug.Log(fMinFloatHeight);
            fMinFloatHeight = m_pFSM.creaturePropety.floatingMinHeight;
        }
        fUpSpeed             = param.fUpSpeed; //m_pFSM.creaturePropety.floatUpSpeed;
        m_pFSM.groundNormal  = Vector3.zero;
        m_ySpeed             = 0.0f;
        m_lastvelocity       = Vector3.zero;
        m_maxSpeed           = param.fSpeed;
        m_accSpeed           = param.fAcceleration;
        m_maxHeight          = param.fMaxFlyHeight;
        m_lastFrameDeltaTime = 0.0f;
        startHeight          = m_pFSM.transform.position.y;
        return(true);
    }
Ejemplo n.º 28
0
    private static void SetResolution(int _nNewWidth, int _nNewHeight, bool bFullScreen)
    {
        //全屏
        if (bFullScreen && isSupportFullScreen)
        {
            Screen.SetResolution(_nNewWidth, _nNewHeight, false);
            screenPosition = new Rect(0, 0, _nNewWidth, _nNewHeight);

            //设定一个新的窗口风格
            GameLogicAPI.SetWindowLong(Initialize.m_WindowHwnd, GWL_STYLE, NEW_LONG);
            GameLogicAPI.SetWindowPos(Initialize.m_WindowHwnd, HWND_NORMAL, (int)screenPosition.x, (int)screenPosition.y, (int)screenPosition.width, (int)screenPosition.height, SWP_SHOWWINDOW);

            GameLogicAPI.SetWindowLong(Initialize.m_WindowHwnd, GWL_STYLE, NEW_LONG);
            GameLogicAPI.SetWindowPos(Initialize.m_WindowHwnd, HWND_NORMAL, (int)screenPosition.x, (int)screenPosition.y, (int)screenPosition.width, (int)screenPosition.height, SWP_SHOWWINDOW);

            GameLogicAPI.SetWindowLong(Initialize.m_WindowHwnd, GWL_STYLE, NEW_LONG);
            GameLogicAPI.SetWindowPos(Initialize.m_WindowHwnd, HWND_NORMAL, (int)screenPosition.x, (int)screenPosition.y, (int)screenPosition.width, (int)screenPosition.height, SWP_SHOWWINDOW);
        }
        //非全屏
        else
        {
            Screen.SetResolution(_nNewWidth, _nNewHeight, false);
            GameLogicAPI.SetWindowPos(Initialize.m_WindowHwnd, HWND_NORMAL, 0, 0, 0, 0, 0x0001 | 0x0002);
            GameLogicAPI.SetWindowPos(Initialize.m_WindowHwnd, HWND_NORMAL, 0, 0, 0, 0, 0x0001 | 0x0002 | 0x0020);
        }

        if (USpeedUI.UISystem.Instance)
        {
            USpeedUI.UISystem.Instance.SetResolution(_nNewWidth, _nNewHeight);
        }
        SceneResInfoManager.API_OnResolutionChanged(_nNewWidth, _nNewHeight);
    }
Ejemplo n.º 29
0
 protected override void Start()
 {
     base.Start();
     lastPos             = transform.position;
     NotReleaseFromCache = SceneManager.Instance ? !GameLogicAPI.isMainMap(SceneManager.Instance.m_curMapID) : false;
     SkinManager.PushSkinControlToManager(this);
 }
Ejemplo n.º 30
0
    public void OnTalentPagePointsInfo(int nPageIndex, string szPointsData, string szTalentId, string szTalentPageName, int nAttackPoints, int nTrickPoints, int nHelpPoints)
    {
        // 请求保存当前页数据
        TalentPageInfo talentPageInfo = new TalentPageInfo();

        talentPageInfo.szTalentPageName  = szTalentPageName;
        talentPageInfo.nAttackPointAll   = nAttackPoints;
        talentPageInfo.nTrickPointAll    = nTrickPoints;
        talentPageInfo.nHelpPointAll     = nHelpPoints;
        this.dTalentPageInfo[nPageIndex] = talentPageInfo;

        cmd_TalentPage_Points_Single cmdSinglePoint = new cmd_TalentPage_Points_Single();

        cmdSinglePoint.nCurPageIndex = nPageIndex;
        string[] sTalentIdArray = ((string)(szTalentId)).Split(';');
        int      nArrayLen      = sTalentIdArray.Length - 1;

        cmdSinglePoint.nTalentId     = new int[nArrayLen];
        cmdSinglePoint.nTalentPoints = new int[nArrayLen];
        for (int i = 0; i < nArrayLen; i++)
        {
            cmdSinglePoint.nTalentId[i]     = int.Parse(sTalentIdArray[i]);
            cmdSinglePoint.nTalentPoints[i] = int.Parse(szPointsData[i].ToString());;
        }
        cmdSinglePoint.nTalentNum       = (byte)nArrayLen;
        cmdSinglePoint.szTalentPageName = szTalentPageName;
        IntPtrHelper helper = new IntPtrHelper();
        IntPtr       ptr    = helper.toPtr <cmd_TalentPage_Points_Single>(ref cmdSinglePoint);
        int          len    = Marshal.SizeOf(cmdSinglePoint);

        GameLogicAPI.onEntityEvent(EntityFactory.MainHeroID, (int)EntityLogicDef.ENTITY_CMD_SAVE_TALENT_PAGE_SINGLE, len, "", ptr, len);
    }