using System.Xml.Linq; public class RequirementIsBetweenTimesRebirth : TargetedCompareRequirementBase { string strValue = ""; public override bool IsValid(MinEventParams _params) { if (!base.IsValid(_params)) { return false; } ulong worldTime = GameManager.Instance.World.worldTime; ValueTuple valueTuple = GameUtils.WorldTimeToElements(worldTime); int hour = valueTuple.Item2; int minutes = valueTuple.Item3; //Log.Out("RequirementIsBetweenTimesRebirth-IsValid, hour: " + hour); //Log.Out("RequirementIsBetweenTimesRebirth-IsValid, minutes: " + minutes); string[] array = strValue.Split(new char[] { ',' }); int numHour1 = 0; int numMinutes1 = 0; int numHour2 = 0; int numMinutes2 = 0; bool bOutside = false; for (int i = 0; i < array.Length; i++) { if (i == 0) { numHour1 = Int16.Parse(array[0]); } if (i == 1) { numMinutes1 = Int16.Parse(array[1]); } if (i == 2) { numHour2 = Int16.Parse(array[2]); } if (i == 3) { numMinutes2 = Int16.Parse(array[3]); } } //Log.Out("RequirementIsBetweenTimesRebirth-IsValid, numHour1: " + numHour1); //Log.Out("RequirementIsBetweenTimesRebirth-IsValid, numMinutes1: " + numMinutes1); //Log.Out("RequirementIsBetweenTimesRebirth-IsValid, numHour2: " + numHour2); //Log.Out("RequirementIsBetweenTimesRebirth-IsValid, numMinutes2: " + numMinutes2); if (numHour1 > numHour2) { //Log.Out("RequirementIsBetweenTimesRebirth-IsValid, numHour2 > numHour1"); bOutside = true; } else { if ((numHour1 == numHour2)) { if (numMinutes1 > numMinutes2) { //Log.Out("RequirementIsBetweenTimesRebirth-IsValid, numMinutes1 > numMinutes2"); bOutside = true; } } } bool flag = false; if (!bOutside) { //Log.Out("RequirementIsBetweenTimesRebirth-IsValid, NOT bOutside"); if (numHour1 < hour && hour < numHour2) { //Log.Out("RequirementIsBetweenTimesRebirth-IsValid, hour > numHour1 && hour < numHour2"); flag = true; } else if (hour == numHour1 && hour == numHour2) { //Log.Out("RequirementIsBetweenTimesRebirth-IsValid, hour == numHour1 && hour == numHour2"); if (minutes >= numMinutes1 && minutes <= numMinutes2) { //Log.Out("RequirementIsBetweenTimesRebirth-IsValid, minutes >= numMinutes1 && minutes <= numMinutes2"); flag = true; } } else if (hour == numHour1 && minutes >= numMinutes1) { //Log.Out("RequirementIsBetweenTimesRebirth-IsValid, hour == numHour1 && minutes >= numMinutes1"); flag = true; } else if (hour == numHour2 && minutes <= numMinutes2) { //Log.Out("RequirementIsBetweenTimesRebirth-IsValid, hour == numHour2 && minutes <= numMinutes2"); flag = true; } } else { //Log.Out("RequirementIsBetweenTimesRebirth-IsValid, bOutside"); if (hour > numHour1 || hour < numHour2) { //Log.Out("RequirementIsBetweenTimesRebirth-IsValid, hour < numHour1 || hour > numHour2"); flag = true; } else if (hour == numHour1 && hour == numHour2) { //Log.Out("RequirementIsBetweenTimesRebirth-IsValid, hour == numHour1 && hour == numHour2"); if (minutes <= numMinutes2 || minutes >= numMinutes1) { //Log.Out("RequirementIsBetweenTimesRebirth-IsValid, minutes <= numMinutes2 || minutes >= numMinutes1"); flag = true; } } else if (hour == numHour1 && minutes >= numMinutes1) { //Log.Out("RequirementIsBetweenTimesRebirth-IsValid, hour == numHour1 && minutes >= numMinutes1"); flag = true; } else if (hour == numHour2 && minutes <= numMinutes2) { //Log.Out("RequirementIsBetweenTimesRebirth-IsValid, hour == numHour2 && minutes <= numMinutes2"); flag = true; } } //Log.Out("RequirementIsBetweenTimesRebirth-IsValid, flag: " + flag); return flag; } public override bool ParseXAttribute(XAttribute _attribute) { var flag = base.ParseXAttribute(_attribute); if (flag) return true; var name = _attribute.Name; if (name == null) { return flag; } else if (name == "Value") { strValue = _attribute.Value; return true; } else { return false; } } }