示例#1
0
    public CharacterStatus(CharacterStatusInfo info)
    {
        Info = info;

        Strength = new IntReactiveProperty(0);
        Agility  = new IntReactiveProperty(0);

        MaxHealth = new ReactiveProperty <float>(Info.MaxHealth);
        MoveSpeed = new ReactiveProperty <float>(Info.MoveSpeed);

        ModifierCalculator = new ModifierCalculator();

        ModifierCalculator.Changed += OnModifiersChange;
    }
示例#2
0
    public virtual Character GetCharacter(Vector3 startingPosition, CharacterStatusInfo replacementStatusInfo = null)
    {
        var inputSource = new ClickInputSource();
        var pawn        = Instantiate(pawnPrefab, startingPosition, Quaternion.identity) as CharacterPawn;

        var result = new Character(
            pawn,
            inputSource,
            replacementStatusInfo == null ? statusInfo.GetInstance() : replacementStatusInfo.GetInstance(),
            stateControllerInfo.GetStateController(),
            weaponStateControllerInfo.GetStateController(),
            teamId,
            this);

        return(result);
    }
示例#3
0
    public override Character GetCharacter(Vector3 startingPosition, CharacterStatusInfo replacementStatusInfo = null)
    {
        var inputSource = GambitListInfo.GetGambitList();
        var pawn        = Instantiate(replacementStatusInfo == null ? pawnPrefab : (replacementStatusInfo as EnemyCharacterStatusInfo).PawnPrefab, startingPosition, Quaternion.identity) as CharacterPawn;

        var status = replacementStatusInfo == null?EnemyStatusInfo.GetInstance() : replacementStatusInfo.GetInstance();

        var result = new Character(
            pawn,
            inputSource,
            status,
            stateControllerInfo.GetStateController(),
            weaponStateControllerInfo.GetStateController(),
            teamId,
            this);

        pawn.GetSphereSensor().SetRadius((status.Info as EnemyCharacterStatusInfo).AggroRadius);

        inputSource.Initialize(result);

        return(result);
    }