コード例 #1
0
ファイル: GameSetup.cs プロジェクト: raynler/DoomUnity
    // Use this for initialization
    void Start()
    {
        main = this;
        Settings.Init();
        ParseArguments();

        playerInventory = new PlayerInventory();

        Settings.Set("nomonsters", args.nomonsters ? "true" : "false");

        midiEnabled = args.midi;

        engineWad = new WadFile("nasty.wad");

        if (midiEnabled)
        {
            if (File.Exists(args.soundfont))
            {
                midiPlayer = gameObject.AddComponent <MidiPlayer>();
                midiPlayer.LoadBank(new PatchBank(File.OpenRead(args.soundfont), "sf2"));
            }
            else
            {
                if (engineWad.Contains("GMBANK"))
                {
                    midiPlayer = gameObject.AddComponent <MidiPlayer>();
                    midiPlayer.LoadBank(new PatchBank(engineWad.GetLumpAsMemoryStream("GMBANK"), "bank"));
                }
                else
                {
                    Debug.LogError("No soundfont found, disabling midi");
                }
            }
        }

        IwadData iwadData = JsonUtility.FromJson <IwadData>(engineWad.GetLumpAsText("IWADS"));

        cheatCodes = new List <string>()
        {
            "idclev",
            "idclip",
            "kill",
            "test"
        };

        SetupTitleCamera();

        string iwadDirectory = Settings.Get("iwads_path", "./");

        if (args.iwad == "")           // Run IWAD selection tool

        {
            foundIwads = new List <IwadInfo>();
            iwadPaths  = new List <string>();

            var fileInfo = new DirectoryInfo(iwadDirectory).GetFiles();
            foreach (var file in fileInfo)
            {
                string fileMd5 = WadFile.GetMD5(file.FullName);
                if (file.Extension.ToUpper() == ".WAD")
                {
                    for (int i = 0; i < iwadData.iwads.Length; i++)
                    {
                        if (fileMd5 == iwadData.iwads[i].md5)
                        {
                            foundIwads.Add(iwadData.iwads[i]);
                            iwadPaths.Add(file.FullName);
                        }
                    }
                }
            }

            if (foundIwads.Count == 0)
            {
                Debug.LogError("Cannot find any iwads!");
            }
            if (foundIwads.Count > 1)
            {
                iwadSelector = true;
            }

            if (foundIwads.Count == 1)
            {
                SetupWad(foundIwads[0], iwadPaths[0]);
            }
        }
        else
        {
            for (int i = 0; i < iwadData.iwads.Length; i++)
            {
                if (WadFile.GetMD5(args.iwad) == iwadData.iwads[i].md5)
                {
                    SetupWad(iwadData.iwads[i], args.iwad);
                    break;
                }
            }
        }
    }