Esempio n. 1
0
    //shield

    /** 护盾吸收伤害 */
    public void onShieldDamage(int type, int value)
    {
        SList <DIntData> list = _shieldBuffDic.get(type);

        if (list != null)
        {
            while (!list.isEmpty())
            {
                DIntData v = list.get(0);

                if (value < v.value)
                {
                    v.value -= value;

                    break;
                }
                else
                {
                    value  -= v.value;
                    v.value = 0;

                    //盾爆了就删除buff
                    removeBuffByInstanceID(v.key);
                }
            }
        }
    }
Esempio n. 2
0
    /// <summary>
    /// 移除执行目标
    /// </summary>
    public void removeRunningTask(TaskData data)
    {
        _runningTaskDic.remove(data.instanceID);

        TaskTypeConfig tConfig;

        IntObjectMap <TaskData> dic;

        //双键
        if ((tConfig = TaskTypeConfig.get(data.config.type)).needSecondKey)
        {
            if ((dic = _runningTaskTypeTwoDic.get((long)data.config.type << 32 | data.config.args[1])) != null)
            {
                dic.remove(data.instanceID);
            }

            if (tConfig.needSecondKey2)
            {
                if ((dic = _runningTaskTypeTwoDic2.get((long)data.config.type << 32 | data.config.args[2])) != null)
                {
                    dic.remove(data.instanceID);
                }
            }
        }
        //单键
        else
        {
            if ((dic = _runningTaskTypeOneDic.get(data.config.type)) != null)
            {
                dic.remove(data.instanceID);
            }
        }
    }
Esempio n. 3
0
        public BaseData createRequest(int type)
        {
            ObjectPool <BaseData> pool = _requestDic.get(type);

            if (pool == null)
            {
                return(BytesControl.getRequestByID(type));
            }

            return(pool.getOne());
        }
Esempio n. 4
0
    /** 获取物品组(id为key)(没有就创建) */
    private IntObjectMap <ItemData> getItemDicByIDAbs(int id)
    {
        IntObjectMap <ItemData> tDic = _dicByID.get(id);

        if (tDic == null)
        {
            _dicByID.put(id, tDic = new IntObjectMap <ItemData>());
        }

        return(tDic);
    }
Esempio n. 5
0
        public BaseData createData(int type)
        {
            ObjectPool <BaseData> pool = _dataDic.get(type);

            if (pool == null)
            {
                return(BytesControl.getDataByID(type));
            }

            return(pool.getOne());
        }
Esempio n. 6
0
    /// <summary>
    /// 获取一个多实例UI
    /// </summary>
    public GameUIBase getMultiUI(int id)
    {
        ObjectPool <GameUIBase> pool = _multiUIPoolDic.get(id);

        if (pool == null)
        {
            Ctrl.throwError("找不到该id的多实例ui", id);
            return(null);
        }

        return(pool.getOne());
    }
Esempio n. 7
0
    /** 是否有buff(为一些绑定逻辑使用) */
    public bool hasBuff(int id)
    {
        if (BuffConfig.get(id).plusType == BuffPlusType.AllExist)
        {
            IntObjectMap <BuffData> dic;

            return((dic = _buffDatasForAllExist.get(id)) != null && !dic.isEmpty());
        }
        else
        {
            return(_buffDatasByID.get(id) != null);
        }
    }
Esempio n. 8
0
    /** 写回 */
    public void write()
    {
        Ctrl.print("保存场景", config.id);

        if (_stream == null)
        {
            _stream = new BytesWriteStream();
        }
        else
        {
            _stream.clear();
        }

        _stream.writeLen(elements.size());

        foreach (int k in elements.getSortedKeyList())
        {
            ScenePlaceElementConfig scenePlaceElementConfig = elements.get(k).config;
            scenePlaceElementConfig.writeBytesSimple(_stream);
        }

        string path = SceneEditorWindow.getScenePlaceFilePath(config.id);

        FileUtils.writeFileForBytesWriteStream(path, _stream);
    }
Esempio n. 9
0
    private TriggerInstance doCreateInstance(int id)
    {
        TriggerConfigData config = _configDic.get(id);

        if (config == null)
        {
            warnLog("不该找不到配置", id);
            return(null);
        }

        TriggerInstance one = _instancePool.getOne();

        one.config = config;
        initInstance(one);
        return(one);
    }
Esempio n. 10
0
    /** 场景进入场景 */
    private void enterScene(SceneConfig config)
    {
        if (_currentSceneData != null)
        {
            exitScene();
        }

        SceneEditorData sData = _sceneDic.get(config.id);

        if (sData == null)
        {
            sData        = new SceneEditorData();
            sData.config = config;
            sData.read();

            _sceneDic.put(config.id, sData);
        }

        _currentSceneData = sData;

        _elementInstanceID = -1;

        SceneMapConfig mapConfig = SceneMapConfig.get(config.mapID);

        _originPos.setByIArr(mapConfig.origin);
        _sizePos.setByIArr(mapConfig.size);

        EditorSceneManager.sceneLoaded += onSceneLoaded;
        EditorSceneManager.LoadScene(ShineToolGlobal.assetSourceStr + "/" + mapConfig.source);
    }
Esempio n. 11
0
    public void setData(IntObjectMap <CDData> cds)
    {
        _cds = cds;

        if (cds != null && !cds.isEmpty())
        {
            IntObjectMap <CDData> groupMaxCDs  = _groupMaxCDs;
            IntIntMap             groupCDCount = _groupCDCount;

            CDData[] values = cds.getValues();
            CDData   data;

            for (int i = values.Length - 1; i >= 0; --i)
            {
                if ((data = values[i]) != null)
                {
                    int lastTime = data.getLastTime();

                    CDConfig config = data.config = CDConfig.get(data.id);

                    foreach (int v in config.groups)
                    {
                        groupCDCount.addValue(v, 1);

                        CDData oldMax = groupMaxCDs.get(v);

                        if (oldMax == null || oldMax.getLastTime() < lastTime)
                        {
                            groupMaxCDs.put(v, data);
                        }
                    }
                }
            }
        }
    }
Esempio n. 12
0
    private void reCountGroupCDMax()
    {
        IntObjectMap <CDData> groupMaxCDs = _groupMaxCDs;

        //FIXME:SMap
        CDData[] values = _cds.getValues();
        CDData   data;
        CDData   gData;
        int      lastTime;

        for (int i = values.Length - 1; i >= 0; --i)
        {
            if ((data = values[i]) != null)
            {
                lastTime = data.getLastTime();

                foreach (int gv in data.config.groups)
                {
                    if ((gData = groupMaxCDs.get(gv)) == null || gData.getLastTime() < lastTime)
                    {
                        groupMaxCDs.put(gv, data);
                    }
                }
            }
        }
    }
Esempio n. 13
0
    //技能CD部分

    /** 获取某个技能的技能数据(最长的一个) */
    public CDData getSkillCD(int id)
    {
        int    maxLastTime = 0;
        CDData maxCDData   = null;

        SkillConfig config = SkillConfig.get(id);
        CDData      data;

        IntObjectMap <CDData> groupMaxCDs = _groupMaxCDs;

        foreach (int v in config.underGroupCDs)
        {
            if ((data = groupMaxCDs.get(v)) != null)
            {
                int lastTime = data.getLastTime();

                if (lastTime > maxLastTime)
                {
                    maxCDData = data;
                }
            }
        }

        return(maxCDData);
    }
Esempio n. 14
0
    /** 一秒十次 */
    public void onPiece(int delay)
    {
        IntObjectMap <CDData> cds;

        if ((cds = _cds).isEmpty())
        {
            return;
        }

        IntObjectMap <CDData> groupMaxCDs  = _groupMaxCDs;
        IntIntMap             groupCDCount = _groupCDCount;
        UnitFightDataLogic    parent       = _parent;

        foreach (CDData data in _cds)
        {
            if ((data.timePass += delay) >= data.timeMax)
            {
                cds.remove(data.id);

                //移除对应组CD
                foreach (int gv in data.config.groups)
                {
                    groupCDCount.addValue(gv, -1);

                    if (groupMaxCDs.get(gv) == data)
                    {
                        groupMaxCDs.remove(gv);

                        parent.onEndGroupCD(gv);
                    }
                }
            }
        }
    }
Esempio n. 15
0
    public override void init()
    {
        base.init();

        _fightLogic      = _unit.fight;
        _commandLogic    = _unit.aiCommand;
        _fightUnitConfig = _fightLogic.getFightUnitConfig();

        if (_unit.isSelfControl())
        {
            // setAIMode(_fightUnitConfig.defaultAIMode);
            setAIMode(UnitAIModeType.Base);
            setWanderOnIdle(_fightUnitConfig.isWanderOnIdle);
        }
        else
        {
            setAIMode(UnitAIModeType.None);
        }

        setWanderOnIdle(_fightUnitConfig.isWanderOnIdle);
        _maxPursueDistanceSq = _fightUnitConfig.maxPursueRadius * _fightUnitConfig.maxPursueRadius;

        _unitSkills = _unit.getUnitData().fight.skills;

        FightUnitLevelConfig levelConfig = FightUnitLevelConfig.get(_fightUnitConfig.id, _fightLogic.getLevel());

        if (levelConfig.skills.Length > 0)
        {
            _defaultSkill = _unitSkills.get(levelConfig.skills[0].key);
        }
        else
        {
            _defaultSkill = null;
        }
    }
Esempio n. 16
0
    /// <summary>
    /// 获取聊天频道数据
    /// </summary>
    public ChatChannelData getChatChannelData(int channel, long key)
    {
        ChatChannelConfig config = ChatChannelConfig.get(channel);

        ChatChannelData re;

        if (config.isMulti)
        {
            LongObjectMap <ChatChannelData> dic = _multiChannels.get(channel);

            if (dic == null)
            {
                _multiChannels.put(channel, dic = new LongObjectMap <ChatChannelData>());
            }

            if ((re = dic.get(key)) == null)
            {
                dic.put(key, re = new ChatChannelData());
                re.initDefault();
            }
        }
        else
        {
            if ((re = _singleChannels.get(channel)) == null)
            {
                _singleChannels.put(channel, re = new ChatChannelData());
                re.initDefault();
            }
        }

        return(re);
    }
Esempio n. 17
0
    /** 添加单位 */
    public Unit addUnit(UnitData data)
    {
        //预处理
        //服务器驱动场景启用
        if (_config.instanceType != SceneInstanceType.ClientDriveSinglePlayerBattle)
        {
            //是自己的M单位
            if (data.identity is MUnitIdentityData && data.identity.playerID == GameC.player.role.playerID)
            {
                MUnitUseLogic useLogic = GameC.player.character.getMUnitUseLogic(data.getMUnitIdentity().mIndex);

                if (useLogic == null)
                {
                    Ctrl.throwError("不能找不到主单位的使用逻辑", data.getMUnitIdentity().mIndex);
                }

                //取主角的数据逻辑
                UnitFightDataLogic dataLogic = useLogic.getFightLogic();

                //先清空
                dataLogic.clear();
                //再重设数据
                dataLogic.setData(data.fight, data.avatar);

                data.fightDataLogic = dataLogic;
            }
        }


        //

        Unit unit = toAddUnit(data);

        if (unit != null)
        {
            toActiveUnit(unit);

            UnitSimpleData sData = _bindVisionUnits.get(data.instanceID);

            if (sData != null)
            {
                unit.makeSimpleUnitData(sData);
            }
        }

        return(unit);
    }
Esempio n. 18
0
    /// <summary>
    /// 是否数据一致
    /// </summary>
    protected override bool toDataEquals(BaseData data)
    {
        ActivityPartData mData = (ActivityPartData)data;

        if (mData.datas != null)
        {
            if (this.datas == null)
            {
                return(false);
            }
            if (this.datas.size() != mData.datas.size())
            {
                return(false);
            }
            IntObjectMap <ActivityData> datasR = mData.datas;
            if (!this.datas.isEmpty())
            {
                int            datasKFreeValue = this.datas.getFreeValue();
                int[]          datasKKeys      = this.datas.getKeys();
                ActivityData[] datasVValues    = this.datas.getValues();
                for (int datasKI = datasKKeys.Length - 1; datasKI >= 0; --datasKI)
                {
                    int datasK = datasKKeys[datasKI];
                    if (datasK != datasKFreeValue)
                    {
                        ActivityData datasV = datasVValues[datasKI];
                        ActivityData datasU = datasR.get(datasK);
                        if (datasU != null)
                        {
                            if (datasV == null)
                            {
                                return(false);
                            }
                            if (!datasV.dataEquals(datasU))
                            {
                                return(false);
                            }
                        }
                        else
                        {
                            if (datasV != null)
                            {
                                return(false);
                            }
                        }
                    }
                }
            }
        }
        else
        {
            if (this.datas != null)
            {
                return(false);
            }
        }

        return(true);
    }
Esempio n. 19
0
    /// <summary>
    /// 是否数据一致
    /// </summary>
    protected override bool toDataEquals(BaseData data)
    {
        PetPartData mData = (PetPartData)data;

        if (mData.petDic != null)
        {
            if (this.petDic == null)
            {
                return(false);
            }
            if (this.petDic.size() != mData.petDic.size())
            {
                return(false);
            }
            IntObjectMap <PetUseData> petDicR = mData.petDic;
            if (!this.petDic.isEmpty())
            {
                int          petDicKFreeValue = this.petDic.getFreeValue();
                int[]        petDicKKeys      = this.petDic.getKeys();
                PetUseData[] petDicVValues    = this.petDic.getValues();
                for (int petDicKI = petDicKKeys.Length - 1; petDicKI >= 0; --petDicKI)
                {
                    int petDicK = petDicKKeys[petDicKI];
                    if (petDicK != petDicKFreeValue)
                    {
                        PetUseData petDicV = petDicVValues[petDicKI];
                        PetUseData petDicU = petDicR.get(petDicK);
                        if (petDicU != null)
                        {
                            if (petDicV == null)
                            {
                                return(false);
                            }
                            if (!petDicV.dataEquals(petDicU))
                            {
                                return(false);
                            }
                        }
                        else
                        {
                            if (petDicV != null)
                            {
                                return(false);
                            }
                        }
                    }
                }
            }
        }
        else
        {
            if (this.petDic != null)
            {
                return(false);
            }
        }

        return(true);
    }
        private static LongIterator PrimitiveIdsByType(IntObjectMap <MutableLongSet> map, int type)
        {
//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final org.eclipse.collections.api.set.primitive.LongSet relationships = map.get(type);
            LongSet relationships = map.get(type);

            return(relationships == null ? ImmutableEmptyLongIterator.INSTANCE : relationships.freeze().longIterator());
        }
Esempio n. 21
0
    //方法组

    /** 添加物品到指定空位置(正序)(以及空闲格子计算) */
    private void addItemToPos(int index, ItemData data)
    {
        //先扩容再检测
        if (ShineSetting.openCheck)
        {
            if (_dic.get(index) != null)
            {
                Ctrl.throwError("不该已有物品");
            }
        }

        data.index = index;      //标记index
        _dic.put(index, data);

        getItemDicByIDAbs(data.id).put(index, data);

        _showListDirty = true;
    }
Esempio n. 22
0
    /** 添加CD组 */
    public void reAddCDs(IntObjectMap <CDData> dic, int dTime)
    {
        if (dic.isEmpty())
        {
            return;
        }

        IntObjectMap <CDData> cds = _cds;

        if (!cds.isEmpty())
        {
            Ctrl.throwError("这时cd组不应该有值");
        }

        IntObjectMap <CDData> groupMaxCDs  = _groupMaxCDs;
        IntIntMap             groupCDCount = _groupCDCount;
        UnitFightDataLogic    parent       = _parent;

        CDData[] values = dic.getValues();
        CDData   v;

        for (int i = values.Length - 1; i >= 0; --i)
        {
            if ((v = values[i]) != null)
            {
                v.config    = CDConfig.get(v.id);
                v.timePass += dTime;

                //依然有效
                if (v.timePass < v.timeMax)
                {
                    cds.put(v.id, v);

                    foreach (int gv in v.config.groups)
                    {
                        groupCDCount.addValue(gv, 1);

                        CDData oldMax = groupMaxCDs.get(gv);

                        if (oldMax == null || oldMax.getLastTime() < v.getLastTime())
                        {
                            groupMaxCDs.put(gv, v);
                        }

                        //新的
                        if (oldMax == null)
                        {
                            parent.onStartGroupCD(gv);
                        }
                    }
                }
            }
        }

        _parent.onCDChange();
    }
 internal static Value[] GetPropertyValues(PropertyReader propertyReader, IntObjectMap <PropertyBlock> propertyMap, int[] indexPropertyIds)
 {
     Value[] values = new Value[indexPropertyIds.Length];
     for (int i = 0; i < indexPropertyIds.Length; i++)
     {
         PropertyBlock propertyBlock = propertyMap.get(indexPropertyIds[i]);
         values[i] = propertyReader.PropertyValue(propertyBlock);
     }
     return(values);
 }
Esempio n. 24
0
    /** 目标刷新 */
    private void taskRefresh(TaskData data)
    {
        Action <TaskData> func;

        if ((func = _taskRefreshFuncDic.get(data.funcID)) == null)
        {
            return;
        }

        func(data);
    }
Esempio n. 25
0
    /** 获取Rank简版数据 */
    public RankSimpleData getRankSimpleData(int funcID)
    {
        IntObjectMap <FuncToolData> dic = _d.funcTools.get(FuncToolType.Rank);

        if (dic == null)
        {
            return(null);
        }

        return((RankSimpleData)dic.get(funcID));
    }
Esempio n. 26
0
    /** 开始服务器CD组 */
    public void startCDsByServer(SList <CDData> list)
    {
        IntObjectMap <CDData> cds          = _cds;
        IntObjectMap <CDData> groupMaxCDs  = _groupMaxCDs;
        IntIntMap             groupCDCount = _groupCDCount;
        UnitFightDataLogic    parent       = _parent;

        CDData   oldData;
        CDData   data;
        CDConfig config;

        foreach (CDData v in list)
        {
            config = CDConfig.get(v.id);

            if ((oldData = cds.get(v.id)) == null)
            {
                data        = v;
                data.config = config;

                cds.put(data.id, data);
            }
            else
            {
                data          = oldData;
                data.timePass = v.timePass;
                data.timeMax  = v.timeMax;
            }

            foreach (int gv in config.groups)
            {
                //计数加1
                if (oldData == null)
                {
                    groupCDCount.addValue(gv, 1);
                }

                CDData oldMax = groupMaxCDs.get(gv);

                if (oldMax == null || oldMax.getLastTime() < data.timeMax)
                {
                    groupMaxCDs.put(gv, data);
                }

                //新的
                if (oldMax == null)
                {
                    parent.onStartGroupCD(gv);
                }
            }
        }

        _parent.onCDChange();
    }
Esempio n. 27
0
    /** 获取部件加载器 */
    private AssetPoolLoadTool getPartLoadTool(int type)
    {
        AssetPoolLoadTool tool = _partLoadToolDic.get(type);

        if (tool == null)
        {
            _partLoadToolDic.put(type, tool = new AssetPoolLoadTool(AssetPoolType.UnitPart));
        }

        return(tool);
    }
Esempio n. 28
0
    /** 获取可用实例 */
    protected TriggerInstance getInstance(int id)
    {
        TriggerInstance instance;

        if ((instance = _instanceDic.get(id)) == null)
        {
            _instanceDic.put(id, instance = doCreateInstance(id));
        }

        return(instance);
    }
Esempio n. 29
0
    /** 获取某组trigger */
    public static IntObjectMap <TriggerConfigData> getGroupDic(int groupType, int groupID)
    {
        IntObjectMap <IntObjectMap <TriggerConfigData> > dic;

        if ((dic = _groupDic.get(groupType)) == null)
        {
            return(null);
        }

        return(dic.get(groupID));
    }
Esempio n. 30
0
    /** 检测消息是否可以发出 */
    public bool checkRequest(int requestID)
    {
        IntSet intSet = _requestSet.get(requestID);

        //TODO:待会继续

        if (_currentRequestID == -1)
        {
        }

        return(true);
    }