Example #1
0
        public void AddTimedStatus(CharacterStatusType statusType, int numTurns)
        {
            numTurns++;
            foreach (var s in _timedStatuses)
            {
                if (s.Type == statusType)
                {
                    if (s.Life < numTurns)
                    {
                        s.Life = numTurns;
                    }

                    OnStatusAdded?.Invoke(s);
                    return;
                }
            }

            var status = Create(statusType);

            if (status != null)
            {
                status.Life = numTurns;
                _timedStatuses.Add(status);
                UpdateWorldState(statusType, true);
                OnStatusAdded?.Invoke(status);
            }
        }
Example #2
0
 public ChunkChapter()
 {
     Data            = new byte[Length];
     CharacterStatus = new CharacterStatusType[SaveFf7Remake.CharacterCount];
     Positions       = Enumerable.Range(0, SaveFf7Remake.CharacterCount).Select(x => new Vector3f()).ToArray();
     Rotations       = Enumerable.Range(0, SaveFf7Remake.CharacterCount).Select(x => new Vector3f()).ToArray();
 }
Example #3
0
 public ChunkChapter()
 {
     Data            = new byte[Length];
     CharacterStatus = new CharacterStatusType[SaveFf7Remake.CharacterCount];
     Positions       = Enumerable.Range(0, SaveFf7Remake.CharacterCount).Select(x => new Vector3f()).ToArray();
     Rotations       = Enumerable.Range(0, SaveFf7Remake.CharacterCount).Select(x => new Vector3f()).ToArray();
     Npc             = Enumerable.Range(0, MaxNpcEntryCount).Select(x => new ChapterObject()).ToArray();
     Objects         = Enumerable.Range(0, MaxObjectEntryCount).Select(x => new ChapterObject()).ToArray();
     Enemies         = Enumerable.Range(0, MaxEnemyEntryCount).Select(x => new ChapterObject()).ToArray();
 }
Example #4
0
 public void RemovePermanentStatus(CharacterStatusType statusType)
 {
     foreach (var s in _permanentStatuses)
     {
         if (s.Type == statusType)
         {
             _permanentStatuses.Remove(s);
             UpdateWorldState(statusType, false);
             OnStatusRemoved?.Invoke(s);
             return;
         }
     }
 }
Example #5
0
        public bool Find(CharacterStatusType type, out UiStatusDbEntry effect)
        {
            foreach (var entry in _statusEffectDb)
            {
                if (entry.Type == type)
                {
                    effect = entry;
                    return(true);
                }
            }

            effect = null;
            return(false);
        }
Example #6
0
        private void UpdateWorldState(CharacterStatusType statusType, bool added)
        {
            switch (statusType)
            {
            case CharacterStatusType.Stunned:
                Context.SetState(CharacterWorldState.IsStunned, added, EffectType.Permanent);
                break;

            case CharacterStatusType.Confused:
                Context.SetState(CharacterWorldState.IsConfused, added, EffectType.Permanent);
                break;

            case CharacterStatusType.Drunk:
                Context.SetState(CharacterWorldState.IsDrunk, added, EffectType.Permanent);
                break;
            }
        }
Example #7
0
        public void AddPermanentStatus(CharacterStatusType statusType)
        {
            foreach (var s in _permanentStatuses)
            {
                if (s.Type == statusType)
                {
                    return;
                }
            }

            var status = Create(statusType);

            if (status != null)
            {
                _permanentStatuses.Add(status);
                UpdateWorldState(statusType, true);
                OnStatusAdded?.Invoke(status);
            }
        }
Example #8
0
        public bool HasStatus(CharacterStatusType statusType)
        {
            foreach (var s in _permanentStatuses)
            {
                if (s.Type == statusType)
                {
                    return(true);
                }
            }

            foreach (var s in _timedStatuses)
            {
                if (s.Type == statusType)
                {
                    return(true);
                }
            }

            return(false);
        }
Example #9
0
        private Status Create(CharacterStatusType statusType)
        {
            Status status = null;

            switch (statusType)
            {
            case CharacterStatusType.Stunned:
                status = new StunnedStatus();
                break;

            case CharacterStatusType.Confused:
                status = new ConfusedStatus();
                break;

            case CharacterStatusType.Drunk:
                status = new DrunkStatus();
                break;
            }

            return(status);
        }