Esempio n. 1
0
        /// <summary>
        /// 获取当前预览的物体,更新预览界面的角色灯光
        /// </summary>
        public void UpdatePreviewLight(GameObject preview_object)
        {
            var role_ids = GameConstHelper.GetUintList("GAME_AVAILABLE_ROLE_ID");
            var type_ids = new List <uint>(role_ids.Count);

            foreach (var rid in role_ids)
            {
                type_ids.Add(ActorHelper.RoleIdToTypeId(rid));
            }

            uint actor_type_id = 0;
            var  client_model  = preview_object.GetComponentInChildren <ActorMono>(true);

            if (client_model != null && client_model.BindActor != null)
            {
                actor_type_id = client_model.BindActor.TypeIdx;
            }

            if (type_ids.Contains(actor_type_id))
            {
                PreviewLight.SelectLight(0, ActorHelper.TypeIdToRoleId(actor_type_id));
            }
            else
            {
                PreviewLight.SelectLight(0, 0);
            }
        }
Esempio n. 2
0
        public void Reset()
        {
            foreach (Dictionary <string, string> row in DBManager.Instance.QuerySqliteTable <string>(GlobalConfig.DBFile, "data_persional_default"))
            {
                uint id = 0;
                uint.TryParse(row["id"], out id);
                uint defaultValue = 0;
                uint.TryParse(row["default"], out defaultValue);
                switch (id)
                {
                case GameConst.SETTING_KEY_HOOK_USE_HP_DRUG_HP_RATIO:
                {
                    mUseHPDrugHPRatio = ((float)defaultValue) / 100f;
                    break;
                }

                case GameConst.SETTING_KEY_HOOK_USE_MP_DRUG_MP_RATIO:
                {
                    mUseMPDrugMPRatio = ((float)defaultValue) / 100f;
                    break;
                }

                case GameConst.SETTING_KEY_HOOK_RANGE_TYPE:
                {
                    mRangeType = (EHookRangeType)defaultValue;
                    break;
                }

                case GameConst.SETTING_KEY_HOOK_AUTO_BUY_DRUG:
                {
                    mAutoBuyDrug = (defaultValue > 0) ? true : false;
                    break;
                }

                case GameConst.SETTING_KEY_HOOK_AUTO_SWALLOW:
                {
                    mAutoSwallow = (defaultValue > 0) ? true : false;
                    break;
                }

                case GameConst.SETTING_KEY_HOOK_AUTO_REVIVE:
                {
                    mAutoRevive = (defaultValue > 0) ? true : false;
                    break;
                }

                case GameConst.SETTING_KEY_HOOK_AUTO_SELL_GOODS:
                {
                    mAutoSellGoods = (defaultValue > 0) ? true : false;
                    break;
                }

                case GameConst.SETTING_KEY_HOOK_AUTO_PICK_DROP_PREFIX:
                {
                    mAutoPickDrop = (defaultValue > 0) ? true : false;
                    break;
                }

                default:
                    break;
                }
            }

            mAutoBuyHPDrugGoodsId   = 0;
            mAutoBuyHPDrugMoneyType = 0;
            mAutoBuyHPDrugPrice     = 0;
            mAutoBuyMPDrugGoodsId   = 0;
            mAutoBuyMPDrugMoneyType = 0;
            mAutoBuyMPDrugPrice     = 0;

            mIsBuyingDrug   = false;
            mIsSellingGoods = false;
            mIsUsingHPDrug  = false;
            mIsUsingMPDrug  = false;

            if (mTimer != null)
            {
                mTimer.Destroy();
                mTimer = null;
            }
            mTimer = new Utils.Timer(5000, true, Mathf.Infinity, UpdateTimer);

            mUseHPDrugGoodsIds = GameConstHelper.GetUintList("GAME_HOOK_USE_HP_DRUG_GOODS_ID");
            mUseMPDrugGoodsIds = GameConstHelper.GetUintList("GAME_HOOK_USE_MP_DRUG_GOODS_ID");
            mAutoBuyHPDrugNum  = GameConstHelper.GetUint("GAME_HOOK_BUY_HP_DRUG_NUM");
            mAutoBuyMPDrugNum  = GameConstHelper.GetUint("GAME_HOOK_BUY_MP_DRUG_NUM");
        }
Esempio n. 3
0
        public void ProcessCharacterInfo(S2CPlayerSyncAttrs attrs)
        {
            // 有变化的属性
            ActorAttribute actorAttributeOffset = new ActorAttribute();

            actorAttributeOffset.Clear();

            // 同步服务端数据
            foreach (PkgAttrElm attrElm in attrs.attr_elm)
            {
                // 属性赋值
                IActorAttribute attr = null;
                if (LocalActorAttribute.Attribute.TryGetValue(attrElm.attr, out attr))
                {
                    if ((ushort)attrElm.attr != GameConst.AR_BAT_PW)
                    {
                        // 属性增加才显示
                        if (attrElm.value > attr.Value)
                        {
                            actorAttributeOffset.Add(attrElm.attr, attrElm.value - attr.Value);
                        }
                    }
                    attr.Value = attrElm.value;
                }
                else
                {
                    if ((ushort)attrElm.attr != GameConst.AR_BAT_PW)
                    {
                        actorAttributeOffset.Add(attrElm.attr, attrElm.value);
                    }
                    //包含其他字段赋值
                    LocalActorAttribute.Attribute.Add(attrElm.attr, attrElm.value);
                }

                if ((ushort)attrElm.attr == GameConst.AR_BAT_PW)//战斗力赋值
                {
                    long new_battlepower = attrElm.value;
                    long delta           = new_battlepower - mLastBattlePower;
                    if (new_battlepower != 0 && mLastBattlePower != 0)
                    {
                        //if (delta > 0)
                        if (delta != 0)
                        {
                            TryShowFightRankAnim(delta);
                        }
                    }

                    mLastBattlePower = new_battlepower;
                    LocalActorAttribute.BattlePower = new_battlepower;

                    if (delta != 0)
                    {
                        ClientEventMgr.GetInstance().FireEvent((int)ClientEvent.CE_LOCALPLAYER_BATTLE_POWER_CHANGED, null);
                    }
                }

                // 移动速度的同步需要特殊处理
                Actor actor = Game.GetInstance().GetLocalPlayer();
                if (null != actor)
                {
                    if ((ushort)attrElm.attr == GameConst.AR_SPEED || (ushort)attrElm.attr == GameConst.AR_SPEED_ADD)
                    {
                        actor.SetMoveSpeedScale(LocalActorAttribute.MoveSpeedScale * GlobalConst.AttrConvert, LocalActorAttribute.MoveSpeedAdd);
                    }
                }
            }

            if (mUpdateTipsShowLevelRange == null)
            {
                mUpdateTipsShowLevelRange = GameConstHelper.GetUintList("GAME_ATTR_UPDATE_TIPS_SHOW_LEVEL_RANGE");
            }
            if (mUpdateTipsShowReasons == null)
            {
                mUpdateTipsShowReasons = GameConstHelper.GetUintList("GAME_ATTR_UPDATE_TIPS_SHOW_REASONS");
            }
            bool meetShowReason = false;

            foreach (uint reason in mUpdateTipsShowReasons)
            {
                if (reason == attrs.reason)
                {
                    meetShowReason = true;
                }
            }
            if (meetShowReason == true && Level >= mUpdateTipsShowLevelRange[0] && Level <= mUpdateTipsShowLevelRange[1] && attrs.init != 1 && actorAttributeOffset.Count > 0)
            {
                // 属性变化界面的弹出,如果战力提升界面正在显示,则等该界面关闭后再弹出属性变化界面
                if (xc.ui.ugui.UIManager.Instance.GetExistingWindow("UIAttributeTipsWindow") != null)
                {
                    ClientEventMgr.GetInstance().FireEvent((int)ClientEvent.CE_SHOW_ATTRS_UPDATE_WINDOW, new CEventBaseArgs(actorAttributeOffset));
                }
                else
                {
                    xc.ui.ugui.UIManager.Instance.ShowWindow("UIAttributeTipsWindow", actorAttributeOffset);
                }
            }

            // 设置本地玩家的属性
            Actor local_player = Game.GetInstance().GetLocalPlayer();

            if (null != local_player)
            {
                bool need_update_hp = false;
                if (mLastHp != LocalActorAttribute.HP || mLastHpMax != LocalActorAttribute.HPMax)
                {
                    need_update_hp = true;
                    mLastHp        = LocalActorAttribute.HP;
                    mLastHpMax     = LocalActorAttribute.HPMax;
                }

                local_player.SetActorAttribute(LocalActorAttribute);

                ClientEventMgr.GetInstance().FireEvent((int)ClientEvent.CE_ACTOR_BASEINFO_UPDATE, new CEventActorArgs(local_player));

                if (need_update_hp)
                {
                    ClientEventMgr.GetInstance().FireEvent((int)ClientEvent.CE_LOCAL_PLAYER_NWAR_CHANGED, new CEventEventParamArgs("hp", LocalActorAttribute.HP));
                    local_player.CurLife  = local_player.CurLife;// 强制更新下当前血量, 发送相关的消息
                    local_player.FullLife = LocalActorAttribute.HPMax;
                }
            }
        }