示例#1
0
            public void Read( BinaryReader R )
            {
                m_sortStage = (SORT_STAGE) R.ReadInt32();

                ReadListOfStrings( R, m_unknownParms );
            }
示例#2
0
            public void Parse( string _parms )
            {
                m_sortStage = SORT_STAGE.UNKNOWN;

                Parser	P = new Parser( _parms );
                while ( P.OK ) {
                    string	token = P.ReadString();
                    if ( token == null )
                        break;	// Done!
                    if ( token.StartsWith( "//" ) ) {
                        RecordSingleLineCommentVariable( m_unknownParms, token, P );
                        continue;
                    }
                    if ( token.StartsWith( "/*" ) ) {
                        RecordCommentVariable( m_unknownParms, token, P );
                        continue;
                    }

                    if ( token.EndsWith( "{" ) ) {
                        // Handle problematic parms without space before their values
                        token = token.Substring( 0, token.Length-1 );
                        P.m_Index--;
                    }

                    P.SkipSpaces();

                    switch ( token.ToLower() ) {
                        case "stagesort": {
                            string	sortStageName = P.ReadString();
                            switch ( sortStageName.ToLower() ) {
                                case "sortcoverage":	m_sortStage = SORT_STAGE.sortCoverage; break;
                                case "sortboatvolume":	m_sortStage = SORT_STAGE.sortBoatVolume; break;
                                case "sortemit":		m_sortStage = SORT_STAGE.sortEmit; break;
                                case "sortemitonly":	m_sortStage = SORT_STAGE.sortEmitOnly; break;
                                case "sortshadowwalk":	m_sortStage = SORT_STAGE.sortShadowWalk; break;
                                case "sortwater":		m_sortStage = SORT_STAGE.sortWater; break;
                                case "sortdecal":		m_sortStage = SORT_STAGE.sortDecal; break;
                                case "sorttranssort":	m_sortStage = SORT_STAGE.sortTransSort; break;
                                case "sorttrans":		m_sortStage = SORT_STAGE.sortTrans; break;
                                case "sortdarkvision":	m_sortStage = SORT_STAGE.sortDarkVision; break;
                                case "sorthud":			m_sortStage = SORT_STAGE.sortHud; break;
                                case "sortperturber":	m_sortStage = SORT_STAGE.sortPerturber; break;
                                case "sortautomap":		m_sortStage = SORT_STAGE.sortAutomap; break;
                                case "sortposttonemap":	m_sortStage = SORT_STAGE.sortPostTonemap; break;
                                default: throw new Exception( "Unhandled sort stage!" );
                            }
                            break;
                        }
                        default:
                            m_unknownParms.Add( token + "	" + P.ReadToEOL() );
                            break;
                    }
                }
            }