示例#1
0
文件: frmMain.cs 项目: Gargash/fo2238
        private void FindPidsInMap( BackgroundWorker worker, string filename, List<Tuple<int, int>> pids )
        {
            if( !filename.HaveExtension( "fomap" ) )
                return;

            FOnlineMap fomap = FOnlineMap.Load( filename, false, false, true );
            if( fomap == null )
                return;

            bool header = false;
            foreach( Dictionary<string, string> mapObject in fomap.Objects )
            {
                //mapObject["ProtoId"] = "1";

                string tmp;

                int objectType = -1;
                if( !mapObject.TryGetValue( "MapObjType", out tmp ) ||
                    !int.TryParse( tmp, out objectType ) )
                    objectType = -1;

                int objectPid;
                if( mapObject.TryGetValue( "ProtoId", out tmp ) &&
                    int.TryParse( tmp, out objectPid ) &&
                    pids.IsWantedObject( objectType, objectPid ) )
                {
                    int hx, hy;
                    if( mapObject.TryGetValue( "MapX", out tmp ) &&
                        int.TryParse( tmp, out hx ) &&
                        mapObject.TryGetValue( "MapY", out tmp ) &&
                        int.TryParse( tmp, out hy ) )
                    {
                        if( !header )
                        {
                            if( resultsLog.Text.Length > 0 )
                                worker.ReportProgress( 0, "\r\n" );
                            worker.SendResult( string.Format( "{0} ({1})\r\n\r\n",
                                "?", Path.GetFileName( filename ) ) );
                            header = true;
                        }
                        string typeString = "";

                        if( objectType == objectCritter )
                            typeString = "Critter";
                        else if( objectType == objectItem )
                            typeString = "Item";
                        else if( objectType == objectScenery )
                            typeString = "Scenery";

                        string objectPidName = null;
                        if( objectType == objectItem || objectType == objectScenery )
                            objectPidName = itemPids.Defines.FindKeyByValue( objectPid );

                        worker.SendResult( string.Format( "\t[Hex {0,3},{1,3}] {2}{3}\r\n",
                            hx, hy,
                            typeString.Length > 0 ? "(" + typeString + ") " : "",
                            objectPidName != null ? objectPidName + " <" + objectPid + ">" : "" + objectPid
                            ) );

                        worker.SendResult( "Maps"
                           + "|" + Path.GetFileName( filename )
                           + "|" + (typeString == "Scenery" ? "Sceneries" : typeString + "s")
                           + "|" + (objectPidName != null ? objectPidName + " <" + objectPid + ">" : "" + objectPid)
                           + "|Hex " + hx + "," + hy

                           );
                    }
                }
            }
        }
示例#2
0
        private void FindPidsInMap(BackgroundWorker worker, string filename, List <Tuple <int, int> > pids)
        {
            if (!filename.HaveExtension("fomap"))
            {
                return;
            }

            FOnlineMap fomap = FOnlineMap.Load(filename, false, false, true);

            if (fomap == null)
            {
                return;
            }

            bool header = false;

            foreach (Dictionary <string, string> mapObject in fomap.Objects)
            {
                //mapObject["ProtoId"] = "1";

                string tmp;

                int objectType = -1;
                if (!mapObject.TryGetValue("MapObjType", out tmp) ||
                    !int.TryParse(tmp, out objectType))
                {
                    objectType = -1;
                }

                int objectPid;
                if (mapObject.TryGetValue("ProtoId", out tmp) &&
                    int.TryParse(tmp, out objectPid) &&
                    pids.IsWantedObject(objectType, objectPid))
                {
                    int hx, hy;
                    if (mapObject.TryGetValue("MapX", out tmp) &&
                        int.TryParse(tmp, out hx) &&
                        mapObject.TryGetValue("MapY", out tmp) &&
                        int.TryParse(tmp, out hy))
                    {
                        if (!header)
                        {
                            if (resultsLog.Text.Length > 0)
                            {
                                worker.ReportProgress(0, "\r\n");
                            }
                            worker.SendResult(string.Format("{0} ({1})\r\n\r\n",
                                                            "?", Path.GetFileName(filename)));
                            header = true;
                        }
                        string typeString = "";

                        if (objectType == objectCritter)
                        {
                            typeString = "Critter";
                        }
                        else if (objectType == objectItem)
                        {
                            typeString = "Item";
                        }
                        else if (objectType == objectScenery)
                        {
                            typeString = "Scenery";
                        }

                        string objectPidName = null;
                        if (objectType == objectItem || objectType == objectScenery)
                        {
                            objectPidName = itemPids.Defines.FindKeyByValue(objectPid);
                        }

                        worker.SendResult(string.Format("\t[Hex {0,3},{1,3}] {2}{3}\r\n",
                                                        hx, hy,
                                                        typeString.Length > 0 ? "(" + typeString + ") " : "",
                                                        objectPidName != null ? objectPidName + " <" + objectPid + ">" : "" + objectPid
                                                        ));

                        worker.SendResult("Maps"
                                          + "|" + Path.GetFileName(filename)
                                          + "|" + (typeString == "Scenery" ? "Sceneries" : typeString + "s")
                                          + "|" + (objectPidName != null ? objectPidName + " <" + objectPid + ">" : "" + objectPid)
                                          + "|Hex " + hx + "," + hy

                                          );
                    }
                }
            }
        }
示例#3
0
文件: frmMain.cs 项目: Gargash/fo2238
        private void FindPidsInDialog( BackgroundWorker worker, string filename, List<Tuple<int, int>> pids )
        {
            if( !filename.HaveExtension( "fodlg" ) )
                return;

            DialogParser fodlg = new DialogParser( filename );
            if( fodlg == null )
                return;

            if( fodlg.Parse() )
            {
                bool header = false;
                string headerText = "? (" + Path.GetFileName( filename ) + ")\r\n\r\n";
                Dialog dialog = fodlg.GetDialog();
                if( dialog == null )
                    return;

                string lNode = "" + dialog.Nodes.Count.ToString().Length;
                foreach( Node node in dialog.Nodes )
                {
                    int answerId = 0;
                    string lAnswer = "" + node.Answers.Count.ToString().Length;
                    foreach( Answer answer in node.Answers )
                    {
                        answerId++;
                        int demandId = 0;
                        int resultId = 0;
                        string lDemand = "" + answer.Demands.Count.ToString().Length;
                        string lResult = "" + answer.Results.Count.ToString().Length;
                        foreach( Demand demand in answer.Demands )
                        {
                            demandId++;
                            if( demand.Item != null )
                            {
                                int pid = -1;
                                if( itemPids.Defines.TryGetValue( demand.Item.PidDefine, out pid ) &&
                                    pids.IsWantedObject( objectItem, pid ) )
                                {
                                    if( !header )
                                    {
                                        if( resultsLog.Text.Length > 0 )
                                            worker.SendResult( "\r\n" );
                                        worker.SendResult( headerText );
                                        header = true;
                                    }
                                    worker.SendResult( string.Format( "\t[Node {0," + lNode + "} Answer {1," + lAnswer + "} Demand {2," + lDemand + "}] {3} {4} {5}\r\n",
                                        node.Id,
                                        answerId,
                                        demandId,
                                        demand.Item.PidDefine,
                                        demand.Operator == "=" ? "==" : demand.Operator,
                                        demand.Value ) );

                                    worker.SendResult( "Dialogs"
                                        + "|" + Path.GetFileName( filename )
                                        + "|Node " + node.Id
                                            + "^" + node.Text["engl"]
                                        + "|Answer " + answerId
                                            + "^" + answer.Text["engl"]
                                        + "|Demand " + demandId + ": "
                                            + demand.Item.PidDefine + " "
                                            + (demand.Operator == "=" ? "==" : demand.Operator) + " "
                                            + demand.Value );
                                }
                            }
                        }
                        foreach( Result result in answer.Results )
                        {
                            resultId++;
                            if( result.Item != null )
                            {
                                int pid = -1;
                                if( itemPids.Defines.TryGetValue( result.Item.PidDefine, out pid ) &&
                                    pids.IsWantedObject( objectItem, pid ) )
                                {
                                    if( !header )
                                    {
                                        if( resultsLog.Text.Length > 0 )
                                            worker.SendResult( "\r\n" );
                                        worker.SendResult( headerText );
                                        header = true;
                                    }

                                    worker.SendResult( string.Format( "\t[Node {0," + lNode + "} Answer {1," + lAnswer + "} Result {2," + lResult + "}] {3} {4} {5}\r\n",
                                        node.Id,
                                        answerId,
                                        resultId,
                                        result.Item.PidDefine,
                                        result.Operator,
                                        result.Value ) );

                                    worker.SendResult( "Dialogs"
                                        + "|" + Path.GetFileName( filename )
                                        + "|Node " + node.Id
                                            + "^" + node.Text["engl"]
                                        + "|Answer " + answerId
                                            + "^" + answer.Text["engl"]
                                        + "|Result " + resultId + ": "
                                            + result.Item.PidDefine + " "
                                            + result.Operator + " "
                                            + result.Value );
                                }
                            }
                        }
                    }
                }
            }
        }
示例#4
0
        private void FindPidsInDialog(BackgroundWorker worker, string filename, List <Tuple <int, int> > pids)
        {
            if (!filename.HaveExtension("fodlg"))
            {
                return;
            }

            DialogParser fodlg = new DialogParser(filename);

            if (fodlg == null)
            {
                return;
            }

            if (fodlg.Parse())
            {
                bool   header     = false;
                string headerText = "? (" + Path.GetFileName(filename) + ")\r\n\r\n";
                Dialog dialog     = fodlg.GetDialog();
                if (dialog == null)
                {
                    return;
                }

                string lNode = "" + dialog.Nodes.Count.ToString().Length;
                foreach (Node node in dialog.Nodes)
                {
                    int    answerId = 0;
                    string lAnswer  = "" + node.Answers.Count.ToString().Length;
                    foreach (Answer answer in node.Answers)
                    {
                        answerId++;
                        int    demandId = 0;
                        int    resultId = 0;
                        string lDemand  = "" + answer.Demands.Count.ToString().Length;
                        string lResult  = "" + answer.Results.Count.ToString().Length;
                        foreach (Demand demand in answer.Demands)
                        {
                            demandId++;
                            if (demand.Item != null)
                            {
                                int pid = -1;
                                if (itemPids.Defines.TryGetValue(demand.Item.PidDefine, out pid) &&
                                    pids.IsWantedObject(objectItem, pid))
                                {
                                    if (!header)
                                    {
                                        if (resultsLog.Text.Length > 0)
                                        {
                                            worker.SendResult("\r\n");
                                        }
                                        worker.SendResult(headerText);
                                        header = true;
                                    }
                                    worker.SendResult(string.Format("\t[Node {0," + lNode + "} Answer {1," + lAnswer + "} Demand {2," + lDemand + "}] {3} {4} {5}\r\n",
                                                                    node.Id,
                                                                    answerId,
                                                                    demandId,
                                                                    demand.Item.PidDefine,
                                                                    demand.Operator == "=" ? "==" : demand.Operator,
                                                                    demand.Value));

                                    worker.SendResult("Dialogs"
                                                      + "|" + Path.GetFileName(filename)
                                                      + "|Node " + node.Id
                                                      + "^" + node.Text["engl"]
                                                      + "|Answer " + answerId
                                                      + "^" + answer.Text["engl"]
                                                      + "|Demand " + demandId + ": "
                                                      + demand.Item.PidDefine + " "
                                                      + (demand.Operator == "=" ? "==" : demand.Operator) + " "
                                                      + demand.Value);
                                }
                            }
                        }
                        foreach (Result result in answer.Results)
                        {
                            resultId++;
                            if (result.Item != null)
                            {
                                int pid = -1;
                                if (itemPids.Defines.TryGetValue(result.Item.PidDefine, out pid) &&
                                    pids.IsWantedObject(objectItem, pid))
                                {
                                    if (!header)
                                    {
                                        if (resultsLog.Text.Length > 0)
                                        {
                                            worker.SendResult("\r\n");
                                        }
                                        worker.SendResult(headerText);
                                        header = true;
                                    }

                                    worker.SendResult(string.Format("\t[Node {0," + lNode + "} Answer {1," + lAnswer + "} Result {2," + lResult + "}] {3} {4} {5}\r\n",
                                                                    node.Id,
                                                                    answerId,
                                                                    resultId,
                                                                    result.Item.PidDefine,
                                                                    result.Operator,
                                                                    result.Value));

                                    worker.SendResult("Dialogs"
                                                      + "|" + Path.GetFileName(filename)
                                                      + "|Node " + node.Id
                                                      + "^" + node.Text["engl"]
                                                      + "|Answer " + answerId
                                                      + "^" + answer.Text["engl"]
                                                      + "|Result " + resultId + ": "
                                                      + result.Item.PidDefine + " "
                                                      + result.Operator + " "
                                                      + result.Value);
                                }
                            }
                        }
                    }
                }
            }
        }