/Development/EyesOfTheDragon/EyesOfTheDragon/GameScreens/CharacterGeneratorScreen.cs
C# | 348 lines | 254 code | 90 blank | 4 comment | 12 complexity | 860651fd719d4af6f9b832e85b6576ee MD5 | raw file
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
-
- using Microsoft.Xna.Framework;
- using Microsoft.Xna.Framework.Graphics;
- using Microsoft.Xna.Framework.Input;
-
- using XRpgLibrary;
- using XRpgLibrary.Controls;
- using XRpgLibrary.SpriteClasses;
- using XRpgLibrary.TileEngine;
- using XRpgLibrary.WorldClasses;
- using XRpgLibrary.ItemClasses;
- using XRpgLibrary.CharacterClasses;
-
- using RpgLibrary.ItemClasses;
- using RpgLibrary.CharacterClasses;
- using RpgLibrary.SkillClasses;
-
- using EyesOfTheDragon.Components;
- using RpgLibrary.WorldClasses;
- using XRpgLibrary.EventClasses;
- using XRpgLibrary.SessionClasses;
-
- namespace EyesOfTheDragon.GameScreens
- {
- public class CharacterGeneratorScreen : BaseGameState
- {
- #region Fields
-
- LeftRightSelector genderSelector;
- LeftRightSelector classSelector;
- PictureBox backgroundImage;
- PictureBox characterImage;
- Texture2D[,] characterImages;
- Texture2D containers;
-
- string[] genderItems = { "Male", "Female" };
- string[] classItems;
-
- Texture2D grid;
-
- #endregion
-
- #region Properties
-
- public string SelectedGender
- {
- get { return genderSelector.SelectedItem; }
- }
-
- public string SelectedClass
- {
- get { return classSelector.SelectedItem; }
- }
-
- #endregion
-
- #region Costructors
-
- public CharacterGeneratorScreen( Game game, GameStateManager stateManager )
- : base( game, stateManager )
- {
-
- }
-
- #endregion
-
- #region XNA Methods
-
- public override void Initialize()
- {
- base.Initialize();
- }
-
- protected override void LoadContent()
- {
- base.LoadContent();
-
- classItems = new string[DataManager.EntityData.Count];
-
- int counter = 0;
-
- foreach ( string className in DataManager.EntityData.Keys )
- {
- classItems[counter] = className;
- counter++;
- }
-
- LoadImages();
- CreateControls();
- containers = Game.Content.Load<Texture2D>( @"ObjectSprites\containers" );
- }
-
- public override void Update( GameTime gameTime )
- {
- ControlManager.Update( gameTime, PlayerIndex.One );
- base.Update( gameTime );
- }
-
- public override void Draw( GameTime gameTime )
- {
- GameRef.SpriteBatch.Begin();
-
- base.Draw( gameTime );
-
- ControlManager.Draw( GameRef.SpriteBatch );
-
- GameRef.SpriteBatch.End();
- }
-
- #endregion
-
- #region Methods
-
- private void CreateControls()
- {
- Texture2D leftTexture = Game.Content.Load<Texture2D>( @"GUI\leftarrowUp" );
- Texture2D rightTexture = Game.Content.Load<Texture2D>( @"GUI\rightarrowUp" );
- Texture2D stopTexture = Game.Content.Load<Texture2D>( @"GUI\StopBar" );
-
- backgroundImage = new PictureBox(
- Game.Content.Load<Texture2D>( @"Backgrounds\titlescreen" ),
- GameRef.ScreenRectangle );
- ControlManager.Add( backgroundImage );
-
- Label label1 = new Label();
- label1.Text = "Who will search for the Eyes of the Dragon?";
- label1.Size = label1.SpriteFont.MeasureString( label1.Text );
- label1.Position = new Vector2( ( GameRef.Window.ClientBounds.Width - label1.Size.X ) / 2, 150 );
- ControlManager.Add( label1 );
-
- genderSelector = new LeftRightSelector( leftTexture, rightTexture, stopTexture );
- genderSelector.SetItems( genderItems, 125 );
- genderSelector.Position = new Vector2( label1.Position.X, 200 );
- genderSelector.SelectionChanged += new EventHandler( selectionChanged );
- ControlManager.Add( genderSelector );
-
- classSelector = new LeftRightSelector( leftTexture, rightTexture, stopTexture );
- classSelector.SetItems( classItems, 125 );
- classSelector.Position = new Vector2( label1.Position.X, 250 );
- classSelector.SelectionChanged += selectionChanged;
- ControlManager.Add( classSelector );
-
- LinkLabel linkLabel1 = new LinkLabel();
- linkLabel1.Text = "Accept this character.";
- linkLabel1.Position = new Vector2( label1.Position.X, 300 );
- linkLabel1.Selected += new EventHandler( linkLabel1_Selected );
- ControlManager.Add( linkLabel1 );
-
- characterImage = new PictureBox(
- characterImages[0, 0],
- new Rectangle( 500, 200, 96, 96 ),
- new Rectangle( 0, 0, 32, 32 ) );
- ControlManager.Add( characterImage );
-
- ControlManager.NextControl();
- }
-
- private void LoadImages()
- {
- characterImages = new Texture2D[genderItems.Length, classItems.Length];
-
- for ( int i = 0; i < genderItems.Length; i++ )
- {
- for ( int j = 0; j < classItems.Length; j++ )
- {
- characterImages[i, j] = Game.Content.Load<Texture2D>(
- string.Format( @"PlayerSprites\{0}{1}", genderItems[i], classItems[j] ) );
- }
- }
- }
-
- void selectionChanged( object sender, EventArgs e )
- {
- characterImage.Image = characterImages[genderSelector.SelectedIndex, classSelector.SelectedIndex];
- }
-
- void linkLabel1_Selected( object sender, EventArgs e )
- {
- InputHandler.Flush();
-
- Session.StartNewSession( StateManager, GameRef.GamePlayScreen );
-
- CreatePlayer();
- CreateWorld();
-
- //GameRef.SkillScreen.SkillPoints = 10;
- Transition( ChangeType.Change, GameRef.GamePlayScreen );
- //GameRef.SkillScreen.SetTarget( GamePlayScreen.Player.Character );
- }
-
- private void CreatePlayer()
- {
- Session.StartNewSession( StateManager, GameRef.GamePlayScreen );
- }
-
- private void CreateWorld()
- {
- World.CreateWorld( GameRef, GameRef.ScreenRectangle );
-
- #region Load Levels
-
- List<Level> levels = new List<Level>();
-
- foreach ( string s in DataManager.LevelData.Keys )
- {
- LevelData lData = DataManager.LevelData[s];
-
- #region Load Map Data
-
- MapData mData = DataManager.MapData[lData.MapName];
-
- List<Tileset> tilesets = new List<Tileset>();
-
- foreach ( TilesetData td in mData.Tilesets )
- {
- tilesets.Add( new Tileset(
- Game.Content.Load<Texture2D>( @"Tilesets\" + td.TilesetName ),
- td.TilesWide,
- td.TilesHigh,
- td.TileWidthInPixels,
- td.TileHeightInPixels ) );
- }
-
- List<MapLayer> groundLayers = new List<MapLayer>();
-
- foreach ( MapLayerData mld in mData.GroundLayers )
- {
- MapLayer layer = new MapLayer( mld.Width, mld.Height );
-
- for ( int y = 0; y < mld.Height; y++ )
- {
- for ( int x = 0; x < mld.Width; x++ )
- {
- RpgLibrary.WorldClasses.Tile t = mld.GetTile( x, y );
- layer.SetTile( x, y, t.TileIndex, t.TileSetIndex );
- }
- }
-
- groundLayers.Add( layer );
- }
-
- List<MapLayer> skyLayers = new List<MapLayer>();
-
- foreach ( MapLayerData mld in mData.SkyLayers )
- {
- MapLayer layer = new MapLayer( mld.Width, mld.Height );
-
- for ( int y = 0; y < mld.Height; y++ )
- {
- for ( int x = 0; x < mld.Width; x++ )
- {
- RpgLibrary.WorldClasses.Tile t = mld.GetTile( x, y );
- layer.SetTile( x, y, t.TileIndex, t.TileSetIndex );
- }
- }
-
- skyLayers.Add( layer );
- }
-
- List<Event> events = new List<Event>();
-
- foreach ( EventData eData in mData.Events )
- {
- if ( eData is PortalData )
- {
- events.Add( Portal.FromPortalData( (PortalData) eData ) );
- }
- else if ( eData is FixedCombatData )
- {
- events.Add( FixedCombat.FromFixedCombatData( (FixedCombatData) eData ) );
- }
- }
-
- TileMap map = new TileMap( tilesets[0], groundLayers[0], events );
-
-
- for ( int i = 1; i < tilesets.Count; i++ )
- {
- map.AddTileset( tilesets[i] );
- }
-
- for ( int i = 1; i < groundLayers.Count; i++ )
- {
- map.AddGroundLayer( groundLayers[i] );
- }
-
- for ( int i = 0; i < skyLayers.Count; i++ )
- {
- map.AddSkyLayer( skyLayers[i] );
- }
-
- #endregion
-
- #region Load Level Data
-
- Level l = new Level( map, lData.LevelName );
-
- //*** Hardcode level background
- l.CombatBackground = GameRef.Content.Load<Texture2D>( @"Backgrounds\field" );
-
- #region Load NPCs
-
- foreach ( string cName in lData.CharacterNames )
- {
- NPCData nData = DataManager.NPCData[cName];
- NonPlayerCharacter npc = NonPlayerCharacter.FromNPCData(
- nData,
- GameRef.ContentLoader.GetNPCTexture( NonPlayerCharacter.GetSpriteTextureName( nData ) ) );
- npc.Sprite.IsAnimating = true;
- l.Characters.Add( npc );
- }
-
- #endregion
-
- #region Load Chests
-
-
-
- #endregion
-
- #endregion
-
- levels.Add( l );
- }
-
- #endregion
-
- #region Load World
-
- foreach ( Level l in levels )
- {
- World.Levels.Add( l );
- }
-
- World.ChangeMap( Portal.FromPortalData( new PortalData( "GameStart", "", 0, 0, "Level1", 0, 0 ) ) );
-
- //World.CurrentLevel = 0;
-
- #endregion
- }
-
- #endregion
- }
- }