private void Compile_MUC(queItem qi) { if (mucom == null) { qi.doc.compileStatus = Document.EnmCompileStatus.Success; return; } string tempPath = Path.Combine(Common.GetApplicationDataFolder(true), "temp", Path.GetFileName(qi.doc.gwiFullPath)); string path1 = Path.GetDirectoryName(qi.doc.gwiFullPath); path1 = string.IsNullOrEmpty(path1) ? qi.doc.gwiFullPath : path1; string wrkPath = path1; msgBox.clear(); musicDriverInterface.MmlDatum[] mubData = null; bool isSuccess = true; try { mubData = mucom.compileFromSrcText(qi.srcText, wrkPath, Point.Empty); } catch { isSuccess = false; } if (mubData == null) { isSuccess = false; } qi.doc.compiledData = mubData; qi.doc.compileStatus = isSuccess ? Document.EnmCompileStatus.Success : Document.EnmCompileStatus.Failed; qi.doc.dstFileFormat = EnmFileFormat.MUB; musicDriverInterface.CompilerInfo ci = mucom.GetCompilerInfo(); List <msgInfo> lstMsgInfo = new List <msgInfo>(); if (ci != null && ci.errorList != null) { foreach (Tuple <int, int, string> mes in ci.errorList) { msgInfo mi = new msgInfo(null, "", mes.Item1, mes.Item2, 0, mes.Item3); lstMsgInfo.Add(mi); } } qi.doc.errBox = lstMsgInfo.ToArray(); lstMsgInfo.Clear(); if (ci != null && ci.warningList != null) { foreach (Tuple <int, int, string> mes in ci.warningList) { msgInfo mi = new msgInfo(null, "", mes.Item1, mes.Item2, 0, mes.Item3); lstMsgInfo.Add(mi); } } qi.doc.wrnBox = lstMsgInfo.ToArray(); }
private void Compile(queItem qi) { string ext = Path.GetExtension(qi.doc.gwiFullPath).ToLower(); switch (ext) { case ".gwi": Compile_GWI(qi); break; case ".muc": Compile_MUC(qi); break; } }
private void run() { while (queCompile.Count > 0) { queItem qi = queCompile.Dequeue(); switch (qi.cmd) { case enmCompileCommand.compile: if (qi.doc == null) { break; } if (qi.srcText == null) { qi.doc.compileStatus = Document.EnmCompileStatus.Success; //対象がない場合は無条件で成功 break; } Compile(qi); break; case enmCompileCommand.play: if (qi.doc == null) { break; } if (qi.doc.compileStatus != Document.EnmCompileStatus.Success) { break; } qi.callPlayBack?.Invoke(qi); break; } } runner = null; }
private void Compile_GWI(queItem qi) { object compileTargetDocument = qi.doc; string stPath = System.Windows.Forms.Application.StartupPath; string[] activeMMLTextLines = qi.srcText.Split(new string[] { "\r\n" }, StringSplitOptions.None); string tempPath = Path.Combine(Common.GetApplicationDataFolder(true), "temp", Path.GetFileName(qi.doc.gwiFullPath)); string path1 = Path.GetDirectoryName(qi.doc.gwiFullPath); path1 = string.IsNullOrEmpty(path1) ? qi.doc.gwiFullPath : path1; string wrkPath = path1; msgBox.clear(); Mml2vgm mv = new Mml2vgm(compileTargetDocument, activeMMLTextLines, tempPath, null, stPath, disp, wrkPath, false); mv.isIDE = true; int result = mv.Start(); qi.doc.errBox = msgBox.getErr(); qi.doc.wrnBox = msgBox.getWrn(); disp("\r\n"); disp(string.Format(msg.get("I0110"), msgBox.getErr().Length, msgBox.getWrn().Length)); if (mv.desVGM.loopSamples != -1) { disp(string.Format(msg.get("I0111"), mv.desVGM.loopClock)); if (mv.desVGM.info.format == enmFormat.VGM) { disp(string.Format(msg.get("I0112"), mv.desVGM.loopSamples, mv.desVGM.loopSamples / 44100L)); } else { disp(string.Format(msg.get("I0112"), mv.desVGM.loopSamples, mv.desVGM.loopSamples / (mv.desVGM.info.xgmSamplesPerSecond))); } } disp(string.Format(msg.get("I0113"), mv.desVGM.lClock)); if (mv.desVGM.info.format == enmFormat.VGM) { disp(string.Format(msg.get("I0114"), mv.desVGM.dSample, mv.desVGM.dSample / 44100L)); } else { disp(string.Format(msg.get("I0114"), mv.desVGM.dSample, mv.desVGM.dSample / (mv.desVGM.info.xgmSamplesPerSecond))); } disp(msg.get("I0126")); if (result == 0) { if (mv.desVGM.info.format == enmFormat.VGM) { uint EOFOffset = Common.getLE32(mv.desBuf, 0x04) + (uint)mv.desVGM.dummyCmdCounter; Common.SetLE32(mv.desBuf, 0x04, EOFOffset); uint GD3Offset = Common.getLE32(mv.desBuf, 0x14) + (uint)mv.desVGM.dummyCmdCounter; Common.SetLE32(mv.desBuf, 0x14, GD3Offset); uint LoopOffset = (uint)mv.desVGM.dummyCmdLoopOffset - 0x1c; Common.SetLE32(mv.desBuf, 0x1c, LoopOffset); } qi.doc.dstFileFormat = mv.desVGM.info.format == enmFormat.VGM ? EnmFileFormat.VGM : (mv.desVGM.info.format == enmFormat.XGM ? EnmFileFormat.XGM : EnmFileFormat.ZGM); qi.doc.compiledData = mv; qi.doc.compileStatus = Document.EnmCompileStatus.Success; } else { qi.doc.dstFileFormat = EnmFileFormat.unknown; qi.doc.compiledData = null; qi.doc.compileStatus = Document.EnmCompileStatus.Failed; } }