using System;
using System.Collections.Generic;
using System.Text;
using Yanesdk.Draw;

namespace Kyojin
{
    /// <summary>
    /// このアプリケーションで共通で使う、マジックストリング、マジックナンバーを
    /// 定義するだけのクラス
    /// 外部ストリング化できるものはできるだけ、そちらを検討すること。
    /// </summary>
    public static class KyojinConst
    {
        /// <summary>
        /// このアプリケーションの名前
        /// </summary>
        public static readonly string APP_NAME = "KYOJINTACHI4Cs";
        /// <summary>
        /// アプリケーションのバージョン
        /// </summary>
        public static readonly string VARSION = "0.02";

        public static readonly string LOG_DIR = "log";

        public const int DAFAULT_DISP_WIDTH = 640;
        public const int DEFAULT_DISP_HEIGHT = 480;

        /// <summary>
        /// キャラクターのコンテナのサイズ
        /// </summary>
        public const int CHARA_CONTAINER_SIZE = 4;

        #region フォント関連

        public const string FONT_DEF_FILE = "data/fontlist.txt";
        public const int SCENARIO_TEXT_FONT_NO = 1;
        public const int SCENARIO_KYOJIN_TEXT_FONT_NO = 7;
        public const int SCENARIO_RUBI_FONT_NO = 0;
        public const int SAVE_TEXT_FONT_NO = 1;
        /** フォント番号：ダイアログボックス文字 */
        public const int DIALOG_TEXT_FONT_NO = SCENARIO_TEXT_FONT_NO;
        /** フォント番号：セーブ画面フォント文字 */
        public const int C_FONT_NO_DEVROOM = 4;

        #endregion

        #region パスワード

        /** 暗号化のキー */
        public const byte C_K2C_INFO_KYOJINTACHI = 0x7E;
        public const string PK = "X";
        public const string P2 = "X";
        public const string PC = "X";

        public const string ZIP_EXT = ".dat";

        #endregion


        #region データ定義ファイル

        public static readonly string SOUL_DEF_LIST = "data/soul_header/list.txt";
        public static readonly string STORY_DEF_LIST = "data/story/list.txt";
        public static readonly string WORD_DEF_LIST = "data/spirit_word_list.txt";
        public static readonly string LOCATE_DEF_LIST = "data/map/locate_list.txt";
        public static readonly string PHASE_DEF_LIST = "data/phase_header/list.txt";

        #endregion

        #region セーブデータ関連
        public const int AUTO_BOOKMARK_NO = 0;
        public const int MAX_SEVADATA_NUM = 4;
        public static readonly string SAVE_DATA_PATH = "save_data/";
        public static readonly string[] SAVE_DATA_NAME = new string[]{ 
            "save01.dat",
            "save02.dat",
            "save03.dat",
            "save04.dat",
            "save05.dat",
            "save06.dat",
        };
        public static readonly string SAVE_HEADER_FILE = SAVE_DATA_PATH + "saves.dat";

        #endregion


        #region ユーザ情報関連

        public static readonly int USER_START_PHASE_NO = 2;
        public static readonly int USER_DEFAULT_SPIRIT_POWER = 20;

        #endregion

        #region シナリオ関連定義

        /// シナリオ定数
        public enum ScenarioID : int
        {
            NOT_DATA = -1,
            STORY01 = 0,	// 0 秋日狂想
            STORY02_0, STORY02_1, STORY02_2,	// 1,2,3 残秋挽歌	
            STORY03,	// 4, 頑是なき乱声
            STORY04,	// 5, 道化の臨終
            STORY05,	// 6, 終末事端
            STORY06,	// 7, つみびとをして
            STORY07,	// 8, 始衷終と少女
            STORY08_0, STORY08_1, STORY08_2, STORY08_3,	// 9, 10, 11, 12 或る秋までの歴史
            STORY09,	// 13, 或る秋までの歴史
            KYOJIN01, 	// 14, 精神病十種
            KYOJIN02, 	// 15, 仮構のひと
            KYOJIN03,	// 16, 去人たち
            STORY2ch01
        };

        public static string GetScenarioFilename(ScenarioID id)
        {
            return SCENARIO_FILE_NAME[(int)id];
        }

        /// <summary>
        /// シナリオIDに従ったボイスリストファイルを取得する
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public static string GetVoiceListName(ScenarioID id)
        {
            return VOICE_PATH[(int)id] + "voice.lst";
        }

        /// シナリオスクリプトファイル名定数
        private static readonly string[] SCENARIO_FILE_NAME = new string[]
        {
		    "data/s01.html",	// 0
		    "data/s02.0.html",	// 1
		    "data/s02.1.html",	// 2
		    "data/s02.2.html",	// 3
		    "data/s03.html",	// 4
		    "data/s04.html",	// 5
		    "data/s05.html",	// 6
		    "data/s06.html",	// 7
		    "data/s07.html",	// 8
		    "data/s08.0html",	// 9
		    "data/s08.1html",	// 10
		    "data/s08.2html",	// 11
		    "data/s08.3html",	// 12
		    "data/s09.html",	// 13
		    "data/sKyojin1.html",	// 14
		    "data/sKyojin2.html",	// 15
		    "data/sKyojin3.html",	// 16
		    "data/debug_sKyojin1.html",	// 14
		    "data/debug_sKyojin2.html",	// 15
		    "data/debug_sKyojin3.html",	// 16
		    "data/s2ch01.html"	// 17
	    };

        /** ヴォイスフォルダへの相対パス */
        public static readonly string[] VOICE_PATH = 
        {
		    "snd/voice/s01/",	// data/s01.html
		    "snd/voice/s02/",	// data/s2.0.html
		    "snd/voice/s02_1/",	// data/s2.1.html
		    "snd/voice/s02_2/",	// data/s2.2.html
		    "snd/voice/s03/",	// data/s03.html
		    "snd/voice/s04/",	// data/s04.html
		    "snd/voice/s05/",	// data/s05.html
		    "snd/voice/s06/",	// data/s06.html
		    "snd/voice/s07/",	// data/s07.html
            null,
            null,
            null,
            null,
            null,
		    "snd/voice/kyojin01/",
		    "snd/voice/kyojin02/",
		    "snd/voice/kyojin03/",
		    "snd/voice/2ch01/",
        };

        #endregion
    }
}
