Пример #1
0
    public override void dispose()
    {
        base.dispose();

        clearCurrentCommand();
        _fightUnitConfig = null;
    }
Пример #2
0
    /** 通过战斗单位配置初始化 */
    public void initByFightUnitConfig(int id)
    {
        FightUnitConfig config = FightUnitConfig.get(id);

        //默认模型ID
        avatar.setDefaultModelID(config.modelID > 0 ? config.modelID : -1);
    }
Пример #3
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;
        }
    }
Пример #4
0
    /** 构造单位加载列表 */
    protected virtual void makeUnitLoadList(IntSet loadList, UnitInfoData data)
    {
        if (BaseC.constlist.unit_canFight(data.identity.type))
        {
            int fightUnitID;

            if ((fightUnitID = ((FightUnitIdentityData)data.identity).getFightUnitID()) > 0)
            {
                int modelID;

                if ((modelID = FightUnitConfig.get(fightUnitID).modelID) > 0)
                {
                    loadList.add(ModelConfig.get(modelID).sourceT);
                }
            }
        }


        switch (data.identity.type)
        {
        case UnitType.Character:
        {
        }
        break;
        }
    }
Пример #5
0
    public override void init()
    {
        base.init();

        _aiLogic         = _unit.ai;
        _fightUnitConfig = _unit.fight.getFightUnitConfig();

        setDefaultCommand(_fightUnitConfig.defaultAICommand);
    }
Пример #6
0
    /// <summary>
    /// 读完所有表后处理
    /// </summary>
    public static void afterReadConfigAll()
    {
        FightUnitConfig fConfig;

        FightUnitLevelConfig[] values;
        FightUnitLevelConfig   v;

        for (int i = (values = _dic.getValues()).Length - 1; i >= 0; --i)
        {
            if ((v = values[i]) != null)
            {
                if ((fConfig = FightUnitConfig.get(v.id)).levelMax < v.level)
                {
                    fConfig.levelMax = v.level;
                }
            }
        }
    }
Пример #7
0
    public override void dispose()
    {
        base.dispose();

        clearFightAI();

        _anchorPos.clear();
        _anchorUnit.clear();
        _isAnchorUseUnit = false;

        _wanderWaitTime = -1;
        _isWandering    = false;

        _fightUnitConfig = null;
        _fightLogic      = null;
        _unitSkills      = null;
        _defaultSkill    = null;
    }
Пример #8
0
    private void makeElementModel(SceneElementEditorData data)
    {
        switch (data.config.type)
        {
        case SceneElementType.Npc:
        {
        }
        break;

        case SceneElementType.Monster:
        {
            MonsterConfig monsterConfig = MonsterConfig.get(data.config.id);

            data.gameObject = createModel(FightUnitConfig.get(monsterConfig.fightUnitID).modelID, data);
        }
        break;

        case SceneElementType.Operation:
        {
            OperationConfig operationConfig = OperationConfig.get(data.config.id);

            data.gameObject = createModel(operationConfig.modelID, data);
        }
        break;

        case SceneElementType.FieldItem:
        {
            ItemConfig itemConfig = ItemConfig.get(data.config.id);

            data.gameObject = createModel(itemConfig.fieldItemModelID, data);
        }
        break;
        }

        setPosToGameObject(data);
    }
Пример #9
0
    public override void init()
    {
        base.init();

        _scenePosLogic = _scene.pos;

        _d   = _data.move;
        _pos = _data.pos.pos;
        _dir = _data.pos.dir;

        //有战斗数据
        if (_data.fight != null)
        {
            FightUnitConfig fightUnitConfig = _data.getFightIdentity().getFightUnitConfig();

            _moveType       = fightUnitConfig.mapMoveType;
            _walkSpeedRatio = fightUnitConfig.walkSpeedRatio;

            if (fightUnitConfig.needDrive)
            {
                if (_drive == null)
                {
                    _drive = new DriveLogic();
                }

                DriveLogic drive = _drive;
                drive.needDrive = true;

                drive.needDrive           = fightUnitConfig.needDrive;
                drive.canDriveTurnAtPivot = fightUnitConfig.canDriveTurnAtPivot;
                drive.driveDirectionSpeed = fightUnitConfig.driveDirectionSpeedT;
                drive.driveTurnRadius     = fightUnitConfig.driveTurnRadius;

                if (fightUnitConfig.driveAccelerateSpeed == 0)
                {
                    drive.driveAccelerateSpeedM = 0f;
                    drive.driveGroundFrictionM  = 0f;
                }
                else
                {
                    drive.driveAccelerateSpeedM = fightUnitConfig.driveAccelerateSpeed * Global.useMoveSpeedRatio / 1000000f;
                    //先暂时取陆地的
                    drive.driveGroundFrictionM = MapBlockTypeConfig.get(MapBlockType.Land).groundFriction *Global.useMoveSpeedRatio / 1000000f;
                }
            }
            else
            {
                if (_drive != null)
                {
                    _drive.needDrive = false;
                }
            }

            calculateUseMoveSpeed();
        }
        else
        {
            if (_drive != null)
            {
                _drive.needDrive = false;
            }
        }
    }
Пример #10
0
 /// <summary>
 /// 获取战斗单位配置(可能为空)
 /// </summary>
 public FightUnitConfig getFightUnitConfig()
 {
     return(FightUnitConfig.get(getFightUnitID()));
 }
Пример #11
0
    //--主显示部分--//

    /** 初始化主显示 */
    protected virtual void initMainShow()
    {
        bool hasModel = false;

        if (_data.avatar != null && _data.avatar.modelID > 0)
        {
            hasModel = true;

            setModel(_data.avatar.modelID);

            _data.avatar.parts.forEach((k, v) =>
            {
                setPart(k, _unit.avatar.getShowPart(k));
            });
        }

        if (BaseC.constlist.unit_canFight(_data.identity.type))
        {
            int fightUnitID = _data.getFightIdentity().getFightUnitID();

            if (fightUnitID > 0)
            {
                FightUnitConfig fConfig = FightUnitConfig.get(fightUnitID);

                if (!hasModel && fConfig.modelID > 0)
                {
                    setModel(fConfig.modelID);
                }

                if (fConfig.effectID > 0)
                {
                    addEffect(fConfig.effectID);
                }
            }
        }

        //特殊的

        switch (_unit.type)
        {
        case UnitType.SceneEffect:
        {
            SceneEffectIdentityData iData = _data.getSceneEffectIdentity();

            if (iData.signedEffectID > 0)
            {
                addOrPlayEffect(iData.signedEffectID);
            }
            else
            {
                SceneEffectConfig config = SceneEffectConfig.get(((SceneEffectIdentityData)_data.identity).signedEffectID);

                if (config.modelID > 0)
                {
                    setModel(config.modelID);
                }

                if (config.effectID > 0)
                {
                    addOrPlayEffect(config.effectID);
                }
            }
        }
        break;

        case UnitType.FieldItem:
        {
            FieldItemIdentityData iData = (FieldItemIdentityData)_data.identity;

            ItemConfig itemConfig = ItemConfig.get(iData.item.id);

            if (itemConfig.fieldItemModelID > 0)
            {
                setModel(itemConfig.fieldItemModelID);
            }
        }
        break;
        }
    }