public override void InitPO(CharacterPO po0, CharacterRefreshPO po1)
    {
        _agentID            = po0.Id;
        _health             = po0.Health;
        _worth              = po0.Score;
        _baseSpeed          = po0.BaseSpeed;
        _rotationSpeed      = po0.RotationSpeed;
        _agentType          = (E_AgentType)po0.Type;
        _destroyEffectSound = po0.DestroyEffectSound;
        _explodeEffectSound = po0.ExplodeEffectSound;
        _destroySound       = po0.DestroySound;
        _attackDamage       = po0.DamageValue;
        _worth              = po0.Score;

        targetAgentID = po1.TargetAgentID;
        ActionType    = (global::E_ActionType)po1.ActionType;
        //mMoveSpeed = _baseSpeed * Random.Range(po1.FactorSpeed[0], po1.FactorSpeed[1]);
        _disappearTime = po1.DisappearTime;
        _disappearType = _disappearTime == 0 ? E_DisappearType.Normal : E_DisappearType.CanDisappear;

        _rigidbody = GetComponent <Rigidbody>();

        SetBodyActive();

        ConstructFSM();
    }
    /// <summary>
    /// 初始化
    /// </summary>
    /// <param name="po0"></param>
    /// <param name="po1"></param>
    public override void InitPO(CharacterPO po0, CharacterRefreshPO po1)
    {
        _animator   = transform.Find("Root").GetComponent <Animator>();
        _rigidbody  = GetComponent <Rigidbody>();
        LookAtPoint = FindParentObject("LookAtPoint").transform;

        PterosaurStep1  step1  = new PterosaurStep1(this);
        PterosaurStep2  step2  = new PterosaurStep2(this);
        PterosaurStep3  step3  = new PterosaurStep3(this);
        PterosaurStep4  step4  = new PterosaurStep4(this);
        PterosaurStep5  step5  = new PterosaurStep5(this);
        PterosaurStep6  step6  = new PterosaurStep6(this);
        PterosaurStep7  step7  = new PterosaurStep7(this);
        PterosaurStep8  step8  = new PterosaurStep8(this);
        PterosaurStep9  step9  = new PterosaurStep9(this);
        PterosaurStep10 step10 = new PterosaurStep10(this);

        SetBodyActive();

        _baseHealth         = po0.Health;
        _worth              = po0.Score;
        _baseSpeed          = po0.BaseSpeed;
        _rotationSpeed      = po0.RotationSpeed;
        _agentID            = po0.Id;
        _agentType          = (E_AgentType)po0.Type;
        _destroyEffectSound = po0.DestroyEffectSound;
        _explodeEffectSound = po0.ExplodeEffectSound;
        _destroySound       = po0.DestroySound;
        _attackDamage       = po0.DamageValue;
        _invincible         = false;
        _health             = _baseHealth;
        mMoveSpeed          = _baseSpeed;

        //#region Init Hit Point
        //int index = 0;
        //for (int i = 0; i < po0.HitBone.Length; ++i)
        //{
        //    string boneName = po0.HitBone[i];
        //    if (boneName.Equals("XXX"))
        //        ++index;
        //    GameObject go = FindParentObject(boneName);
        //    if (go != null)
        //    {
        //        HitPoint hitpoint = go.GetOrAddComponent<HitPoint>();
        //        switch (index)
        //        {
        //            case 0:
        //                hitpoint.SetParentType(HitPoint.E_Parent.Claw);
        //                break;
        //            case 1:
        //                hitpoint.SetParentType(HitPoint.E_Parent.Beat);
        //                break;
        //        }
        //    }
        //}
        //#endregion

        EventDispatcher.AddEventListener(EventDefine.Boss_Change_State, NextStep);
        EventDispatcher.AddEventListener <int, float>(EventDefine.Boss_Hit_Point_Break, AddDamageValue);
    }
Beispiel #3
0
 public LoopRefresh(int characterID, string name, E_CharacterType type, CharacterRefreshPO characterRefreshPO)
 {
     mCharacterID        = characterID;
     mPrefabName         = name;
     mCharacterType      = type;
     mCharacterRefreshPo = characterRefreshPO;
 }
Beispiel #4
0
    public ICharacter CreateCharacter <T>(int characterID, CharacterRefreshPO characterRefreshPO) where T : ICharacter, new()
    {
        ICharacter character = new T();

        ICharacterBuilder builder = new FireMonsterBuilder(character, characterID, characterRefreshPO);

        return(CharacterBuilderDirector.Construct(builder));
    }
Beispiel #5
0
    public Vector3 GetEulerAngle(CharacterRefreshPO characterRefreshPO)
    {
        if (characterRefreshPO.LocalEulerAngles.Length != 3)
        {
            return(Vector3.one);
        }

        return(new Vector3(characterRefreshPO.LocalEulerAngles[0], characterRefreshPO.LocalEulerAngles[1], characterRefreshPO.LocalEulerAngles[2]));
    }
Beispiel #6
0
 public Vector3 GetEulerAngle(CharacterRefreshPO characterRefreshPO)
 {
     if (characterRefreshPO.LocalEulerAngles.Length % 3 == 0)
     {
         return(new Vector3(characterRefreshPO.LocalEulerAngles[0], characterRefreshPO.LocalEulerAngles[1], characterRefreshPO.LocalEulerAngles[2]));
     }
     else
     {
         return(Vector3.zero);
     }
 }
Beispiel #7
0
    public Vector3 GetSpawnPosition(CharacterRefreshPO characterRefreshPO)
    {
        string       name        = characterRefreshPO.CricleName;
        IBattleScene battleScene = ioo.battleScene;

        if (battleScene == null)
        {
            return(Vector3.zero);
        }
        return(battleScene.GetCirclePositionByName(name));
    }
Beispiel #8
0
 public Vector3 GetSpawnPosition(CharacterRefreshPO characterRefreshPO)
 {
     if (characterRefreshPO.AppearePoint.Length % 3 == 0)
     {
         return(new Vector3(characterRefreshPO.AppearePoint[0], characterRefreshPO.AppearePoint[1], characterRefreshPO.AppearePoint[2]));
     }
     else
     {
         return(Vector3.zero);
     }
 }
Beispiel #9
0
    public Vector3 GetSpawnPosition(CharacterRefreshPO characterRefreshPO)
    {
        Vector3 pos = Vector3.zero;

        if (characterRefreshPO.AppearePoint.Length % 3 == 0)
        {
            return(new Vector3(characterRefreshPO.AppearePoint[0], characterRefreshPO.AppearePoint[1], characterRefreshPO.AppearePoint[2]));
        }

        return(pos);
    }
    public Vector3 GetSpawnPosition(CharacterRefreshPO characterRefreshPO)
    {
        Vector3 pos = Vector3.zero;

        if (characterRefreshPO.AppeareArea == "")
        {
            Debug.LogError(characterRefreshPO.Id + " AppeareArea名为空");
            return(pos);
        }

        AreaManager.Instance.GetExitOrRandPositionInArea(characterRefreshPO.AppeareArea, ref pos);
        return(pos);
    }
Beispiel #11
0
    static public void LoadHandler(LoadedData data)
    {
        JsonData jsonData = JsonMapper.ToObject(data.Value.ToString());

        if (!jsonData.IsArray)
        {
            return;
        }
        for (int index = 0; index < jsonData.Count; index++)
        {
            JsonData           element = jsonData[index];
            CharacterRefreshPO po      = new CharacterRefreshPO(element);
            CharacterRefreshData.Instance.m_dictionary.Add(po.Id, po);
        }
    }
    public Vector3 GetSpawnPosition(CharacterRefreshPO characterRefreshPO)
    {
        Vector3 pos = Vector3.zero;

        if (characterRefreshPO.AppearePoint.Length % 3 == 0)
        {
            return(new Vector3(characterRefreshPO.AppearePoint[0], characterRefreshPO.AppearePoint[1], characterRefreshPO.AppearePoint[2]));
        }

        if (characterRefreshPO.AppeareArea == "")
        {
            Debug.LogError(characterRefreshPO.Id + " AppeareArea名为空");
            return(pos);
        }

        AreaManager.Instance.GetExitOrRandPositionInArea(characterRefreshPO.AppeareArea, ref pos);
        return(pos);
    }
Beispiel #13
0
    /// <summary>
    /// 道具初始化
    /// </summary>
    /// <param name="po"></param>
    public override void InitPO(CharacterPO po0, CharacterRefreshPO po1)
    {
        _health     = po0.Health;
        _worth      = po0.Score;
        _baseSpeed  = po0.BaseSpeed;
        _attackTime = po0.AttackTime;
        mFogTime    = po0.FogTime;
        _freezeTime = po0.FreezeTime;
        _validTime  = po0.ValidTime;
        _agentType  = (global::E_AgentType)po0.Type;
        _agentID    = po0.Id;

        if (po1 != null)
        {
            _disappearTime = po1.DisappearTime;
        }
        else
        {
            _disappearTime = po0.DisappearTime;
        }

        _disappearType = _disappearTime == 0 ? E_DisappearType.Normal : E_DisappearType.CanDisappear;

        if (IsCoin())
        {
            InitCoin(_agentID);
        }

        if (IsSandBox())
        {
            InitSandBox();
        }

        _rigidbody = GetComponent <Rigidbody>();

        AddBornEffect(po0.BornEffect);
    }
Beispiel #14
0
 public WolfBuilder(ICharacter character, int characterID, CharacterRefreshPO characterRefreshPO) : base(character, characterID, characterRefreshPO)
 {
 }
Beispiel #15
0
 public Vector3 GetSpawnPosition(CharacterRefreshPO characterRefreshPO)
 {
     return(Vector3.zero);
 }
 public SpawnHugeFireMonsterCommand(int characterID, CharacterRefreshPO characterRefreshPO) : base(characterID, characterRefreshPO)
 {
 }
Beispiel #17
0
 public SpawnBullDemonKingCommand(int characterID, CharacterRefreshPO characterRefreshPO) : base(characterID, characterRefreshPO)
 {
 }
 public SelectCharacterBuilder(ICharacter character, int characterID, CharacterRefreshPO characterRefreshPO) : base(character, characterID, characterRefreshPO)
 {
 }
Beispiel #19
0
 public CitizenBuilder(ICharacter character, int characterID, CharacterRefreshPO characterRefreshPO) : base(character, characterID, characterRefreshPO)
 {
 }
Beispiel #20
0
 public EliteMonsterBuilder(ICharacter character, int characterID, CharacterRefreshPO characterRefreshPO) : base(character, characterID, characterRefreshPO)
 {
 }
Beispiel #21
0
    /// <summary>
    /// 按照刷新表动态刷新场景活动单元
    /// </summary>
    void RefreshCharacter()
    {
        while (true)
        {
            int refreshID = 100000 + ((int)mStageSystem.sceneID) * 10000 + mStageSystem.refreshIndex;
            CharacterRefreshPO characterRefreshPO = CharacterRefreshData.Instance.GetCharacterRefreshPO(refreshID);
            if (characterRefreshPO == null)
            {
                break;
            }
            if (characterRefreshPO.Stage != mLv)
            {
                break;
            }

            if (characterRefreshPO.AppeareTime > mStageTimer)
            {
                return;
            }

            CharacterBaseAttr baseAttr = FactoryManager.attrFactory.GetCharacterBaseAttr(characterRefreshPO.CharacterID);
            if (characterRefreshPO.Loop == 1)
            {
                LoopRefresh lr = new LoopRefresh(characterRefreshPO.CharacterID, baseAttr.name, baseAttr.characterType, characterRefreshPO);
                mLoopList.Add(lr);
                ++mStageSystem.refreshIndex;
                continue;
            }

            E_CharacterType characterType = baseAttr.characterType;
            switch (characterType)
            {
            case E_CharacterType.Player:
                ISpawnCommand command = new SpawnCharacterCommand(baseAttr.id, characterRefreshPO);
                mCommands.Add(command);
                break;

            case E_CharacterType.Map:
                command = new SpawnMapCommand(baseAttr.id, characterRefreshPO);
                mCommands.Add(command);
                break;

            case E_CharacterType.Citizen0:
            case E_CharacterType.Citizen1:
            case E_CharacterType.Citizen2:
                command = new SpawnCitizenCommand(baseAttr.id, characterRefreshPO);
                mCommands.Add(command);
                break;

            case E_CharacterType.Npc:
                for (int i = 0; i < characterRefreshPO.StepCount; ++i)
                {
                    command = new SpawnNpcCommand(baseAttr.id, characterRefreshPO);
                    mCommands.Add(command);
                }
                break;

            case E_CharacterType.SandBox:
            case E_CharacterType.Bucket:
                command = new SpawnPropCommand(baseAttr.id, characterRefreshPO, Vector3.zero);
                mCommands.Add(command);
                break;

            case E_CharacterType.BullDemonKing:
                command = new SpawnBullDemonKingCommand(baseAttr.id, characterRefreshPO);
                mCommands.Add(command);
                break;

            case E_CharacterType.AngerBear:
                command = new SpawnBearCommand(baseAttr.id, characterRefreshPO);
                mCommands.Add(command);
                break;

            case E_CharacterType.Wolf:
                command = new SpawnWolfCommand(baseAttr.id, characterRefreshPO);
                mCommands.Add(command);
                break;
            }
            ++mStageSystem.refreshIndex;
        }
    }
Beispiel #22
0
 public Vector3 GetEulerAngle(CharacterRefreshPO characterRefreshPO)
 {
     throw new NotImplementedException();
 }
Beispiel #23
0
 public Vector3 GetSpawnPosition(CharacterRefreshPO characterRefreshPO)
 {
     throw new NotImplementedException();
 }
Beispiel #24
0
 public SpawnCoinCommand(int characterID, CharacterRefreshPO characterRefreshPO) : base(characterID, characterRefreshPO)
 {
 }
Beispiel #25
0
 public HelicopterBuilder(ICharacter character, int characterID, CharacterRefreshPO characterRefreshPO) : base(character, characterID, characterRefreshPO)
 {
 }
Beispiel #26
0
 public SpawnHelicopterCommand(int characterID, CharacterRefreshPO characterRefreshPO, Citizen citizen, int playerID) : base(characterID, characterRefreshPO)
 {
     mCitizen  = citizen;
     mPlayerID = playerID;
 }
Beispiel #27
0
 public Vector3 GetLocalScale(CharacterRefreshPO characterRefreshPO)
 {
     throw new NotImplementedException();
 }
Beispiel #28
0
 public ICharacterBuilder(ICharacter character, int characterID, CharacterRefreshPO characterRefreshPO)
 {
     mCharacter          = character;
     mCharacterID        = characterID;
     mCharacterRefreshPO = characterRefreshPO;
 }
Beispiel #29
0
    public override void InitPO(CharacterPO po0, CharacterRefreshPO po1)
    {
        _health             = po0.Health;
        _worth              = po0.Score;
        _baseSpeed          = po0.BaseSpeed;
        _rotationSpeed      = po0.RotationSpeed;
        _agentID            = po0.Id;
        _agentType          = (E_AgentType)po0.Type;
        _destroyEffectSound = po0.DestroyEffectSound;
        _explodeEffectSound = po0.ExplodeEffectSound;
        _destroySound       = po0.DestroySound;
        _attackDamage       = po0.DamageValue;
        _invincible         = false;

        //_deadAfterAttack = po1.DadAfterDead == 1 ? true : false;
        //mMoveSpeed = _baseSpeed * UnityEngine.Random.Range(po1.FactorSpeed[0], po1.FactorSpeed[1]);

        _rigidbody = GetComponent <Rigidbody>();
        if (_rigidbody != null)
        {
            _rigidbody.isKinematic = po1.IsKinematic == 1 ? true : false;
        }

        //_reachTarget = false;

        _animator       = GetComponent <Animator>();
        _animator.speed = 1;

        //// 绑定出生特效
        //GameObject bornPoint = transform.Find("Root/BornEffectPoint").gameObject;
        //_bornEffect = PoolManager.Instance.Spawn(po0.BornEffect);
        //_bornEffect.transform.SetParent(bornPoint.transform);
        //ResetTransform(_bornEffect);

        ActionType = (global::E_ActionType)po1.ActionType;
        if (ActionType == global::E_ActionType.AttackCitizen)
        {
            _row = -1;
        }

        if (ActionType == global::E_ActionType.SpecialCircle)
        {
            stayArea = po1.StayArea;
            stayTime = UnityEngine.Random.Range(po1.StayTime[0], po1.StayTime[1]);
            InsertPosToPath(0, 1);
        }

        if (ActionType == global::E_ActionType.ShakeScreen)
        {
            _active  = false;
            stayArea = po1.StayArea;
            pathList.Clear();
            //pathList.AddRange(ioo.cameraManager.ShakeScreenList());
        }

        //_delayTimeAttack = po1.DelayTimeAttack;

        BindEvent();

        ConstructFSM();;
    }
 public Vector3 GetSpawnPosition(CharacterRefreshPO characterRefreshPO)
 {
     return(new Vector3(characterRefreshPO.AppearePoint[0], characterRefreshPO.AppearePoint[1], characterRefreshPO.AppearePoint[2]));
 }