public static TriggerConditionBase Create(BinaryReader reader, StringCacheTable cache)
        {
            int i = 0;

            i.OnDeserialize(reader);
            TriggerConditionBase condition = null;

            switch (i)
            {
            case 0:     //GameStateTriggerCondition
                condition = new GameStateTriggerCondition();
                break;

            case 1:
                condition = new HitSoundTriggerCondition();
                break;

            default:
                break;
            }

            condition?.OnDeserialize(reader, cache);

            return(condition);//todo
        }
 public override bool Equals(TriggerConditionBase other)
 {
     return(other is HitSoundTriggerCondition sound_cond &&
            sound_cond.CustomSampleSet == CustomSampleSet &&
            sound_cond.SampleSet == SampleSet &&
            sound_cond.SampleSetAdditions == SampleSetAdditions &&
            sound_cond.HitSound == HitSound);
 }
        public IEnumerable<Command> Parse(IEnumerable<string> data_arr)
        {
            var condition_text = data_arr.ElementAt(1);
            var condition = TriggerConditionBase.Parse(condition_text);

            TriggerCommand command = new TriggerCommand();

            command.Condition=condition;
            command.StartTime=data_arr.ElementAt(2).ToInt();
            command.EndTime=string.IsNullOrWhiteSpace(data_arr.ElementAt(3)) ? command.StartTime : data_arr.ElementAt(3).ToInt();
            command.GroupID=data_arr.Count()>4 ? (string.IsNullOrWhiteSpace(data_arr.ElementAt(4)) ? 0 : data_arr.ElementAt(4).ToInt()) : 0;

            yield return command;
        }
 public override bool Equals(TriggerConditionBase other)
 {
     return(other is GameStateTriggerCondition game_cond && game_cond.listen_state == listen_state);
 }