示例#1
0
        //=========================================================================================
        /// <summary> 
        /// In this function each derived class should read its own data from
        /// the given XML node representing this object and its attributes. Base methods should 
        /// also be called as part of this process.
        /// </summary>
        /// 
        /// <param name="data"> 
        /// An object representing the xml data for this XMLObject. Data values should be 
        /// read from here.
        /// </param>
        //=========================================================================================
        public override void ReadXml( XmlObjectData data )
        {
            // Call base class function

            base.ReadXml(data);

            // Read all data:

            data.ReadString( "MusicCueName" , ref m_music_cue_name , "" );
        }
        //=========================================================================================
        /// <summary> 
        /// In this function each derived class should read its own data from
        /// the given XML node representing this object and its attributes. Base methods should 
        /// also be called as part of this process.
        /// </summary>
        /// 
        /// <param name="data"> 
        /// An object representing the xml data for this XMLObject. Data values should be 
        /// read from here.
        /// </param>
        //=========================================================================================
        public override void ReadXml( XmlObjectData data )
        {
            // Call base class function

            base.ReadXml(data);

            // Read font:

            data.ReadString ( "Font" , ref m_font_name , "Content\\Fonts\\Game_16px.xml" );

            // Read all other data

            data.ReadString ( "String1st"                   , ref m_string_1st                      , "no_string"   );
            data.ReadString ( "String2nd"                   , ref m_string_2nd                      , "no_string"   );
            data.ReadString ( "String3rd"                   , ref m_string_3rd                      , "no_string"   );
            data.ReadFloat  ( "ScoreFadeInTime"             , ref m_score_fade_in_time              , 0.25f         );
            data.ReadFloat  ( "NewHighScoreThrobTime"       , ref m_new_high_score_throb_time       , 0.25f         );
            data.ReadFloat  ( "NewHighScoreThrobExpansion"  , ref m_new_high_score_throb_expansion  , 8             );
            data.ReadFloat  ( "NewHighScoreThrobColorR"     , ref m_new_high_score_throb_color.X    , 1             );
            data.ReadFloat  ( "NewHighScoreThrobColorG"     , ref m_new_high_score_throb_color.Y    , 1             );
            data.ReadFloat  ( "NewHighScoreThrobColorB"     , ref m_new_high_score_throb_color.Z    , 1             );
            data.ReadFloat  ( "NewHighScoreThrobColorA"     , ref m_new_high_score_throb_color.W    , 1             );

            // Create font:

            m_font = new Font(m_font_name);

            // Reset this

            m_time_since_creation = 0;
        }
        //=========================================================================================
        /// <summary> 
        /// In this function each derived class should read its own data from
        /// the given XML node representing this object and its attributes. Base methods should 
        /// also be called as part of this process.
        /// </summary>
        /// 
        /// <param name="data"> 
        /// An object representing the xml data for this XMLObject. Data values should be 
        /// read from here.
        /// </param>
        //=========================================================================================
        public override void ReadXml( XmlObjectData data )
        {
            // Call base class function

            base.ReadXml(data);

            data.ReadString ( "Font"    , ref m_font_name   , "Content\\Fonts\\Game_16px.xml"   );
            data.ReadBool   ( "Center"  , ref m_center      , false                             );

            // Read in font:

            m_font = new Font(m_font_name);
        }
示例#4
0
        //#########################################################################################
        /// <summary>
        /// Reads the high scores for each level in the game.
        /// </summary>
        /// <param name="folder"> 
        /// Folder name containing the xml files holding the high scores. Each xml file corresponds to 
        /// the high scores for one level and is named the same as the level file.
        /// </param>
        //#########################################################################################
        public static void Load( string folder )
        {
            // We have read high scores from a file now:

            s_read_high_scores = true;

            // Clear high scores:

            s_scores.Clear();

            // This might fail:

            try
            {
                // Try and open the given directory:

                DirectoryInfo dir = new DirectoryInfo(folder);

                // Only do if it exists:

                if ( dir.Exists )
                {
                    // Cool: get a list of files in the dir

                    FileInfo[] files = dir.GetFiles( "*.xml" );

                    // Run through the list of files:

                    foreach ( FileInfo file in files )
                    {
                        // Make an IO stream:

                        Stream stream = file.Open(FileMode.Open,FileAccess.Read);

                        // Attempt to read its data:

                        XmlObjectData data = new XmlObjectData(stream);

                        // Make up a new high score record

                        HighScoreRecord h;

                        h.Score1 = 0;
                        h.Score2 = 0;
                        h.Score3 = 0;

                        h.Name1 = "";
                        h.Name2 = "";
                        h.Name3 = "";

                        // If any high score is negative then zero it:

                        if ( h.Score1 < 0 ) h.Score1 = 0;
                        if ( h.Score2 < 0 ) h.Score2 = 0;
                        if ( h.Score3 < 0 ) h.Score3 = 0;

                        // Attempt to read all three scores

                        data.ReadFloat( "Score1" , ref h.Score1 );
                        data.ReadFloat( "Score2" , ref h.Score2 );
                        data.ReadFloat( "Score3" , ref h.Score3 );

                        // Load user names:

                        data.ReadString( "Name1" , ref h.Name1 );
                        data.ReadString( "Name2" , ref h.Name2 );
                        data.ReadString( "Name3" , ref h.Name3 );

                        // Trim the names:

                        h.Name1 = h.Name1.Trim();
                        h.Name2 = h.Name2.Trim();
                        h.Name3 = h.Name3.Trim();

                        // If no user name given then use the '-' monkier

                        if ( h.Name1.Length <= 0 ) h.Name1 = "-";
                        if ( h.Name2.Length <= 0 ) h.Name2 = "-";
                        if ( h.Name3.Length <= 0 ) h.Name3 = "-";

                        // Ensure names are within limits:

                        if ( h.Name1.Length > User.MAX_USER_NAME_LENGTH ) h.Name1 = h.Name1.Substring( 0 , User.MAX_USER_NAME_LENGTH );
                        if ( h.Name2.Length > User.MAX_USER_NAME_LENGTH ) h.Name2 = h.Name2.Substring( 0 , User.MAX_USER_NAME_LENGTH );
                        if ( h.Name3.Length > User.MAX_USER_NAME_LENGTH ) h.Name3 = h.Name3.Substring( 0 , User.MAX_USER_NAME_LENGTH );

                        // Sort the scores if not in order:

                        if ( h.Score3 > h.Score2 ){ float t = h.Score3; h.Score3 = h.Score2; h.Score2 = t; }
                        if ( h.Score2 > h.Score1 ){ float t = h.Score2; h.Score2 = h.Score1; h.Score1 = t; }
                        if ( h.Score3 > h.Score2 ){ float t = h.Score3; h.Score3 = h.Score2; h.Score2 = t; }

                        // Save the high scores record:

                        s_scores[ file.Name.ToLower() ] = h;
                    }
                }
            }

            // On windows debug display errors:

            #if WINDOWS_DEBUG

                catch ( Exception e )
                {
                    // Show what happened:

                    DebugConsole.PrintException(e);

                    // Clear high scores:

                    s_scores.Clear();
                }

            #else

                catch ( Exception )
                {
                    // Clear high scores:

                    s_scores.Clear();
                }

            #endif
        }
示例#5
0
        //=========================================================================================
        /// <summary> 
        /// In this function each derived class should read its own data from
        /// the given XML node representing this object and its attributes. Base methods should 
        /// also be called as part of this process.
        /// </summary>
        /// 
        /// <param name="data"> 
        /// An object representing the xml data for this XMLObject. Data values should be 
        /// read from here.
        /// </param>
        //=========================================================================================
        public override void ReadXml( XmlObjectData data )
        {
            // Call base function

            base.ReadXml(data);

            // Read all data:

            data.ReadString ( "SpawnObjectType"  , ref m_spawn_object_type   , "EnemyNinja" );
            data.ReadInt    ( "MinimumPhase"     , ref m_mininum_phase       , 0            );

            // Clamp the minimum phase from 0-2:

            if ( m_mininum_phase < 0 ) m_mininum_phase = 0;
            if ( m_mininum_phase > 2 ) m_mininum_phase = 2;
        }
示例#6
0
        //=========================================================================================
        /// <summary> 
        /// In this function each derived class should read its own data from
        /// the given XML node representing this object and its attributes. Base methods should 
        /// also be called as part of this process.
        /// </summary>
        /// 
        /// <param name="data"> 
        /// An object representing the xml data for this XMLObject. Data values should be 
        /// read from here.
        /// </param>
        //=========================================================================================
        public override void ReadXml( XmlObjectData data )
        {
            // Call base class function

            base.ReadXml(data);

            // Read all data:

            data.ReadFloat  ( "FadeTime"    , ref m_fade_time   , 2.0f  );
            data.ReadString ( "NextGui"     , ref m_next_gui    , ""    );
        }
示例#7
0
        //=========================================================================================
        /// <summary> 
        /// In this function each derived class should read its own data from
        /// the given XML node representing this object and its attributes. Base methods should 
        /// also be called as part of this process.
        /// </summary>
        /// 
        /// <param name="data"> 
        /// An object representing the xml data for this XMLObject. Data values should be 
        /// read from here.
        /// </param>
        //=========================================================================================
        public override void ReadXml( XmlObjectData data )
        {
            // Call the base class function first:

            base.ReadXml(data);

            // Read the collision lines file name:

            data.ReadString( "CollisionLinesXmlFile" , ref m_collision_lines_xml_file , "Content\\CollisionLines\\default.xml" );

            // Read the scaling for the collision lines:

            data.ReadFloat( "CollisionLineScaleX" , ref m_collision_line_scale.X , 1 );
            data.ReadFloat( "CollisionLineScaleY" , ref m_collision_line_scale.Y , 1 );

            // Read this:

            data.ReadBool( "ReverseCollisionNormals" , ref m_reverse_collision_normals , false );

            // Load collision lines:

            ReadXmlCollisionLines();
        }
示例#8
0
        //=========================================================================================
        /// <summary> 
        /// In this function each derived class should read its own data from
        /// the given XML node representing this object and its attributes. Base methods should 
        /// also be called as part of this process.
        /// </summary>
        /// 
        /// <param name="data"> 
        /// An object representing the xml data for this XMLObject. Data values should be 
        /// read from here.
        /// </param>
        //=========================================================================================
        public override void ReadXml( XmlObjectData data )
        {
            // Call base class function

            base.ReadXml(data);

            // Read all data

            data.ReadString ( "Level"   , ref m_level_name      );
            data.ReadString ( "GameGui" , ref m_game_gui_name   );
        }
示例#9
0
        //=========================================================================================
        /// <summary> 
        /// In this function each derived class should read its own data from
        /// the given XML node representing this object and its attributes. Base methods should 
        /// also be called as part of this process.
        /// </summary>
        /// 
        /// <param name="data"> 
        /// An object representing the xml data for this XMLObject. Data values should be 
        /// read from here.
        /// </param>
        //=========================================================================================
        public override void ReadXml( XmlObjectData data )
        {
            // Call base class function

            base.ReadXml(data);

            // Read all data:

            data.ReadEffect ( "Effect"              , ref m_effect_name                 , ref m_effect                  , "Effects\\textured"   );
            data.ReadEffect ( "StringWobbleEffect"  , ref m_string_wobble_effect_name   , ref m_string_wobble_effect    , "Effects\\textured"   );
            data.ReadTexture( "FillTexture"         , ref m_fill_texture_name           , ref m_fill_texture            , "Graphics\\default"   );
            data.ReadTexture( "BarTexture"          , ref m_bar_texture_name            , ref m_bar_texture             , "Graphics\\default"   );

            data.ReadString ( "Font"                        , ref m_font_name                   , "Content\\Fonts\\Game_16px.xml"   );
            data.ReadString ( "StringName"                  , ref m_string_name                 , "No_String"                       );
            data.ReadFloat  ( "StringOffsetY"               , ref m_string_offset_y             , 32                                );
            data.ReadFloat  ( "FillPaddingX"                , ref m_fill_padding.X              , 0                                 );
            data.ReadFloat  ( "FillPaddingY"                , ref m_fill_padding.Y              , 0                                 );
            data.ReadFloat  ( "MinimumValue"                , ref m_minimum_value               , 0.0f                              );
            data.ReadFloat  ( "MaximumValue"                , ref m_maximum_value               , 1.0f                              );
            data.ReadFloat  ( "CurrentValue"                , ref m_current_value               , 0.5f                              );
            data.ReadFloat  ( "ChangeSpeed"                 , ref m_change_speed                , 1.0f                              );
            data.ReadFloat  ( "SizeX"                       , ref m_size.X                      , 128                               );
            data.ReadFloat  ( "SizeY"                       , ref m_size.Y                      , 32                                );
            data.ReadFloat  ( "ExpandTime"                  , ref m_expand_time                 , 1                                 );
            data.ReadFloat  ( "ExpansionX"                  , ref m_expansion.X                 , 16                                );
            data.ReadFloat  ( "ExpansionY"                  , ref m_expansion.Y                 , 4                                 );
            data.ReadFloat  ( "StringExpansion"             , ref m_string_expansion            , 0                                 );
            data.ReadFloat  ( "HighlightWobbleSpeed"        , ref m_highlight_wobble_speed      , 0.01f                             );
            data.ReadFloat  ( "HighlightWobbleIntensity"    , ref m_highlight_wobble_intensity  , 8                                 );
            data.ReadString ( "ValueChangedEvent"           , ref m_value_changed_event         , ""                                );
            data.ReadString ( "BackEvent"                   , ref m_back_event                  , ""                                );
            data.ReadString ( "FocusSound"                  , ref m_focus_sound                 , ""                                );
            data.ReadString ( "UseSound"                    , ref m_use_sound                   , ""                                );

            // If the minimum value is bigger the max then swap:

            if ( m_minimum_value > m_maximum_value )
            {
                float t = m_minimum_value; m_minimum_value = m_maximum_value; m_maximum_value = t;
            }

            // Fill in the color and texture coordinates of the vertices for rendering:

            m_vertices[0].Color = Color.White;
            m_vertices[1].Color = Color.White;
            m_vertices[2].Color = Color.White;
            m_vertices[3].Color = Color.White;
            m_vertices[4].Color = Color.White;
            m_vertices[5].Color = Color.White;

            m_vertices[0].TextureCoordinate = Vector2.Zero;
            m_vertices[1].TextureCoordinate = Vector2.UnitY;
            m_vertices[2].TextureCoordinate = Vector2.UnitX;
            m_vertices[3].TextureCoordinate = Vector2.One;
            m_vertices[4].TextureCoordinate = Vector2.Zero;
            m_vertices[5].TextureCoordinate = Vector2.UnitY;

            // Read in font:

            m_font = new Font(m_font_name);
        }
示例#10
0
        //=========================================================================================
        /// <summary> 
        /// In this function each derived class should read its own data from
        /// the given XML node representing this object and its attributes. Base methods should 
        /// also be called as part of this process.
        /// </summary>
        /// 
        /// <param name="data"> 
        /// An object representing the xml data for this XMLObject. Data values should be 
        /// read from here.
        /// </param>
        //=========================================================================================
        public override void ReadXml( XmlObjectData data )
        {
            // Call base function

            base.ReadXml(data);

            // Read all attributes

            data.ReadString( "Font"            , ref m_font_name       , "Content\\Fonts\\Game_16px.xml"    );
            data.ReadFloat ( "FloatSpeed"      , ref m_float_speed     , 0.25f                              );
            data.ReadFloat ( "ScoreLiveTime"   , ref m_score_live_time , 2.0f                               );

            // Load the given font:

            m_font = new Font(m_font_name);
        }
        //=========================================================================================
        /// <summary> 
        /// In this function each derived class should read its own data from
        /// the given XML node representing this object and its attributes. Base methods should 
        /// also be called as part of this process.
        /// </summary>
        /// 
        /// <param name="data"> 
        /// An object representing the xml data for this XMLObject. Data values should be 
        /// read from here.
        /// </param>
        //=========================================================================================
        public override void ReadXml( XmlObjectData data )
        {
            // Call base class function

            base.ReadXml(data);

            data.ReadString ( "Font"            , ref m_font_name           , "Content\\Fonts\\Game_16px.xml"   );
            data.ReadString ( "PhaseStringName" , ref m_phase_string_name   , "No_String_Specified"             );
            data.ReadString ( "ReadyStringName" , ref m_ready_string_name   , "No_String_Specified"             );
            data.ReadBool   ( "Center"          , ref m_center              , false                             );
            data.ReadFloat  ( "FontEnlarge"     , ref m_font_enlarge        , 64.0f                             );

            // Read in font:

            m_font = new Font(m_font_name);
        }
示例#12
0
        //=========================================================================================
        /// <summary> 
        /// In this function each derived class should read its own data from
        /// the given XML node representing this object and its attributes. Base methods should 
        /// also be called as part of this process.
        /// </summary>
        /// 
        /// <param name="data"> 
        /// An object representing the xml data for this XMLObject. Data values should be 
        /// read from here.
        /// </param>
        //=========================================================================================
        public override void ReadXml( XmlObjectData data )
        {
            // Call base class function

            base.ReadXml(data);

            data.ReadString ( "Font"        , ref m_font_name   , "Content\\Fonts\\Game_16px.xml"   );
            data.ReadString ( "StringName"  , ref m_string_name , "No_String_Specified"             );

            // Read alignment:

            string alignment = ""; data.ReadString("Alignment" , ref alignment );

            // See what alignment we have:

            alignment = alignment.ToLower();

            if ( alignment.Equals("center") )
            {
                // Text is centered

                m_alignment = Alignment.CENTER;
            }
            else if ( alignment.Equals("right") )
            {
                // Right align

                m_alignment = Alignment.RIGHT;
            }
            else
            {
                // Left align

                m_alignment = Alignment.LEFT;
            }

            // Read in font:

            m_font = new Font(m_font_name);
        }
示例#13
0
        //=========================================================================================
        /// <summary> 
        /// In this function each derived class should read its own data from
        /// the given XML node representing this object and its attributes. Base methods should 
        /// also be called as part of this process.
        /// </summary>
        /// 
        /// <param name="data"> 
        /// An object representing the xml data for this XMLObject. Data values should be 
        /// read from here.
        /// </param>
        //=========================================================================================
        public override void ReadXml( XmlObjectData data )
        {
            // Call base class function

            base.ReadXml(data);

            // Read all data:

            data.ReadString ( "Font"            , ref m_font_name           , "Content\\Fonts\\Game_48px.xml"   );
            data.ReadFloat  ( "PictureSizeX"    , ref m_picture_size.X      , 128                               );
            data.ReadFloat  ( "PictureSizeY"    , ref m_picture_size.Y      , 128                               );
            data.ReadFloat  ( "StringOffsetY"   , ref m_string_offset_y     , 0                                 );
            data.ReadFloat  ( "FadeTime"        , ref m_fade_time           , 0.25f                             );
            data.ReadFloat  ( "DisplayTime"     , ref m_display_time        , 2                                 );
            data.ReadInt    ( "StoryPartCount"  , ref m_story_part_count    , 1                                 );

            // Read story data:

            if ( m_story_part_count > 0 )
            {
                // Declare arrays for all the story pictures and strings:

                m_pictures      = new Texture2D [ m_story_part_count ];
                m_picture_names = new string    [ m_story_part_count ];
                m_story_strings = new string    [ m_story_part_count ];

                // Read each part of the story: the string and texture

                for ( int i = 0 ; i < m_story_part_count ; i++ )
                {
                    // Story part texture

                    data.ReadTexture
                    (
                        "StoryPicture" + (i+1).ToString()   ,
                        ref m_picture_names[i]              ,
                        ref m_pictures[i]                   ,
                        "Graphics\\default"
                    );

                    // Story part string

                    data.ReadString
                    (
                        "StoryString" + (i+1).ToString()    ,
                        ref m_story_strings[i]              ,
                        "No_String"
                    );
                }
            }
            else
            {
                // No story:

                m_pictures      = null;
                m_picture_names = null;
                m_story_strings = null;
            }

            // Read in font:

            m_font = new Font(m_font_name);

            // Fading in to current part:

            m_transition_state      = TransitionState.SHOWING;
            m_current_state_time    = 0;
            m_current_story_part    = 0;
        }
示例#14
0
        //=========================================================================================
        /// <summary> 
        /// In this function each derived class should read its own data from
        /// the given XML node representing this object and its attributes. Base methods should 
        /// also be called as part of this process.
        /// </summary>
        /// 
        /// <param name="data"> 
        /// An object representing the xml data for this XMLObject. Data values should be 
        /// read from here.
        /// </param>
        //=========================================================================================
        public override void ReadXml( XmlObjectData data )
        {
            // Call base class function

            base.ReadXml(data);

            // Read all data:

            data.ReadString( "GameLostString"   , ref m_game_lost_string    ,  "No_string"                      );
            data.ReadString( "GameWonString"    , ref m_game_won_string     ,  "No_string"                      );
            data.ReadString( "MessageFont"      , ref m_message_font_name   ,  "Content\\Fonts\\Game_32px.xml"  );
            data.ReadString( "GameWonGui"       , ref m_game_won_gui        ,  ""                               );
            data.ReadString( "GameLostGui"      , ref m_game_lost_gui       ,  ""                               );

            // Load the message font:

            m_message_font = new Font( m_message_font_name );
        }