using System;
using System.Collections.Generic;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Media;

namespace GraveyardGraph
{
	public static class ArtFetcher
	{
		private static Dictionary<string, Texture2D> nameToTexture = new Dictionary<string, Texture2D>();

		public static Texture2D _dot;
		public static Texture2D Dot {
			get { return _dot;}
		}

		//seaweed art
		public static Texture2D _seaweedTCap;
		public static Texture2D SeaweedTCap {
			get { return _seaweedTCap; }
		}

		public static Texture2D _seaweedBCap;
		public static Texture2D SeaweedBCap {
			get { return _seaweedBCap; }
		}

		public static Texture2D _seaweedI;
		public static Texture2D SeaweedI {
			get { return _seaweedI; }
		}

		public static Texture2D _seaweedL;
		public static Texture2D SeaweedL {
			get { return _seaweedL; }
		}

		public static Texture2D _seaweedT;
		public static Texture2D SeaweedT {
			get { return _seaweedT; }
		}

		public static Texture2D _seaweedX;
		public static Texture2D SeaweedX {
			get { return _seaweedX; }
		}

		//fish art
		public static Texture2D _fish01;
		public static Texture2D Fish01 {
			get { return _fish01; }
		}

		public static Texture2D _fish02;
		public static Texture2D Fish02 {
			get { return _fish02; }
		}

		public static Texture2D _fish03;
		public static Texture2D Fish03 {
			get { return _fish03; }
		}

		public static Texture2D _fish04;
		public static Texture2D Fish04 {
			get { return _fish04; }
		}

		public static Texture2D _fish05;
		public static Texture2D Fish05 {
			get { return _fish05; }
		}

		public static Texture2D _fish06;
		public static Texture2D Fish06 {
			get { return _fish06; }
		}

		public static Texture2D _fish07;
		public static Texture2D Fish07 {
			get { return _fish07; }
		}

		//jellyfish art
		public static Texture2D _jelly01;
		public static Texture2D Jelly01
		{
			get { return _jelly01; }
		}

		public static Texture2D _jelly02;
		public static Texture2D Jelly02
		{
			get { return _jelly02; }
		}

		public static Texture2D _jelly03;
		public static Texture2D Jelly03
		{
			get { return _jelly03; }
		}

		public static Texture2D _jelly04;
		public static Texture2D Jelly04
		{
			get { return _jelly04; }
		}

		public static Texture2D _jelly05;
		public static Texture2D Jelly05
		{
			get { return _jelly05; }
		}

		public static Texture2D _jelly06;
		public static Texture2D Jelly06
		{
			get { return _jelly06; }
		}

		//initial wave art
		public static Texture2D _circle;
		public static Texture2D Circle
		{
			get { return _circle; }
		}

		//this is the seashell that makes the waves
		public static Texture2D _waveGenerator;
		public static Texture2D WaveGenerator
		{
			get { return _waveGenerator; }
		}
		public static Texture2D _waveGeneratorP;
		public static Texture2D WaveGeneratorP
		{
			get { return _waveGeneratorP; }
		}
		public static Texture2D _waveGeneratorM;
		public static Texture2D WaveGeneratorM
		{
			get { return _waveGeneratorM; }
		}
		public static Texture2D _waveGeneratorZ;
		public static Texture2D WaveGeneratorZ
		{
			get { return _waveGeneratorZ; }
		}

		//programmer art for testing
		public static Texture2D _pmenuScreen;
		public static Texture2D pMenuScreen
		{
			get { return _pmenuScreen; }
		}

		//programmer art for testing
		public static Texture2D _preturnScreen;
		public static Texture2D pReturnScreen
		{
			get { return _preturnScreen; }
		}

		private static AnimatedTexture _fish;
		public static AnimatedTexture AnimatedFish
		{
			get { return _fish; }
		}

		private static AnimatedTexture _jelly;
		public static AnimatedTexture AnimatedJelly
		{
			get { return _jelly; }
		}

		private static Texture2D _floor;
		public static Texture2D Floor
		{
			get { return _floor; }
		}

		private static Texture2D _bg;
		public static Texture2D BG
		{
			get { return _bg; }
		}

		private static Texture2D _overlay;
		public static Texture2D Overlay
		{
			get { return _overlay; }
		}

		private static Texture2D _win;
		public static Texture2D Win
		{
			get
			{
				return _win;
			}
		}

		private static Texture2D _lose;
		public static Texture2D Lose
		{
			get
			{
				return _lose;
			}
		}

		private static Texture2D _vignette;
		public static Texture2D Vignette
		{
			get { return _vignette; }
		}

		public static void Initialize(ContentManager Content){
			_dot = Content.Load<Texture2D>("dot");
			//seaweed art
			_seaweedI = Content.Load<Texture2D>("seaweedI");
			_seaweedTCap = Content.Load<Texture2D>("seaweedTCap");
			_seaweedBCap = Content.Load<Texture2D>("seaweedBCap");
			_seaweedT = Content.Load<Texture2D>("seaweedTile");
			//NO ART
			//_seaweedL = Content.Load<Texture2D>("seaweedl");
			//NO ART 
			_seaweedX = Content.Load<Texture2D>("seaweedX");

			//fish art
			_fish01 = Content.Load<Texture2D>("chumblyFish0001");
			_fish02 = Content.Load<Texture2D>("chumblyFish0002");
			_fish03 = Content.Load<Texture2D>("chumblyFish0003");
			_fish04 = Content.Load<Texture2D>("chumblyFish0004");
			_fish05 = Content.Load<Texture2D>("chumblyFish0005");
			_fish06 = Content.Load<Texture2D>("chumblyFish0006");
			_fish07 = Content.Load<Texture2D>("chumblyFish0007");
			//jellyfish art
			_jelly01 = Content.Load<Texture2D>("jellyjellySmall0001");
			_jelly02 = Content.Load<Texture2D>("jellyjellySmall0002");
			_jelly03 = Content.Load<Texture2D>("jellyjellySmall0003");
			_jelly04 = Content.Load<Texture2D>("jellyjellySmall0004");
			_jelly05 = Content.Load<Texture2D>("jellyjellySmall0005");
			_jelly06 = Content.Load<Texture2D>("jellyjellySmall0006");

			//wave art
			_circle = Content.Load<Texture2D>("circle");
			_waveGenerator = Content.Load<Texture2D>("waveGenerator");
			_waveGeneratorP = Content.Load<Texture2D>("waveGeneratorP");
			_waveGeneratorM = Content.Load<Texture2D>("waveGeneratorM");
			_waveGeneratorZ = Content.Load<Texture2D>("waveGeneratorZ");

			//floor
			_floor = Content.Load<Texture2D>("bgTile");
			_bg = Content.Load<Texture2D>("bgTile2");
			//programmer art
			_pmenuScreen = Content.Load<Texture2D>("pmenuScreen");
			//programmer art
			_preturnScreen = Content.Load<Texture2D>("preturnScreen");
			_fish = new AnimatedTexture(0.1f, _fish01, _fish02, _fish03, _fish04, _fish05, _fish06, _fish07);
			_jelly = new AnimatedTexture(0.1f, _jelly01, _jelly02, _jelly03, _jelly04, _jelly05, _jelly06);

			_overlay = Content.Load<Texture2D>("overlay");
			_lose = Content.Load<Texture2D>("lose");
			_win = Content.Load<Texture2D>("win");
			_vignette = Content.Load<Texture2D>("vignette");
		}
	}
}