Reputation: 7
I wanted to make a game for a pet care for windows phone 7 but Im having problem whit this it tell me that I have a null method but I don't know why I have a enum From each State in the game.
here is a picture of the message: http://crystalnix.deviantart.com/art/XNa-Problem-396626207?ga_submit_new=10%253A1377747418
This is the main File.
using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.GamerServices;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Input.Touch;
using Microsoft.Xna.Framework.Media;
using Mochi_Mochi_Pets_Life.Script.Screen;
namespace Mochi_Mochi_Pets_Life
{
public class MainFile : Microsoft.Xna.Framework.Game
{
GraphicsDeviceManager graphics;
SpriteBatch spriteBatch;
ScreenStates screentState;
Rectangle TouchS_Y_X;
Logo logo;
Menu0 menu;
Choose_Pets choose_pets;
ScreenStates.CurrentGameState GameState;
public MainFile()
{
graphics = new GraphicsDeviceManager(this);
Content.RootDirectory = "Content";
Content.RootDirectory = "Script\\Screen";
choose_pets = new Choose_Pets();
this.screentState = new ScreenStates();
this.logo = new Logo(GraphicsDevice);
this.menu = new Menu0();
// Frame rate is 30 fps by default for Windows Phone.
TargetElapsedTime = TimeSpan.FromTicks(333333);
// Extend battery life under lock.
InactiveSleepTime = TimeSpan.FromSeconds(1);
GameState = ScreenStates.CurrentGameState.Logo;
}
protected override void Initialize()
{
choose_pets.Initialize_choosepets();
// TODO: Add your initialization logic here
base.Initialize();
}
protected override void LoadContent()
{
TouchS_Y_X = new Rectangle(0, 0, 1, 1);
// Create a new SpriteBatch, which can be used to draw textures.
spriteBatch = new SpriteBatch(GraphicsDevice);
if (GameState == ScreenStates.CurrentGameState.Logo)
this.logo.Load(this.Content, this.GraphicsDevice);
if (GameState == ScreenStates.CurrentGameState.Menu)
this.menu.Load_Menu(GraphicsDevice, Content);
if (logo.FadeOut_logo == true)
GameState = ScreenStates.CurrentGameState.Menu;
if (GameState == ScreenStates.CurrentGameState.CharactersChooser)
this.choose_pets.Load_ChoosePet(this.Content, this.GraphicsDevice);
// TODO: use this.Content to load your game content here
}
protected override void UnloadContent()
{
// TODO: Unload any non ContentManager content here
//this.logo.Unload_logo(Content);
}
protected override void Update(GameTime gameTime)
{
// Allows the game to exit
if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
this.Exit();
if (GameState == ScreenStates.CurrentGameState.Logo)
logo.Update_logo(gameTime);
if (GameState == ScreenStates.CurrentGameState.CharactersChooser)
choose_pets.Update_petchoose(gameTime);
// TODO: Add your update logic here
base.Update(gameTime);
}
protected override void Draw(GameTime gameTime)
{
GraphicsDevice.Clear(Color.Black);
spriteBatch.Begin();
if (GameState == ScreenStates.CurrentGameState.Logo)
logo.Draw(spriteBatch);
if (logo.FadeOut_logo == true)
menu.Draw_Menu(spriteBatch);
if (GameState == ScreenStates.CurrentGameState.CharactersChooser)
choose_pets.Draw_petChoose(spriteBatch);
spriteBatch.End();
base.Draw(gameTime);
}
}
}
And This one is the Menu that is giving me the problems
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Content;
namespace Mochi_Mochi_Pets_Life
{
class Menu0
{
Texture2D Text2D_Background;
Rectangle Rec_Background;
Texture2D ButtonText2DPlay;
Rectangle ButtonRecPlay;
public void Load_Menu(GraphicsDevice Graphics_Menu, ContentManager Content_Menu)
{
Content_Menu.RootDirectory = "Content";
Text2D_Background = Content_Menu.Load<Texture2D>("UI\\MenuBack");
Rec_Background = new Rectangle(0, 0, Graphics_Menu.Viewport.Width, Graphics_Menu.Viewport.Height);
ButtonText2DPlay = Content_Menu.Load<Texture2D>("UI\\Buttons\\New Games");
ButtonRecPlay = new Rectangle(Graphics_Menu.Viewport.Width, 400, 150, 40);
}
public void Draw_Menu(SpriteBatch Spritebatch_Menu)
{
Spritebatch_Menu.Draw(Text2D_Background, Rec_Background, Color.White);
Spritebatch_Menu.Draw(ButtonText2DPlay, ButtonRecPlay, Color.White);
}
}
}
Ok what this does is that when my logo Fade is == true the Game State Jump to Main Manu but it never happen always error I will appreciate your help..
Upvotes: 0
Views: 321
Reputation: 4213
I think your Text2D_Background
is null, and that's because you never call Load_Menu
.
You check gameState
in LoadContent
, and it returns false
.
if (GameState == ScreenStates.CurrentGameState.Menu)
LoadContent
is called only once, I can't understand why you check gameState
value.
Upvotes: 0
Reputation: 5762
Loading_Menu is never called, so the texture Text2D_Background is always null
You should realize that LoadContent is called only in game initalization, so comparing gamestate there is useless, because only will load Logo content.
As solution you can load all content at initalization, or you can load it when gamestate changes if needed content was not loaded before
Upvotes: 1