// Token: 0x06001AB2 RID: 6834 RVA: 0x0006FFDC File Offset: 0x0006E1DC private bool ExpandContactChain(ADRecipientExpansion.ExpandableEntry contact, ADRecipientExpansion.HandleRecipientDelegate handleRecipient, ADRecipientExpansion.HandleFailureDelegate handleFailure, Stack <ADRecipientExpansion.ExpandableEntry> expansionStack) { ExTraceGlobals.ADExpansionTracer.TraceDebug((long)this.GetHashCode(), "Expanding possible contact chain for: {0}", new object[] { contact.Entry[ADObjectSchema.Id] }); ADRawEntry adrawEntry = this.session.FindByProxyAddress((ProxyAddress)contact.Entry[ADRecipientSchema.ExternalEmailAddress], this.allProperties); if (handleRecipient != null) { ExpansionType expansionType = (adrawEntry == null) ? ExpansionType.None : ExpansionType.ContactChain; ExpansionControl expansionControl = ADRecipientExpansion.InvokeRecipientDelegate(handleRecipient, contact.Entry, expansionType, contact.Parent); if (expansionControl != ExpansionControl.Continue) { return(expansionControl != ExpansionControl.Terminate); } } if (adrawEntry != null) { ExTraceGlobals.ADExpansionTracer.TraceDebug((long)this.GetHashCode(), "Found chained object: {0}", new object[] { adrawEntry[ADObjectSchema.Id] }); return(this.ProcessChild(adrawEntry, contact, handleRecipient, handleFailure, expansionStack)); } ExTraceGlobals.ADExpansionTracer.TraceDebug((long)this.GetHashCode(), "No contact chain found"); return(true); }
private ExpansionControl OnRecipient(ADRawEntry recipient, ExpansionType recipientExpansionType, ADRawEntry parent, ExpansionType parentExpansionType) { bool flag = CertificateManager.IsADDistributionList((RecipientType)recipient[ADRecipientSchema.RecipientType]); if (flag && (bool)recipient[ADGroupSchema.HiddenGroupMembershipEnabled]) { this.certificates.Clear(); this.size = 0; return(ExpansionControl.Terminate); } if (!flag && !this.previouslySeen.Contains(recipient.Identity.ToString())) { this.size++; this.previouslySeen.Add(recipient.Identity.ToString()); X509Certificate2 adrecipientCert = this.manager.GetADRecipientCert(recipient); if (adrecipientCert != null) { this.certificates.Add(adrecipientCert); } } if (this.size > GlobalSettings.MaxSMimeADDistributionListExpansion) { this.size = 0; this.certificates.Clear(); return(ExpansionControl.Terminate); } return(ExpansionControl.Continue); }
public static void LaunchGame(ExpansionType expansion) { Launcher lan2 = new Launcher(); lan2.ExpansionSelection(expansion); lan2.ShowDialog(); }
public IReadOnlyCollection <PacketCaptureTestEntry> BuildCaptureEntries(ExpansionType expacType, ISerializerService serializer, IEnumerable <Type> typesToRegister) { List <PacketCaptureTestEntry> testSource = new List <PacketCaptureTestEntry>(500); //Do file loading first because it could fail //Then we need to populate the input source for the tests. string testPath = Path.Combine(TestContext.CurrentContext.TestDirectory, "PacketCaptures", expacType.ToString()); //Get every folder foreach (string dir in Directory.GetDirectories(testPath)) { //Each directory should fit the form of OpCode name //Even though the below is a Path with the directory if we pretend it's a file we can easily get the last part of the path //which represents the opcode NetworkOperationCode code = (NetworkOperationCode)Enum.Parse(typeof(NetworkOperationCode), Path.GetFileNameWithoutExtension(dir)); string[] files = null; try { files = Directory.GetFiles(Path.Combine(testPath, dir)); } catch (Exception ee) { throw new InvalidOperationException($"Failed to load File: {Path.Combine(testPath, dir)} Exception: {ee.Message} Stack: {ee.StackTrace}"); } //Now we want to load each capture. foreach (var cap in files) { string filePath = Path.Combine(testPath, dir, cap); //Captures should have a guid on the end of them Guid guid = Guid.Parse(cap.Split('_').Last()); try { byte[] bytes = File.ReadAllBytes(filePath); testSource.Add(new PacketCaptureTestEntry(code, bytes, Path.GetFileName(cap))); } catch (Exception e) { throw new InvalidOperationException($"Failed to open File: {filePath} Exception: {e.Message}", e); } } } typesToRegister .ToList() .ForEach(t => serializer.RegisterType(t)); //This is kinda hacky but we compile here for test reasons serializer.Compile(); return(testSource); }
/// <inheritdoc /> public RealmBuildInformation(ExpansionType expansion, byte majorVersion, byte minorVersion, short buildNumber) { if (!Enum.IsDefined(typeof(ExpansionType), expansion)) { throw new ArgumentOutOfRangeException(nameof(expansion), "Value should be defined in the ExpansionType enum."); } Expansion = expansion; MajorVersion = majorVersion; MinorVersion = minorVersion; BuildNumber = buildNumber; }
public Race(int id, string name, Npc leader, int zoneId, int factionId, int classFlags, Side side = Side.Neutral, ExpansionType expansion = ExpansionType.Classic) { Id = id; Name = name; Flag = 1 << (id - 1); Side = side; Leader = leader; StartZone = Zone.GetById(zoneId); Faction = Faction.GetById(factionId); Expansion = expansion; AvaClasses = wClass.ParseFlags(classFlags); }
private int GetExpansionMask(bool[] values) { var mask = 0; for (int i = ExpansionType.Start; i <= ExpansionType.End; i++) { if (values[i - ExpansionType.Start]) { mask |= ExpansionType.GetMaskFromValue(i); } } return(mask); }
public void UpdateListView() { var expansion = ExpansionType.GetValueForName(dialog.Properties.GetPropertyValue <string>(0)); var channels = Channel.GetChannelsForExpansion(expansion); Debug.Assert(channelSources.Length == channels.Length); var gridData = new string[channels.Length, 2]; for (int i = 0; i < channels.Length; i++) { var src = channelSources[i]; gridData[i, 0] = ChannelType.Names[channels[i]]; if (i >= ChannelType.ExpansionAudioStart) { gridData[i, 0] += $" ({ExpansionType.ShortNames[expansion]})"; } if (src.type == MidiSourceType.Track) { gridData[i, 1] = $"Track {src.index + 1}"; if (!string.IsNullOrEmpty(trackNames[src.index])) { gridData[i, 1] += $" ({trackNames[src.index]})"; } } else if (src.type == MidiSourceType.Channel) { if (src.index == 9 && src.keys != MidiFileReader.AllDrumKeysMask) { gridData[i, 1] = $"Channel {src.index + 1} (Filtered keys)"; } else { gridData[i, 1] = $"Channel {src.index + 1}"; } } else { gridData[i, 1] = "None"; } } dialog.Properties.UpdateMultiColumnList(6, gridData); }
public Wc3Game(GameOwner host, ExpansionType expansionType, GameVersion version, PlayerMode playerMode, TimeSpan gameTime, GameMode gameType, Map map, IEnumerable <Player> players, IEnumerable <GameSlot> gameSlots, IEnumerable <ChatMessage> chatMessages, IEnumerable <Player> winners) { Host = host; ExpansionType = expansionType; Version = version; PlayerMode = playerMode; GameTime = gameTime; GameType = gameType; Map = map; Players = players; GameSlots = gameSlots; ChatMessages = chatMessages; Winners = winners; }
// Token: 0x06001AB3 RID: 6835 RVA: 0x000700C4 File Offset: 0x0006E2C4 private bool ProcessChild(ADRawEntry child, ADRecipientExpansion.ExpandableEntry parent, ADRecipientExpansion.HandleRecipientDelegate handleRecipient, ADRecipientExpansion.HandleFailureDelegate handleFailure, Stack <ADRecipientExpansion.ExpandableEntry> expansionStack) { ExpansionFailure failure = ExpansionFailure.NotMailEnabled; bool flag = false; ExpansionType expansionType = ADRecipientExpansion.GetExpansionType(child); ExTraceGlobals.ADExpansionTracer.TraceDebug <object, string>((long)this.GetHashCode(), "Processing recipient {0} with expansion type {1}", child[ADObjectSchema.Id], ADRecipientExpansion.GetExpansionTypeString(expansionType)); if (!this.ignoreMailEnabledCase && !this.IsMailEnabled(child)) { failure = ExpansionFailure.NotMailEnabled; flag = true; } if (!flag && !this.IsAuthorized(child)) { failure = ExpansionFailure.NotAuthorized; flag = true; } if (!flag && expansionType != ExpansionType.None && this.IsLoopDetected(child, parent)) { failure = ExpansionFailure.LoopDetected; flag = true; } if (flag) { return(ADRecipientExpansion.InvokeFailureDelegate(handleFailure, failure, child, expansionType, parent) != ExpansionControl.Terminate); } ExpansionControl expansionControl = ExpansionControl.Continue; if (expansionType != ExpansionType.ContactChain) { expansionControl = ADRecipientExpansion.InvokeRecipientDelegate(handleRecipient, child, expansionType, parent); } if (expansionControl == ExpansionControl.Terminate) { return(false); } if (expansionControl != ExpansionControl.Skip && expansionType != ExpansionType.None) { expansionStack.Push(new ADRecipientExpansion.ExpandableEntry(child, expansionType, parent)); ExTraceGlobals.ADExpansionTracer.TraceDebug((long)this.GetHashCode(), "Recipient {0} pushed on the expansion stack", new object[] { child[ADObjectSchema.Id] }); } return(true); }
private ExpansionControl OnRecipientExtracted(ADRawEntry recipient, ExpansionType recipientExpansionType, ADRawEntry parent, ExpansionType parentExpansionType) { if (!this.AllVisitedAttendees.Add(recipient.Id)) { return(ExpansionControl.Skip); } if (recipientExpansionType != ExpansionType.GroupMembership) { AttendeeExtractor.DLExpansionHandler.AddOrganizerFilteredAttendee <ADObjectId>(this.IndividualAttendees, recipient.Id, new UserObject(recipient, this.Session), this.OrganizerParticipant, this.Session); return(ExpansionControl.Continue); } if (this.ExpandAnotherDL()) { return(ExpansionControl.Continue); } AttendeeExtractor.DLExpansionHandler.AddOrganizerFilteredAttendee <ADObjectId>(this.IndividualAttendees, recipient.Id, new UserObject(recipient, this.Session), this.OrganizerParticipant, this.Session); return(ExpansionControl.Skip); }
private bool ReadParams(int idx) { Debug.Assert(blockVersion >= 4); var expansion = ConvertExpansionAudio(bytes[idx++]); if (expansion < 0) { return(false); } var numChannels = BitConverter.ToInt32(bytes, idx); idx += sizeof(int); var machine = BitConverter.ToInt32(bytes, idx); idx += sizeof(int); idx += sizeof(int); // m_iEngineSpeed; idx += sizeof(int); // m_iVibratoStyle; if (blockVersion >= 4) { barLength = BitConverter.ToInt32(bytes, idx); idx += sizeof(int); idx += sizeof(int); // m_iSecondHighlight } var numN163Channels = 0; if (blockVersion >= 5) { if (expansion == ExpansionType.N163) { numN163Channels = BitConverter.ToInt32(bytes, idx); } idx += sizeof(int); } project.SetExpansionAudioMask(ExpansionType.GetMaskFromValue(expansion), numN163Channels); project.PalMode = machine == 1; if (numChannels != project.GetActiveChannelCount()) { Log.LogMessage(LogSeverity.Error, "Unexpected audio channel count."); return(false); } return(true); }
// Token: 0x06001AA8 RID: 6824 RVA: 0x0006FB70 File Offset: 0x0006DD70 private static ExpansionControl InvokeRecipientDelegate(ADRecipientExpansion.HandleRecipientDelegate handleRecipient, ADRawEntry recipient, ExpansionType expansionType, ADRecipientExpansion.ExpandableEntry parent) { if (handleRecipient == null) { return(ExpansionControl.Continue); } ExpansionType expansionType2 = (parent == null) ? ExpansionType.None : parent.ExpansionType; ExTraceGlobals.ADExpansionTracer.TraceDebug(0L, "Invoking recipient delegate: recipient={0}; expansion-type={1}; parent={2}; parent-expansion-type={3}", new object[] { recipient[ADObjectSchema.Id], ADRecipientExpansion.GetExpansionTypeString(expansionType), (parent == null) ? "<null>" : parent.Entry[ADObjectSchema.Id], ADRecipientExpansion.GetExpansionTypeString(expansionType2) }); ExpansionControl expansionControl = handleRecipient(recipient, expansionType, (parent == null) ? null : parent.Entry, expansionType2); ExTraceGlobals.ADExpansionTracer.TraceDebug <string>(0L, "Delegate returned '{0}'", ADRecipientExpansion.GetExpansionControlString(expansionControl)); return(expansionControl); }
private ExpansionControl OnRecipient(ADRawEntry recipient, ExpansionType recipientExpansionType, ADRawEntry parent, ExpansionType parentExpansionType) { RoleAssignmentExpansion.UserNode item = this.AddORGetNode(recipient.Id); if (parent != null) { RoleAssignmentExpansion.UserNode userNode = this.AddORGetNode(parent.Id); if (!userNode.Children.Contains(item)) { userNode.Children.Add(item); } } if (recipientExpansionType != ExpansionType.GroupMembership && !this.usersList.Contains(recipient.Id)) { this.usersList.Add(recipient.Id); } if (recipientExpansionType == ExpansionType.None || recipientExpansionType == ExpansionType.GroupMembership) { return(ExpansionControl.Continue); } return(ExpansionControl.Skip); }
public AuthChallengeData(ProtocolVersion protocol, GameType game, ExpansionType expansion, byte majorPatch, byte minorPatch, ClientBuild build, PlatformType platform, OperatingSystemType operatingSystem, LocaleType locale, IPAddress clientIp, string identity) : this() { //TODO: Very long ctor. Maybe use builder in the future. Protocol = protocol; Game = game; Expansion = expansion; MajorPatchVersion = majorPatch; MinorPatchVersion = minorPatch; Build = build; Platform = platform; OperatingSystem = operatingSystem; Locale = locale; //Convert IP to bytes //TODO: Check size ipAddressInBytes = clientIp.GetAddressBytes(); //Trinitycore expects an int32 but an array of bytes should work Identity = identity; //Now we can compute size. Jackpoz does this with a literal. Trinitycore uses constants. I think we'll just use a literal though. size = (ushort)(identity.Length + 30); }
private void Properties_PropertyChanged(PropertyPage props, int idx, object value) { if (idx == 0) { var expansion = ExpansionType.GetValueForName((string)value); var newChannelCount = Channel.GetChannelCountForExpansion(expansion); var oldChannelCount = channelSources.Length; var maxChannelIndex = 3; for (int i = 0; i < oldChannelCount; i++) { if (channelSources[i].type == MidiSourceType.Channel && channelSources[i].index != 9) { maxChannelIndex = Math.Max(maxChannelIndex, channelSources[i].index); } } Array.Resize(ref channelSources, newChannelCount); for (int i = oldChannelCount; i < newChannelCount; i++) { channelSources[i] = new MidiFileReader.MidiSource() { index = maxChannelIndex++ }; } UpdateListView(); bool allowPal = expansion == ExpansionType.None; dialog.Properties.SetPropertyEnabled(4, allowPal); if (!allowPal) { dialog.Properties.SetPropertyValue(4, false); } } }
// Token: 0x06001AC2 RID: 6850 RVA: 0x000704E2 File Offset: 0x0006E6E2 public ExpandableEntry(ADRawEntry entry, ExpansionType expansionType, ADRecipientExpansion.ExpandableEntry parent) { this.entry = entry; this.expansionType = expansionType; this.parent = parent; }
// Token: 0x06001AAA RID: 6826 RVA: 0x0006FCC7 File Offset: 0x0006DEC7 private static string GetExpansionTypeString(ExpansionType expansionType) { return(ADRecipientExpansion.expansionTypeStrings[(int)expansionType]); }
private ExpansionControl OnFailure(ExpansionFailure failure, ADRawEntry recipient, ExpansionType recipientExpansionType, ADRawEntry parent, ExpansionType parentExpansionType) { return(ExpansionControl.Continue); }
public Expansion(ExpansionType expansionType, string name) { this.expansionType = expansionType; this.name = name; }
public Project Load(string filename) { #if !DEBUG try #endif { var lines = File.ReadAllLines(filename); var parameters = new Dictionary <string, string>(); var project = (Project)null; var instrument = (Instrument)null; var arpeggio = (Arpeggio)null; var song = (Song)null; var channel = (Channel)null; var pattern = (Pattern)null; var version = "0.0.0"; var isVersion230OrNewer = false; var isVersion240OrNewer = false; var beatLengthAttributeName = "BeatLength"; foreach (var line in lines) { var cmd = SplitLine(line.Trim(), ref parameters); switch (cmd) { case "Project": { project = new Project(); parameters.TryGetValue("Version", out version); if (parameters.TryGetValue("Name", out var name)) { project.Name = name; } if (parameters.TryGetValue("Author", out var author)) { project.Author = author; } if (parameters.TryGetValue("Copyright", out var copyright)) { project.Copyright = copyright; } if (parameters.TryGetValue("Expansion", out var expansion)) { project.SetExpansionAudio(ExpansionType.GetValueForShortName(expansion)); } if (parameters.TryGetValue("TempoMode", out var tempoMode)) { project.TempoMode = TempoType.GetValueForName(tempoMode); } if (parameters.TryGetValue("PAL", out var pal)) { project.PalMode = bool.Parse(pal); } isVersion230OrNewer = string.CompareOrdinal(version, "2.3.0") >= 0; isVersion240OrNewer = string.CompareOrdinal(version, "2.4.0") >= 0; if (!isVersion230OrNewer) { beatLengthAttributeName = "BarLength"; } break; } case "DPCMSample": { var str = parameters["Data"]; var data = new byte[str.Length / 2]; for (int i = 0; i < data.Length; i++) { data[i] = Convert.ToByte(str.Substring(i * 2, 2), 16); } var sample = project.CreateDPCMSampleFromDmcData(parameters["Name"], data); // Any DPCM processing options are no longer supported in 2.4.0 and newer. We just import/export the processed DMC data. if (!isVersion240OrNewer && parameters.TryGetValue("ReverseBits", out var reverseBitStr)) { sample.ReverseBits = bool.Parse(reverseBitStr); sample.Process(); } break; } case "DPCMMapping": { var pitch = 15; var loop = false; if (parameters.TryGetValue("Pitch", out var pitchStr)) { pitch = int.Parse(pitchStr); } if (parameters.TryGetValue("Loop", out var loopStr)) { loop = bool.Parse(loopStr); } project.MapDPCMSample(Note.FromFriendlyName(parameters["Note"]), project.GetSample(parameters["Sample"]), pitch, loop); break; } case "Instrument": { instrument = project.CreateInstrument(parameters.TryGetValue("Expansion", out _) ? project.ExpansionAudio : ExpansionType.None, parameters["Name"]); if (instrument.ExpansionType == ExpansionType.Fds) { if (parameters.TryGetValue("FdsWavePreset", out var wavPresetStr)) { instrument.FdsWavePreset = (byte)WavePresetType.GetValueForName(wavPresetStr); } if (parameters.TryGetValue("FdsModPreset", out var modPresetStr)) { instrument.FdsWavePreset = (byte)WavePresetType.GetValueForName(modPresetStr); } if (parameters.TryGetValue("FdsMasterVolume", out var masterVolumeStr)) { instrument.FdsMasterVolume = byte.Parse(masterVolumeStr); } if (parameters.TryGetValue("FdsModSpeed", out var fdsModSpeedStr)) { instrument.FdsModSpeed = ushort.Parse(fdsModSpeedStr); } if (parameters.TryGetValue("FdsModDepth", out var fdsModDepthStr)) { instrument.FdsModDepth = byte.Parse(fdsModDepthStr); } if (parameters.TryGetValue("FdsModDelay", out var fdsModDelayStr)) { instrument.FdsModDelay = byte.Parse(fdsModDelayStr); } } else if (instrument.ExpansionType == ExpansionType.N163) { if (parameters.TryGetValue("N163WavePreset", out var wavPresetStr)) { instrument.N163WavePreset = (byte)WavePresetType.GetValueForName(wavPresetStr); } if (parameters.TryGetValue("N163WaveSize", out var n163WavSizeStr)) { instrument.N163WaveSize = byte.Parse(n163WavSizeStr); } if (parameters.TryGetValue("N163WavePos", out var n163WavPosStr)) { instrument.N163WavePos = byte.Parse(n163WavPosStr); } } else if (instrument.ExpansionType == ExpansionType.Vrc7) { if (parameters.TryGetValue("Vrc7Patch", out var vrc7PatchStr)) { instrument.Vrc7Patch = byte.Parse(vrc7PatchStr); } if (instrument.Vrc7Patch == Vrc7InstrumentPatch.Custom) { for (int i = 0; i < 8; i++) { if (parameters.TryGetValue($"Vrc7Reg{i}", out var regStr)) { instrument.Vrc7PatchRegs[i] = byte.Parse(regStr); } } } } break; } case "Arpeggio": { arpeggio = project.CreateArpeggio(parameters["Name"]); arpeggio.Envelope.Length = int.Parse(parameters["Length"]); if (parameters.TryGetValue("Loop", out var loopStr)) { arpeggio.Envelope.Loop = int.Parse(loopStr); } var values = parameters["Values"].Split(','); for (int j = 0; j < values.Length; j++) { arpeggio.Envelope.Values[j] = sbyte.Parse(values[j]); } break; } case "Envelope": { var env = instrument.Envelopes[EnvelopeType.GetValueForShortName(parameters["Type"])]; if (env != null) { if (env.CanResize) { env.Length = int.Parse(parameters["Length"]); } if (parameters.TryGetValue("Loop", out var loopStr)) { env.Loop = int.Parse(loopStr); } if (parameters.TryGetValue("Release", out var releaseStr)) { env.Release = int.Parse(releaseStr); } if (parameters.TryGetValue("Relative", out var relativeStr)) { env.Relative = bool.Parse(relativeStr); } var values = parameters["Values"].Split(','); for (int j = 0; j < values.Length; j++) { env.Values[j] = sbyte.Parse(values[j]); } } break; } case "Song": { song = project.CreateSong(parameters["Name"]); song.SetLength(int.Parse(parameters["Length"])); song.SetBeatLength(int.Parse(parameters[beatLengthAttributeName])); song.SetLoopPoint(int.Parse(parameters["LoopPoint"])); if (song.UsesFamiTrackerTempo) { song.SetDefaultPatternLength(int.Parse(parameters["PatternLength"])); song.FamitrackerTempo = int.Parse(parameters["FamiTrackerTempo"]); song.FamitrackerSpeed = int.Parse(parameters["FamiTrackerSpeed"]); } else { var noteLength = int.Parse(parameters["NoteLength"]); song.ResizeNotes(noteLength, false); song.SetBeatLength(song.BeatLength * noteLength); song.SetDefaultPatternLength(int.Parse(parameters["PatternLength"]) * noteLength); } break; } case "PatternCustomSettings": { if (project.UsesFamiTrackerTempo) { var beatLength = song.BeatLength; if (parameters.TryGetValue(beatLengthAttributeName, out var beatLengthStr)) { beatLength = int.Parse(beatLengthStr); } song.SetPatternCustomSettings(int.Parse(parameters["Time"]), int.Parse(parameters["Length"]), beatLength); } else { var patternLength = int.Parse(parameters["Length"]); var noteLength = int.Parse(parameters["NoteLength"]); var beatLength = int.Parse(parameters[beatLengthAttributeName]); song.SetPatternCustomSettings(int.Parse(parameters["Time"]), patternLength * noteLength, beatLength * noteLength, noteLength); } break; } case "Channel": { var channelType = ChannelType.GetValueForShortName(parameters["Type"]); channel = song.GetChannelByType(channelType); break; } case "Pattern": { pattern = channel.CreatePattern(parameters["Name"]); break; } case "Note": { var time = int.Parse(parameters["Time"]); var note = pattern.GetOrCreateNoteAt(time); if (parameters.TryGetValue("Value", out var valueStr)) { note.Value = (byte)Note.FromFriendlyName(valueStr); } if (parameters.TryGetValue("Instrument", out var instStr) && channel.SupportsInstrument(project.GetInstrument(instStr))) { note.Instrument = project.GetInstrument(instStr); } if (parameters.TryGetValue("Arpeggio", out var arpStr) && channel.SupportsArpeggios) { note.Arpeggio = project.GetArpeggio(arpStr); } if (parameters.TryGetValue("SlideTarget", out var slideStr) && channel.SupportsSlideNotes) { note.SlideNoteTarget = (byte)Note.FromFriendlyName(slideStr); } if (parameters.TryGetValue("Attack", out var attackStr)) { note.HasAttack = bool.Parse(attackStr); } if (parameters.TryGetValue("Volume", out var volumeStr) && channel.SupportsEffect(Note.EffectVolume)) { note.Volume = byte.Parse(volumeStr); } if (parameters.TryGetValue("VibratoSpeed", out var vibSpeedStr) && channel.SupportsEffect(Note.EffectVibratoSpeed)) { note.VibratoSpeed = byte.Parse(vibSpeedStr); } if (parameters.TryGetValue("VibratoDepth", out var vibDepthStr) && channel.SupportsEffect(Note.EffectVibratoDepth)) { note.VibratoDepth = byte.Parse(vibDepthStr); } if (parameters.TryGetValue("Speed", out var speedStr) && channel.SupportsEffect(Note.EffectSpeed)) { note.Speed = byte.Parse(speedStr); } if (parameters.TryGetValue("FinePitch", out var finePitchStr) && channel.SupportsEffect(Note.EffectFinePitch)) { note.FinePitch = sbyte.Parse(finePitchStr); } if (parameters.TryGetValue("FdsModSpeed", out var modSpeedStr) && channel.SupportsEffect(Note.EffectFdsModSpeed)) { note.FdsModSpeed = ushort.Parse(modSpeedStr); } if (parameters.TryGetValue("FdsModDepth", out var modDepthStr) && channel.SupportsEffect(Note.EffectFdsModDepth)) { note.FdsModDepth = byte.Parse(modDepthStr); } if (parameters.TryGetValue("DutyCycle", out var dutyCycleStr) && channel.SupportsEffect(Note.EffectDutyCycle)) { note.DutyCycle = byte.Parse(dutyCycleStr); } if (parameters.TryGetValue("NoteDelay", out var noteDelayStr) && channel.SupportsEffect(Note.EffectNoteDelay)) { note.NoteDelay = byte.Parse(noteDelayStr); } if (parameters.TryGetValue("CutDelay", out var cutDelayStr) && channel.SupportsEffect(Note.EffectCutDelay)) { note.CutDelay = byte.Parse(cutDelayStr); } break; } case "PatternInstance": { var time = int.Parse(parameters["Time"]); channel.PatternInstances[time] = channel.GetPattern(parameters["Pattern"]); break; } } } project.SortEverything(); return(project); } #if !DEBUG catch (Exception e) { Log.LogMessage(LogSeverity.Error, "Please contact the developer on GitHub!"); Log.LogMessage(LogSeverity.Error, e.Message); Log.LogMessage(LogSeverity.Error, e.StackTrace); return(null); } #endif }
private ExpansionControl OnFailureEncountered(ExpansionFailure failure, ADRawEntry recipient, ExpansionType recipientExpansionType, ADRawEntry parent, ExpansionType parentExpansionType) { this.AllVisitedAttendees.Add(recipient.Id); return(ExpansionControl.Skip); }
public AirportExpansion(ExpansionType type, DateTime date, Boolean notifyOnChange) { Type = type; Date = date; NotifyOnChange = notifyOnChange; }
private ExpansionControl OnFailure(ExpansionFailure failure, ADRawEntry recipient, ExpansionType recipientExpansionType, ADRawEntry parent, ExpansionType parentExpansionType) { if (failure == ExpansionFailure.LoopDetected) { return(ExpansionControl.Skip); } return(ExpansionControl.Continue); }
public Project Load(string filename) { #if !DEBUG try #endif { var lines = File.ReadAllLines(filename); var parameters = new Dictionary <string, string>(); var project = (Project)null; var instrument = (Instrument)null; var arpeggio = (Arpeggio)null; var song = (Song)null; var channel = (Channel)null; var pattern = (Pattern)null; SetInvariantCulture(); foreach (var line in lines) { var cmd = SplitLine(line.Trim(), ref parameters); switch (cmd) { case "Project": { project = new Project(); parameters.TryGetValue("Version", out var version); if (parameters.TryGetValue("Name", out var name)) { project.Name = name; } if (parameters.TryGetValue("Author", out var author)) { project.Author = author; } if (parameters.TryGetValue("Copyright", out var copyright)) { project.Copyright = copyright; } if (parameters.TryGetValue("TempoMode", out var tempoMode)) { project.TempoMode = TempoType.GetValueForName(tempoMode); } if (parameters.TryGetValue("PAL", out var pal)) { project.PalMode = bool.Parse(pal); } if (parameters.TryGetValue("Expansions", out var expansions)) { var expansionMask = 0; var expansionStrings = expansions.Split(','); foreach (var s in expansionStrings) { var exp = ExpansionType.GetValueForShortName(s.Trim()); expansionMask |= ExpansionType.GetMaskFromValue(exp); } var numN163Channels = 1; if ((expansionMask & ExpansionType.N163Mask) != 0 && parameters.TryGetValue("NumN163Channels", out var numN163ChannelsStr)) { numN163Channels = int.Parse(numN163ChannelsStr); } project.SetExpansionAudioMask(expansionMask, numN163Channels); } if (!version.StartsWith("3.2")) { Log.LogMessage(LogSeverity.Error, "File was created with an incompatible version of FamiStudio. The text format is only compatible with the current version."); return(null); } break; } case "DPCMSample": { var str = parameters["Data"]; var data = new byte[str.Length / 2]; for (int i = 0; i < data.Length; i++) { data[i] = Convert.ToByte(str.Substring(i * 2, 2), 16); } var sample = project.CreateDPCMSampleFromDmcData(parameters["Name"], data); break; } case "DPCMMapping": { var pitch = 15; var loop = false; if (parameters.TryGetValue("Pitch", out var pitchStr)) { pitch = int.Parse(pitchStr); } if (parameters.TryGetValue("Loop", out var loopStr)) { loop = bool.Parse(loopStr); } project.MapDPCMSample(Note.FromFriendlyName(parameters["Note"]), project.GetSample(parameters["Sample"]), pitch, loop); break; } case "Instrument": { var instrumentExp = ExpansionType.None; if (parameters.TryGetValue("Expansion", out var instrumentExpStr)) { instrumentExp = ExpansionType.GetValueForShortName(instrumentExpStr); } instrument = project.CreateInstrument(instrumentExp, parameters["Name"]); if (instrument.IsFdsInstrument) { if (parameters.TryGetValue("FdsWavePreset", out var wavPresetStr)) { instrument.FdsWavePreset = (byte)WavePresetType.GetValueForName(wavPresetStr); } if (parameters.TryGetValue("FdsModPreset", out var modPresetStr)) { instrument.FdsWavePreset = (byte)WavePresetType.GetValueForName(modPresetStr); } if (parameters.TryGetValue("FdsMasterVolume", out var masterVolumeStr)) { instrument.FdsMasterVolume = byte.Parse(masterVolumeStr); } if (parameters.TryGetValue("FdsModSpeed", out var fdsModSpeedStr)) { instrument.FdsModSpeed = ushort.Parse(fdsModSpeedStr); } if (parameters.TryGetValue("FdsModDepth", out var fdsModDepthStr)) { instrument.FdsModDepth = byte.Parse(fdsModDepthStr); } if (parameters.TryGetValue("FdsModDelay", out var fdsModDelayStr)) { instrument.FdsModDelay = byte.Parse(fdsModDelayStr); } } else if (instrument.IsN163Instrument) { if (parameters.TryGetValue("N163WavePreset", out var wavPresetStr)) { instrument.N163WavePreset = (byte)WavePresetType.GetValueForName(wavPresetStr); } if (parameters.TryGetValue("N163WaveSize", out var n163WavSizeStr)) { instrument.N163WaveSize = byte.Parse(n163WavSizeStr); } if (parameters.TryGetValue("N163WavePos", out var n163WavPosStr)) { instrument.N163WavePos = byte.Parse(n163WavPosStr); } } else if (instrument.IsVrc6Instrument) { if (parameters.TryGetValue("Vrc6SawMasterVolume", out var vrc6SawVolumeStr)) { instrument.Vrc6SawMasterVolume = (byte)Vrc6SawMasterVolumeType.GetValueForName(vrc6SawVolumeStr); } } else if (instrument.IsVrc7Instrument) { if (parameters.TryGetValue("Vrc7Patch", out var vrc7PatchStr)) { instrument.Vrc7Patch = byte.Parse(vrc7PatchStr); } if (instrument.Vrc7Patch == Vrc7InstrumentPatch.Custom) { for (int i = 0; i < 8; i++) { if (parameters.TryGetValue($"Vrc7Reg{i}", out var regStr)) { instrument.Vrc7PatchRegs[i] = byte.Parse(regStr); } } } } break; } case "Arpeggio": { arpeggio = project.CreateArpeggio(parameters["Name"]); arpeggio.Envelope.Length = int.Parse(parameters["Length"]); if (parameters.TryGetValue("Loop", out var loopStr)) { arpeggio.Envelope.Loop = int.Parse(loopStr); } var values = parameters["Values"].Split(','); for (int j = 0; j < values.Length; j++) { arpeggio.Envelope.Values[j] = sbyte.Parse(values[j]); } break; } case "Envelope": { var env = instrument.Envelopes[EnvelopeType.GetValueForShortName(parameters["Type"])]; if (env != null) { if (env.CanResize) { env.Length = int.Parse(parameters["Length"]); } if (parameters.TryGetValue("Loop", out var loopStr)) { env.Loop = int.Parse(loopStr); } if (parameters.TryGetValue("Release", out var releaseStr)) { env.Release = int.Parse(releaseStr); } if (parameters.TryGetValue("Relative", out var relativeStr)) { env.Relative = bool.Parse(relativeStr); } var values = parameters["Values"].Split(','); for (int j = 0; j < values.Length; j++) { env.Values[j] = sbyte.Parse(values[j]); } } break; } case "Song": { song = project.CreateSong(parameters["Name"]); song.SetLength(int.Parse(parameters["Length"])); song.SetBeatLength(int.Parse(parameters["BeatLength"])); song.SetLoopPoint(int.Parse(parameters["LoopPoint"])); if (song.UsesFamiTrackerTempo) { song.SetDefaultPatternLength(int.Parse(parameters["PatternLength"])); song.FamitrackerTempo = int.Parse(parameters["FamiTrackerTempo"]); song.FamitrackerSpeed = int.Parse(parameters["FamiTrackerSpeed"]); } else { var noteLength = int.Parse(parameters["NoteLength"]); var groove = parameters["Groove"].Split('-').Select(Int32.Parse).ToArray(); var groovePaddingMode = GroovePaddingType.GetValueForName(parameters["GroovePaddingMode"]); if (!FamiStudioTempoUtils.ValidateGroove(groove) || Utils.Min(groove) != noteLength) { Log.LogMessage(LogSeverity.Error, "Invalid tempo settings."); return(null); } song.ChangeFamiStudioTempoGroove(groove, false); song.SetBeatLength(song.BeatLength * noteLength); song.SetDefaultPatternLength(int.Parse(parameters["PatternLength"]) * noteLength); song.SetGroovePaddingMode(groovePaddingMode); } break; } case "PatternCustomSettings": { if (project.UsesFamiTrackerTempo) { var beatLength = song.BeatLength; if (parameters.TryGetValue("BeatLength", out var beatLengthStr)) { beatLength = int.Parse(beatLengthStr); } song.SetPatternCustomSettings(int.Parse(parameters["Time"]), int.Parse(parameters["Length"]), beatLength); } else { var patternLength = int.Parse(parameters["Length"]); var noteLength = int.Parse(parameters["NoteLength"]); var beatLength = int.Parse(parameters["BeatLength"]); var groove = parameters["Groove"].Split('-').Select(Int32.Parse).ToArray(); var groovePaddingMode = GroovePaddingType.GetValueForName(parameters["GroovePaddingMode"]); if (!FamiStudioTempoUtils.ValidateGroove(groove) || Utils.Min(groove) != noteLength) { Log.LogMessage(LogSeverity.Error, "Invalid tempo settings."); return(null); } song.SetPatternCustomSettings(int.Parse(parameters["Time"]), patternLength * noteLength, beatLength * noteLength, groove, groovePaddingMode); } break; } case "Channel": { var channelType = ChannelType.GetValueForShortName(parameters["Type"]); channel = song.GetChannelByType(channelType); break; } case "Pattern": { pattern = channel.CreatePattern(parameters["Name"]); break; } case "Note": { var time = int.Parse(parameters["Time"]); var note = pattern.GetOrCreateNoteAt(time); if (parameters.TryGetValue("Value", out var valueStr)) { note.Value = (byte)Note.FromFriendlyName(valueStr); } if (note.IsMusical && parameters.TryGetValue("Duration", out var durationStr)) { note.Duration = int.Parse(durationStr); } else if (note.IsStop) { note.Duration = 1; } if (note.IsMusical && parameters.TryGetValue("Release", out var releaseStr)) { note.Release = int.Parse(releaseStr); } if (note.IsMusical && parameters.TryGetValue("Instrument", out var instStr) && channel.SupportsInstrument(project.GetInstrument(instStr))) { note.Instrument = project.GetInstrument(instStr); } if (note.IsMusical && parameters.TryGetValue("Arpeggio", out var arpStr) && channel.SupportsArpeggios) { note.Arpeggio = project.GetArpeggio(arpStr); } if (note.IsMusical && parameters.TryGetValue("SlideTarget", out var slideStr) && channel.SupportsSlideNotes) { note.SlideNoteTarget = (byte)Note.FromFriendlyName(slideStr); } if (note.IsMusical && parameters.TryGetValue("Attack", out var attackStr)) { note.HasAttack = bool.Parse(attackStr); } if (parameters.TryGetValue("Volume", out var volumeStr) && channel.SupportsEffect(Note.EffectVolume)) { note.Volume = byte.Parse(volumeStr); } if (parameters.TryGetValue("VolumeSlideTarget", out var volumeSlideStr) && channel.SupportsEffect(Note.EffectVolumeSlide)) { note.VolumeSlideTarget = byte.Parse(volumeSlideStr); } if (parameters.TryGetValue("VibratoSpeed", out var vibSpeedStr) && channel.SupportsEffect(Note.EffectVibratoSpeed)) { note.VibratoSpeed = byte.Parse(vibSpeedStr); } if (parameters.TryGetValue("VibratoDepth", out var vibDepthStr) && channel.SupportsEffect(Note.EffectVibratoDepth)) { note.VibratoDepth = byte.Parse(vibDepthStr); } if (parameters.TryGetValue("Speed", out var speedStr) && channel.SupportsEffect(Note.EffectSpeed)) { note.Speed = byte.Parse(speedStr); } if (parameters.TryGetValue("FinePitch", out var finePitchStr) && channel.SupportsEffect(Note.EffectFinePitch)) { note.FinePitch = sbyte.Parse(finePitchStr); } if (parameters.TryGetValue("FdsModSpeed", out var modSpeedStr) && channel.SupportsEffect(Note.EffectFdsModSpeed)) { note.FdsModSpeed = ushort.Parse(modSpeedStr); } if (parameters.TryGetValue("FdsModDepth", out var modDepthStr) && channel.SupportsEffect(Note.EffectFdsModDepth)) { note.FdsModDepth = byte.Parse(modDepthStr); } if (parameters.TryGetValue("DutyCycle", out var dutyCycleStr) && channel.SupportsEffect(Note.EffectDutyCycle)) { note.DutyCycle = byte.Parse(dutyCycleStr); } if (parameters.TryGetValue("NoteDelay", out var noteDelayStr) && channel.SupportsEffect(Note.EffectNoteDelay)) { note.NoteDelay = byte.Parse(noteDelayStr); } if (parameters.TryGetValue("CutDelay", out var cutDelayStr) && channel.SupportsEffect(Note.EffectCutDelay)) { note.CutDelay = byte.Parse(cutDelayStr); } break; } case "PatternInstance": { var time = int.Parse(parameters["Time"]); channel.PatternInstances[time] = channel.GetPattern(parameters["Pattern"]); break; } } } project.SortEverything(false); ResetCulture(); return(project); } #if !DEBUG catch (Exception e) { Log.LogMessage(LogSeverity.Error, "Please contact the developer on GitHub!"); Log.LogMessage(LogSeverity.Error, e.Message); Log.LogMessage(LogSeverity.Error, e.StackTrace); ResetCulture(); return(null); } #endif }