示例#1
0
        /// <summary>
        /// ///////////////////////////////////////////////////////////////
        /// </summary>
        /// <param name="startNoteManager"></param>
        /// <param name="noteFileManager"></param>
        /// <param name="badManager"></param>
        /// <param name="scoreManager"></param>
        #endregion
        
        #region constructor

        public File(StartNoteManager startNoteManager, NoteFileManager noteFileManager, CollisionManager collisionManager, ScoreManager scoreManager, ItemManager itemManager, CurveManager curveManager, GuideLineManager guideLineManager, CharismaManager charismaManager)       
        {

             this.startNoteManager = startNoteManager;
             this.noteFileManager = noteFileManager;
             currentRightNoteIndex = 0;
             playTimeSpan = TimeSpan.Zero;
             this.collisionManager = collisionManager;
             this.scoreManager = scoreManager;
             this.endFile = false;
             this.itemManager = itemManager;

             this.curveManager = curveManager;
             this.guideLineManager = guideLineManager;

             this.charismaManager = charismaManager;

             newNote = true;
        }
示例#2
0
        /// <summary>
        /// LoadContent will be called once per game and is the place to load
        /// all of your content.
        /// </summary>
        protected override void LoadContent()
        {
            // Create a new SpriteBatch, which can be used to draw textures.
            spriteBatch = new SpriteBatch(GraphicsDevice);


#if Debug
        blackRect= Content.Load<Texture2D>(@"Textures\darkBackground");
#endif
            goldPlusEffect10 = Content.Load<Texture2D>(@"ui\goldPlus10");
            goldPlusEffect15 = Content.Load<Texture2D>(@"ui\goldPlus15");

            lifePlusEffect10 = Content.Load<Texture2D>(@"ui\lifePlus10");
            lifePlusEffect15 = Content.Load<Texture2D>(@"ui\lifePlus15");

            darkBackgroundImage = Content.Load<Texture2D>(@"Textures\darkBackground");
            go_back = Content.Load<Texture2D>(@"ui\go_back");
            go_front = Content.Load<Texture2D>(@"ui\go_front");

            //이거 없으면 STARTNOTE TEXTURE가 NULL이라 위치값을 잘못 줄때가 있다.
            spriteSheet = Content.Load<Texture2D>(@"ui\SpriteSheet8");
     
            backJesture = Content.Load<Texture2D>(@"game1\backJesture");
            backJestureManager = new BackJestureManager(backJesture, new Rectangle(0, 0, 204, 204), 10, new Vector2(800, 500));

       
           //타이틀화면
            menuScene = new MenuScene();
            menuScene.LoadContent(Content);

            uiEnergyBackground = Content.Load<Texture2D>(@"ui\uiEnergyBackground");
            energyDarkBack = Content.Load<Texture2D>(@"ui\energyDarkBack");

            processBar = Content.Load<Texture2D>(@"ui\processBar");
            processMark = Content.Load<Texture2D>(@"ui\processMark");

            //아이템관리
            //startnotemanager 생성보다 앞에 있어야 한다.
            itemManager = new ItemManager();
            itemManager.LoadContent(Content);
            itemManager.Init();

            loadingScene = new LoadingScene();
            //loadingScene.LoadContent(Content);


            //게임중 점수관리
            scoreManager = new ScoreManager();

            //상점 대문2
            shopDoor = new ShopDoor(scoreManager);
            shopDoor.LoadContent(Content);
            
            //점수 기록 (TO FILE)
            reportManager = new ReportManager(scoreManager);


            /////아이템 상점 -START
            rightItemShop = new RightItemShop(itemManager,  scoreManager, reportManager);
            rightItemShop.LoadContent(Content);

            leftItemShop = new LeftItemShop(itemManager, scoreManager, reportManager);
            leftItemShop.LoadContent(Content);

            effectItemShop = new EffectItemShop(itemManager, scoreManager, reportManager);
            effectItemShop.LoadContent(Content);
            
            noteItemShop = new NoteItemShop(itemManager, scoreManager, reportManager);
            noteItemShop.LoadContent(Content);

            backgroundItemShop = new BackgroundItemShop(itemManager, scoreManager, reportManager);
            backgroundItemShop.LoadContent(Content);
            /////아이템 상점 -START

            //연주자
            memberManager = new MemberManager(scoreManager);
            memberManager.LoadContent(Content);
            memberManager.init();

            /////텍스쳐 로드 -START
            //배경
            //playBackgroud1 = Content.Load<Texture2D>(@"background\ConcertHall_3");
            //playBackgroud2 = Content.Load<Texture2D>(@"background\crosswalk3");
            
            
            //노트,마커
           // spriteSheet = Content.Load<Texture2D>(@"Textures\SpriteSheet8");
            
            //드래그 노트
           // heart = Content.Load<Texture2D>(@"Textures\heart");
           
            //진행상황
            //uiBackground = Content.Load<Texture2D>(@"ui\background");
            energy = Content.Load<Texture2D>(@"ui\energy");

            //골드 업어
            getGold = Content.Load<Texture2D>(@"gold\getGold");
            //폰트
            georgia = Content.Load<SpriteFont>(@"Fonts\Georgia");

            
            //perfect,good,bad,miss 판정 배너 
            perfectBanner = Content.Load<Texture2D>(@"judgement\perfect");

            goodBanner = Content.Load<Texture2D>(@"judgement\good");

            badBanner = Content.Load<Texture2D>(@"judgement\bad");

            missBanner = Content.Load<Texture2D>(@"judgement\miss");


            noPerson = Content.Load<Texture2D>(@"game1\noperson");



            rightHandTextures = itemManager.GetRightHandTexture();
            leftHandTextures = itemManager.GetLeftHandTexture();
            
            
            //드래그 노트 셀떄

            one = Content.Load<Texture2D>(@"ui\one");
            two = Content.Load<Texture2D>(@"ui\two");
            three = Content.Load<Texture2D>(@"ui\three");


            previousButton = Content.Load<Texture2D>(@"game1\previousButton");
            hoverPreviousButton = Content.Load<Texture2D>(@"game1\hoverPrevious");
            

            nextButton = Content.Load<Texture2D>(@"game1\nextButton");
            hoverNextButton = Content.Load<Texture2D>(@"game1\hoverNextButton");

            loadingForAngle = Content.Load<Texture2D>(@"ui\LoadingKinect");
            //   charisma1 = Content.Load<Texture2D>(@"shopdoor\nogold");
            /////텍스쳐 로드 -END

         

            /////////////////드래그 라인 관련
            

            //드래그 라인
         //   drawLineNote1 = Content.Load<Texture2D>(@"DrawLine\drawLineNote1");

            //드래그 라인 마커점
            drawLineMarker = Content.Load<Texture2D>(@"DrawLine\drawLineMark");
            

            gold = Content.Load<Texture2D>(@"gold\gold");
            menuGold = Content.Load<Texture2D>(@"game1\menuGold");
           
            levelTexture = Content.Load<Texture2D>(@"game1\level");


            //로드하고, 기본적으로 넣어줌
            itemManager.LoadFileItem();

                   
            //현재 장착한 이펙트의 인덱스를 전체 베이스에 찾음
            int effectIndex = itemManager.getEffectIndex();

     
            //콤보 숫자
            comboNumberManager = new ComboNumberManager();
            comboNumberManager.LoadContent(Content);

            //***결과화면 숫자
            //resultNumberManager = new ResultNumberManager();
           // resultNumberManager.LoadContent(Content);

            tutorialScene = new TutorialScene();
            tutorialScene.Load(Content);
              

            //드래그 라인 렌더링
            dragLineRenderer = new LineRenderer();


            //드래그 라인 안의 마커점의 렌더링 
            dragLineMarkerRenderer = new LineRenderer();

            //드래그라인 
            curveManager = new CurveManager(dragLineRenderer, dragLineMarkerRenderer,dragNoteManager,itemManager);

            //가이드 라인 렌더링

            guideLineRenderer = new LineRenderer();

            //가이드 라인 
            guideLineManager = new GuideLineManager(guideLineRenderer);

            //텍스쳐 크기
            ///////이펙트 생성 -START
            

            //폭발 효과
            perfectManager = new PerfectExplosionManager();
            perfectManager.ExplosionInit(itemManager.GetEffectTexture()[effectIndex], itemManager.GetEffectInitFrame()[effectIndex], itemManager.GetEffectFrameCount()[effectIndex], itemManager.GetEffectScale()[effectIndex], itemManager.GetEffectDulation()[effectIndex]);

            goodManager = new GoodExplosionManager();
            goodManager.ExplosionInit(itemManager.GetGoodEffectTexture()[effectIndex], itemManager.GetEffectInitFrame()[effectIndex], itemManager.GetEffectFrameCount()[effectIndex], itemManager.GetEffectScale()[effectIndex], itemManager.GetEffectDulation()[effectIndex]);

            badManager = new BadExplosionManager();
            badManager.ExplosionInit(itemManager.GetBadEffectTexture()[effectIndex], itemManager.GetEffectInitFrame()[effectIndex], itemManager.GetEffectFrameCount()[effectIndex], itemManager.GetEffectScale()[effectIndex], itemManager.GetEffectDulation()[effectIndex]);


            //판정 글씨 나타내기 
            perfectBannerManager = new PerfectBannerManager();
            perfectBannerManager.BannerInit(perfectBanner,new Rectangle(0,0,1380,428),/*sprite로 바꾸면 frameCount바꾸기*/1,0.5f,30);


            goodBannerManager = new GoodBannerManager();
            goodBannerManager.BannerInit(goodBanner, new Rectangle(0, 0, 1020, 368),/*sprite로 바꾸면 frameCount바꾸기*/1, 0.5f, 30);


            badBannerManager = new BadBannerManager();
            badBannerManager.BannerInit(badBanner, new Rectangle(0, 0, 782, 400),/*sprite로 바꾸면 frameCount바꾸기*/1, 0.7f, 30);

            missBannerManager = new MissBannerManager();
            missBannerManager.BannerInit(missBanner, new Rectangle(0, 0, 975, 412),/*sprite로 바꾸면 frameCount바꾸기*/1, 0.5f,30);


      

            //일단은 miss effect로
            goldGetManager = new ExplosionManager();
            goldGetManager.ExplosionInit(getGold,new Rectangle(0,0,200,200), 5, 1.0f, 40);

            ///////이펙트 생성 -END
       
            //시작 노트 관리 생성    
            //여기에 들어가는 텍스쳐가 노트의 텍스쳐가 된다.
            //상점의 텍스쳐가 들어가야 한다. 


            startNoteManager = new StartNoteManager(
                spriteSheet,
                new Rectangle(0, 200, 52, 55),
                1);


            //첫 마커 위치   
            //마커 위치 처음 시작은 일단 마커매니저의 제일 0번째 것으로 시작
            Vector2[] initMarkLocation = MarkManager.GetPattern(0);

        //    removeAreaRec = MarkManager.GetRemoveArea(0);

            //마크 관리 초기화 (STATIC)
            //***시작시 마커 위치에 관한 사항 결정 못함.  
            MarkManager.initialize(
                spriteSheet,
                new Rectangle(0, 200, 50, 55),
                1,
                initMarkLocation[0],
                initMarkLocation[1],
                initMarkLocation[2],
                initMarkLocation[3],
                initMarkLocation[4],
                initMarkLocation[5],
                startNoteManager
                
                );

            //카리스마 매니저
            charismaManager = new CharismaManager();
            charismaManager.LoadContent(Content);

          

            //드래그노트 초기화
            //이것은 노트 안에서 움직이는 마커점
            dragNoteManager = new DragNoteManager(
                 drawLineMarker,
                 itemManager.GetDragNoteBackground()[itemManager.getNoteIndex()],
                 new Rectangle(0, 0, 100, 100),
                 1,
                 15,
                 0,
                 missBannerManager,
                 scoreManager);



            //충돌관리 생성
            collisionManager = new CollisionManager(perfectManager, goodManager, badManager, goldGetManager, scoreManager, memberManager,/*effect크기*/itemManager,perfectBannerManager,goodBannerManager,badBannerManager,missBannerManager,new Vector2(this.Window.ClientBounds.Width,this.Window.ClientBounds.Height),comboNumberManager,charismaManager,dragNoteManager);
            
            //노트정보 관리 생성
            noteFileManager = new NoteFileManager();
            //드래그 라인 렌더링
            dragLineRenderer = new LineRenderer();

            dragLineMarkerRenderer = new LineRenderer();
            //드래그라인 
            curveManager = new CurveManager(dragLineRenderer, dragLineMarkerRenderer, dragNoteManager,itemManager);

          

        //    photoManager = new PhotoManager();
        //    photoManager.LoadContent(Content);


            //노트파일 읽기 관리 생성
            file = new File(startNoteManager, noteFileManager, collisionManager, scoreManager, itemManager, curveManager, guideLineManager, charismaManager);

            SoundFmod.initialize(file);
            //곡선택화면 곡 불러오는 폴더 
          
            //노래폴더 만들기 위해서 테스트
           // String songFile = System.Environment.CurrentDirectory+"\\beethovenSong\\song.txt";
            String dir = System.Environment.CurrentDirectory + "\\beethovenSong";

            DirectoryInfo di = new DirectoryInfo(dir);
            if (di.Exists == false)
            {
                di.Create();
            }
            
           
            //기록 만들기 위해서 테스트
          //  String songRecordFile = System.Environment.CurrentDirectory + "\\beethovenRecord\\song.txt";
            String songRecorddir = System.Environment.CurrentDirectory + "\\beethovenRecord";

            DirectoryInfo diRecord = new DirectoryInfo(songRecorddir);
            if (diRecord.Exists == false)
            {
                diRecord.Create();
            }
            


            
            //사진 폴더  위해서 테스트
            //String picFile = System.Environment.CurrentDirectory + "\\beethovenRecord\\userPicture\\song.txt";
            String picddir = System.Environment.CurrentDirectory + "\\beethovenRecord\\userPicture";
            String defaultPicture = System.Environment.CurrentDirectory + "\\No_Image.png";


            DirectoryInfo diPic = new DirectoryInfo(picddir);
            if (diPic.Exists == false)
            {
                diPic.Create();
                FileInfo fileInfo = new FileInfo(defaultPicture);
                fileInfo.CopyTo(System.Environment.CurrentDirectory + "\\beethovenRecord\\UserPicture\\No_Image.png");
            
            }
            
            
                      

            //곡을 불러오기
            file.FileLoading(dir, "*.mnf");
            
            ////드래그노트 초기화
            ////이것은 노트 안에서 움직이는 마커점
            //dragNoteManager = new DragNoteManager(
            //     drawLineMarker,
            //     new Rectangle(0, 0, 100, 100),
            //     1,
            //     15,
            //     0,
            //     missBannerManager,
            //     scoreManager);

            //골드 초기화
            //크기 0.3
            GoldManager.initialize(
                gold,
                new Rectangle(0, 0, 200, 200),
                1,
                70,
                0,
                0.3f);
            
            
            //***
           

            
            resultManager = new ResultManager(scoreManager);
            resultManager.LoadContent(Content);



            //점수기록판 화면
            recordBoard = new RecordBoard();
            recordBoard.LoadContent(Content);

#if Kinect
            settingBoard = new SettingBoard(this);
            settingBoard.LoadContent(Content);
#endif

            showPictureScene = new ShowPictureScene();
            showPictureScene.LoadContent(Content);

            

            songMenu = new SongMenu(noteFileManager, reportManager);
            songMenu.Load(Content, graphics.GraphicsDevice);




            //LOAD REPORT SCORE FILE
            //점수기록판을 로드해서 게임에 올린다. 

            reportManager.LoadReport();

            //골드를 로드해서 게임에 올린다. 
            reportManager.LoadGoldFromFile();

            currentSongName = "";
           
           // itemManager.LoadFileItem();
#if Kinect
          
        //    messageFont = Content.Load<SpriteFont>("MessageFont");
            setupKinect();

            /*제스쳐 인식인데 
             전체 구간에서 계속 실행 된다. 
             *이것이 다른것에 영향을 줄 수도 있다. 
             */
            activeRecognizer = CreateRecognizer();

            //!!! 페이스 인식, 디버깅 시에 잠시 

#if StartDetact
            settingBoard.LoadCheckFile();
            if(settingBoard.CheckFaceDetact)
            {
                //0 각도 재야함 // 1 각도 잴필요없음 //2 끝남 
                loadingTime = 0;

                ts4 = new ThreadStart(FaceDetect);
                th4 = new Thread(ts4);
                th4.Start();
            }

#endif


#endif
            playingPictures = new Queue();
            showPictureTextures = new Texture2D[5];

            metronomes = new Texture2D[8];
            metronomes[0] = Content.Load<Texture2D>(@"metronome\metronome0");
            metronomes[1] = Content.Load<Texture2D>(@"metronome\metronome1");
            metronomes[2] = Content.Load<Texture2D>(@"metronome\metronome2");
            metronomes[3] = Content.Load<Texture2D>(@"metronome\metronome3");
            metronomes[4] = Content.Load<Texture2D>(@"metronome\metronome4");
            metronomes[5] = Content.Load<Texture2D>(@"metronome\metronome5");
            metronomes[6] = Content.Load<Texture2D>(@"metronome\metronome6");
            metronomes[7] = Content.Load<Texture2D>(@"metronome\metronome7");
        }