示例#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 function

            base.ReadXml(data);

            // Read all attributes

            data.ReadEffect ( "Effect"          , ref m_effect_name         , ref m_effect   , "Effects\\colored"   );
            data.ReadFloat  ( "FadeInDistance"  , ref m_fade_in_distance    , 64    );
            data.ReadFloat  ( "Rotation"        , ref m_rotation            , 0     );
            data.ReadFloat  ( "ShroudColorR"    , ref m_shroud_color.X      , 0     );
            data.ReadFloat  ( "ShroudColorG"    , ref m_shroud_color.Y      , 0     );
            data.ReadFloat  ( "ShroudColorB"    , ref m_shroud_color.Z      , 0     );

            // Setup our vertices:

                // Color

                m_vertices[0].Color = new Color( new Vector4( m_shroud_color.X , m_shroud_color.Y , m_shroud_color.Z , 1  ) );
                m_vertices[1].Color = new Color( new Vector4( m_shroud_color.X , m_shroud_color.Y , m_shroud_color.Z , 0  ) );
                m_vertices[2].Color = new Color( new Vector4( m_shroud_color.X , m_shroud_color.Y , m_shroud_color.Z , 0  ) );
                m_vertices[3].Color = new Color( new Vector4( m_shroud_color.X , m_shroud_color.Y , m_shroud_color.Z , 0  ) );
                m_vertices[4].Color = new Color( new Vector4( m_shroud_color.X , m_shroud_color.Y , m_shroud_color.Z , 1  ) );
                m_vertices[5].Color = new Color( new Vector4( m_shroud_color.X , m_shroud_color.Y , m_shroud_color.Z , 1  ) );

                m_vertices[6].Color   = new Color( new Vector4( m_shroud_color.X , m_shroud_color.Y , m_shroud_color.Z , 1 ) );
                m_vertices[7].Color   = new Color( new Vector4( m_shroud_color.X , m_shroud_color.Y , m_shroud_color.Z , 1 ) );
                m_vertices[8].Color   = new Color( new Vector4( m_shroud_color.X , m_shroud_color.Y , m_shroud_color.Z , 1 ) );
                m_vertices[9].Color   = new Color( new Vector4( m_shroud_color.X , m_shroud_color.Y , m_shroud_color.Z , 1 ) );
                m_vertices[10].Color  = new Color( new Vector4( m_shroud_color.X , m_shroud_color.Y , m_shroud_color.Z , 1 ) );
                m_vertices[11].Color  = new Color( new Vector4( m_shroud_color.X , m_shroud_color.Y , m_shroud_color.Z , 1 ) );

                // Position:

                m_vertices[0].Position = new Vector3( Position , 0 ) + new Vector3( - m_fade_in_distance    , +100000 , -2 );
                m_vertices[1].Position = new Vector3( Position , 0 ) + new Vector3( 0                       , +100000 , -2 );
                m_vertices[2].Position = new Vector3( Position , 0 ) + new Vector3( 0                       , -100000 , -2 );
                m_vertices[3].Position = new Vector3( Position , 0 ) + new Vector3( 0                       , -100000 , -2 );
                m_vertices[4].Position = new Vector3( Position , 0 ) + new Vector3( - m_fade_in_distance    , -100000 , -2 );
                m_vertices[5].Position = new Vector3( Position , 0 ) + new Vector3( - m_fade_in_distance    , +100000 , -2 );

                m_vertices[6].Position  = new Vector3( Position , 0 ) + new Vector3( - 100000                , +100000 , -2 );
                m_vertices[7].Position  = new Vector3( Position , 0 ) + new Vector3( - m_fade_in_distance    , +100000 , -2 );
                m_vertices[8].Position  = new Vector3( Position , 0 ) + new Vector3( - m_fade_in_distance    , -100000 , -2 );
                m_vertices[9].Position  = new Vector3( Position , 0 ) + new Vector3( - m_fade_in_distance    , -100000 , -2 );
                m_vertices[10].Position = new Vector3( Position , 0 ) + new Vector3( - 100000                , -100000 , -2 );
                m_vertices[11].Position = new Vector3( Position , 0 ) + new Vector3( - 100000                , +100000 , -2 );

                // Rotation:

                    // Create rotation matrix:

                    Matrix rot = Matrix.CreateRotationZ( m_rotation );

                    // Do the rotation:

                    for ( int i = 0 ; i < m_vertices.Length ; i++ )
                    {
                        // Rotate about position:

                        m_vertices[i].Position = Vector3.Transform( m_vertices[i].Position  - new Vector3( Position , 0 ), rot );

                        // Restore world position:

                        m_vertices[i].Position = m_vertices[i].Position + new Vector3( Position , 0 );
                    }
        }
示例#2
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
        }
示例#3
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.ReadTexture( "Texture"             , ref m_texture_name        , ref m_texture , "Graphics\\default"  );
            data.ReadEffect ( "Effect"              , ref m_effect_name         , ref m_effect  , "Effects\\textured"  );
            data.ReadFloat  ( "SizeX"               , ref m_size.X              , 256   );
            data.ReadFloat  ( "SizeY"               , ref m_size.Y              , 256   );
            data.ReadBool   ( "FlipHorizontal"      , ref m_flip_horizontal     , false );
            data.ReadBool   ( "FlipVertical"        , ref m_flip_vertical       , false );
            data.ReadFloat  ( "HorizontalRepeats"   , ref m_horizontal_repeats  , 1     );
            data.ReadFloat  ( "VerticalRepeats"     , ref m_vertical_repeats    , 1     );
        }
示例#4
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.ReadTexture( "Texture"     , ref m_texture_name    , ref m_texture     , "Graphics\\default"  );
            data.ReadTexture( "NormalMap"   , ref m_normal_map_name , ref m_normal_map  , "Graphics\\default"  );
            data.ReadEffect ( "Effect"      , ref m_effect_name     , ref m_effect      , "Effects\\textured"  );

            data.ReadFloat( "RepeatWidth"           , ref m_repeat_width        , 32  );
            data.ReadFloat( "ParallaxMultiplier"    , ref m_parallax_multiplier , 0   );
            data.ReadFloat( "TextureOffsetX"        , ref m_texture_offset_x    , 0   );

            // Setup vertices for rendering:

            Setup();
        }
示例#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 class function

            base.ReadXml(data);

            // Read all data:

            data.ReadEffect( "IconEffect" , ref m_icon_effect_name , ref m_icon_effect , "Effects\\textured" );

            data.ReadFloat( "IconSize"     , ref m_icon_size       , 32    );
            data.ReadFloat( "IconOffsetY"  , ref m_icon_offset_y   , 0     );

            // Generate the portions that we will render

            CreatePortions();
        }
        //=========================================================================================
        /// <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;
        }
示例#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 base function

            base.ReadXml(data);

            // Read all data:

            data.ReadTexture( "Texture"         , ref m_texture_name    , ref m_texture , "Graphics\\default"   );
            data.ReadInt    ( "StarCount"       , ref m_star_count      , 50                                    );
            data.ReadFloat  ( "StarSize1"       , ref m_star_size_1     , 1.0f                                  );
            data.ReadFloat  ( "StarSize2"       , ref m_star_size_2     , 2.0f                                  );
            data.ReadFloat  ( "StarColor1R"     , ref m_star_color_1.X  , 1.0f                                  );
            data.ReadFloat  ( "StarColor1G"     , ref m_star_color_1.Y  , 1.0f                                  );
            data.ReadFloat  ( "StarColor1B"     , ref m_star_color_1.Z  , 1.0f                                  );
            data.ReadFloat  ( "StarColor1A"     , ref m_star_color_1.W  , 1.0f                                  );
            data.ReadFloat  ( "StarColor2R"     , ref m_star_color_2.X  , 1.0f                                  );
            data.ReadFloat  ( "StarColor2G"     , ref m_star_color_2.Y  , 1.0f                                  );
            data.ReadFloat  ( "StarColor2B"     , ref m_star_color_2.Z  , 1.0f                                  );
            data.ReadFloat  ( "StarColor2A"     , ref m_star_color_2.W  , 1.0f                                  );
            data.ReadFloat  ( "ParallaxScale"   , ref m_parallax_scale  , 1.0f                                  );

            // Setup the stars

            SetupStars();
        }
示例#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.ReadFloat  ( "FadeTime"    , ref m_fade_time   , 2.0f  );
            data.ReadString ( "NextGui"     , ref m_next_gui    , ""    );
        }
示例#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.ReadTexture( "CloudTexture1"   , ref m_cloud_texture_1_name    , ref m_cloud_texture_1 , "Graphics\\default"  );
            data.ReadTexture( "CloudTexture2"   , ref m_cloud_texture_2_name    , ref m_cloud_texture_2 , "Graphics\\default"  );

            data.ReadInt   ( "CloudCount"               , ref m_cloud_count             , 16    );
            data.ReadFloat ( "CloudScaleX_1"            , ref m_cloud_x_scale_1         , 1     );
            data.ReadFloat ( "CloudScaleY_1"            , ref m_cloud_y_scale_1         , 1     );
            data.ReadFloat ( "CloudScaleX_2"            , ref m_cloud_x_scale_2         , 1     );
            data.ReadFloat ( "CloudScaleY_2"            , ref m_cloud_y_scale_2         , 1     );
            data.ReadFloat ( "CloudOffsetY_1"           , ref m_cloud_y_offset_1        , 0     );
            data.ReadFloat ( "CloudOffsetY_2"           , ref m_cloud_y_offset_2        , 0     );
            data.ReadFloat ( "CloudSpeed_1"             , ref m_cloud_speed_1           , 0.5f  );
            data.ReadFloat ( "CloudSpeed_2"             , ref m_cloud_speed_2           , 0.5f  );
            data.ReadFloat ( "ParallaxMultiplier_1"     , ref m_parallax_multiplier_1   , 0.25f );
            data.ReadFloat ( "ParallaxMultiplier_2"     , ref m_parallax_multiplier_2   , 0.25f );

            // Create all the clouds:

            CreateClouds();
        }
示例#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 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);
        }
示例#11
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.ReadInt    ( "Phase1EnemyCount"        , ref m_phase1_enemy_count          , 10    );
            data.ReadInt    ( "Phase2EnemyCount"        , ref m_phase2_enemy_count          , 25    );
            data.ReadInt    ( "Phase3EnemyCount"        , ref m_phase3_enemy_count          , 50    );
            data.ReadInt    ( "Phase4EnemyCount"        , ref m_phase4_enemy_count          , 75    );
            data.ReadInt    ( "Phase5EnemyCount"        , ref m_phase5_enemy_count          , 100   );
            data.ReadFloat  ( "Phase1SpawnInterval"     , ref m_phase1_spawn_interval       , 0.5f  );
            data.ReadFloat  ( "Phase2SpawnInterval"     , ref m_phase2_spawn_interval       , 0.5f  );
            data.ReadFloat  ( "Phase3SpawnInterval"     , ref m_phase3_spawn_interval       , 0.5f  );
            data.ReadFloat  ( "Phase4SpawnInterval"     , ref m_phase4_spawn_interval       , 0.5f  );
            data.ReadFloat  ( "Phase5SpawnInterval"     , ref m_phase5_spawn_interval       , 0.5f  );
            data.ReadInt    ( "Phase1MaxActiveEnemies"  , ref m_phase1_max_active_enemies   , 5     );
            data.ReadInt    ( "Phase2MaxActiveEnemies"  , ref m_phase2_max_active_enemies   , 8     );
            data.ReadInt    ( "Phase3MaxActiveEnemies"  , ref m_phase3_max_active_enemies   , 10    );
            data.ReadInt    ( "Phase4MaxActiveEnemies"  , ref m_phase4_max_active_enemies   , 12    );
            data.ReadInt    ( "Phase5MaxActiveEnemies"  , ref m_phase5_max_active_enemies   , 15    );
            data.ReadInt    ( "CurrentPhaseEnemyKills"  , ref m_current_phase_enemy_kills   , 0     );

            // Clamp values:

            if ( m_phase1_enemy_count < 1 ) m_phase1_enemy_count = 1;
            if ( m_phase2_enemy_count < 1 ) m_phase2_enemy_count = 1;
            if ( m_phase3_enemy_count < 1 ) m_phase3_enemy_count = 1;
            if ( m_phase4_enemy_count < 1 ) m_phase4_enemy_count = 1;
            if ( m_phase5_enemy_count < 1 ) m_phase5_enemy_count = 1;

            if ( m_current_phase_enemy_kills < 0 ) m_current_phase_enemy_kills = 0;
        }
示例#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 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);
        }
示例#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 ( "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;
        }
示例#15
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.ReadFloat( "VelocityX" , ref m_velocity.X , 0 );
            data.ReadFloat( "VelocityY" , ref m_velocity.Y , 0 );
        }
示例#16
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();
        }
示例#17
0
        //=========================================================================================
        /// <summary>
        /// Attempts to load user preferences from the preferences xml file
        /// </summary>        
        //=========================================================================================
        public static void LoadPreferences()
        {
            // If we already loaded preferences then abort:

            if ( s_loaded_preferences == true ) return;

            // This might fail:

            try
            {
                // Get current storage container

                StorageContainer container = StorageSystem.Container;

                // See if we got a storage container:

                if ( container != null )
                {
                    // Set the loaded preferences flag to true:

                    s_loaded_preferences = true;

                    // Try and get the preferences file:

                    FileInfo file = new FileInfo( container.Path + "\\" + PREFERENCES_FILE );

                    // If it doesn't exist then abort:

                    if ( file.Exists == false ) return;

                    // Open an input stream:

                    Stream input_stream = file.Open(FileMode.Open);

                    // Create a new xml data object:

                    XmlObjectData data = null;

                    // Try and read the xml:

                    try { data = new XmlObjectData( input_stream ); } catch ( Exception ){}

                    // Close the input stream:

                    input_stream.Close();

                    // Ok: try and read the attributes:

                    float sound_volume  = 0.75f;
                    float music_volume  = 0.65f;
                    float brightness    = 1.0f;

                    data.ReadFloat( "SoundVolume"   , ref sound_volume  );
                    data.ReadFloat( "MusicVolume"   , ref music_volume  );
                    data.ReadFloat( "Brightness"    , ref brightness    );

                    // Now set them:

                    SoundVolume = sound_volume;
                    MusicVolume = music_volume;
                    Brightness  = brightness;
                }

            }

            // In windows debug show what happened if something went wrong:

            #if WINDOWS_DEBUG

                catch ( Exception e ){ DebugConsole.PrintException(e); }

            #else

                catch ( Exception ){}

            #endif
        }
示例#18
0
        public override void ReadXml(XmlObjectData data)
        {
            base.ReadXml(data);

            data.ReadFloat("DirectionX", ref m_direction.X);

            data.ReadFloat("DirectionY", ref m_direction.Y);

            data.ReadFloat("Force", ref m_power);

            data.ReadBool("CharactersAffected", ref m_charactersAffected);

            data.ReadBool("ProjectilesAffected", ref m_projectilesAffected);

            m_box.X = (int)PositionX;

            m_box.Y = (int)PositionY;

            m_box.Width = (int)BoxDimensionsX;

            m_box.Height = (int)BoxDimensionsY;
        }
示例#19
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.ReadTexture( "TopTexture"              , ref m_top_texture_name                , ref m_top_texture                 , "Graphics\\default" );
            data.ReadTexture( "TopTextureNormalMap"     , ref m_top_texture_normal_map_name     , ref m_top_texture_normal_map      , "Graphics\\default" );
            data.ReadTexture( "MiddleTexture"           , ref m_middle_texture_name             , ref m_middle_texture              , "Graphics\\default" );
            data.ReadTexture( "MiddleTextureNormalMap"  , ref m_middle_texture_normal_map_name  , ref m_middle_texture_normal_map   , "Graphics\\default" );
            data.ReadEffect ( "Effect"                  , ref m_effect_name                     , ref m_effect                      , "Effects\\default"  );

            data.ReadFloat("TextureRepeatsX" , ref m_tex_repeats_x );

            // Get height of the top texture:

            int top_tex_h = 0;

            if ( m_top_texture != null )
            {
                top_tex_h = m_top_texture.Height;
            }

            // Create the line representing the plane of the ground: where the top texture ends

            m_line = new Line
            (
                PositionX - BoxDimensionsX              ,
                PositionY + BoxDimensionsY - top_tex_h  ,
                PositionX + BoxDimensionsX              ,
                PositionY + BoxDimensionsY - top_tex_h
            );
        }
示例#20
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.ReadTexture( "Texture"     , ref m_texture_name    , ref m_texture     , "Graphics\\default"  );
            data.ReadTexture( "NormalMap"   , ref m_normal_map_name , ref m_normal_map  , "Graphics\\default"  );
            data.ReadEffect ( "Effect"      , ref m_effect_name     , ref m_effect      , "Effects\\textured"  );

            data.ReadFloat( "Rotation"          , ref m_rotation            , 0     );
            data.ReadBool ( "HorizontalFlip"    , ref m_horizontal_flip     , false );
            data.ReadBool ( "VerticalFlip"      , ref m_vertical_flip       , false );
        }