protected override void DrawBoxGroup(CAF.Combat.BoxGroup currentGroup) { base.DrawBoxGroup(currentGroup); BoxGroup boxGroup = (BoxGroup)currentGroup; EditorGUILayout.LabelField("Sound", EditorStyles.boldLabel); boxGroup.hitSound = (ModObjectLink)EditorGUILayout.ObjectField("Hit Sound", boxGroup.hitSound, typeof(ModObjectLink), false); EditorGUILayout.Space(); }
/// <summary> /// Handles the lifetime process of box groups. /// </summary> /// <param name="groupIndex">The group number being processed.</param> /// <param name="boxGroup">The group being processed.</param> protected virtual void HandleBoxGroup(int groupIndex, CAF.Combat.BoxGroup boxGroup) { EntityManager entityManager = GetEntityManager(); // Cleanup the box if it's active frames are over. if (entityManager.StateManager.CurrentStateFrame == boxGroup.activeFramesEnd + 1) { entityManager.CombatManager.hitboxManager.DeactivateHitboxGroup(groupIndex); } // Make sure we're in the frame window of the box. if (entityManager.StateManager.CurrentStateFrame < boxGroup.activeFramesStart || entityManager.StateManager.CurrentStateFrame > boxGroup.activeFramesEnd) { return; } // Check if the charge level requirement was met. if (boxGroup.chargeLevelNeeded >= 0) { int currentChargeLevel = entityManager.CombatManager.CurrentChargeLevel; if (currentChargeLevel <= boxGroup.chargeLevelNeeded || currentChargeLevel > boxGroup.chargeLevelMax) { return; } } // Create the box. switch (boxGroup.hitGroupType) { case CAF.Combat.BoxGroupType.HIT: entityManager.CombatManager.hitboxManager.CreateHitboxGroup(groupIndex); break; } }