public IEnumerator WHEN_ImagesAreCreated_Then_TheImagesShouldBeRandomedWithoutRepetition()
            {
                GameObject canvas = GameObject.Find("Canvas");

                imageHitScritps = canvas.GetComponent <ImageHit>();
                yield return(new WaitForSeconds(1f));

                List <string> images = imageHitScritps.GetInitialTestImages();

                List <string> name_list = new List <string>();

                bool state = false;

                foreach (var item in images)
                {
                    foreach (var name in name_list)
                    {
                        if (item == name)
                        {
                            state = true;
                        }
                    }

                    name_list.Add(item);
                }

                Assert.IsFalse(state, "message : ImageRepetition" + state);
            }
예제 #2
0
            public IEnumerator WHEN_FillAllGameDataFunctionCalled_THEN_GameDataIsFilled()
            {
                // Make all games labelled as played
                Globals.isBalloonsButtonOn     = false;
                Globals.isCTFButtonOn          = false;
                Globals.isImageHitButtonOn     = false;
                Globals.isSquaresButtonOn      = false;
                Globals.isCatchTheBallButtonOn = false;
                Globals.isJudgeTheBallButtonOn = false;
                Globals.isSaveOneBallButtonOn  = false;

                BatterySessionManagement batterySessionManagement = new BatterySessionManagement();

                batterySessionManagement.FillAllGameData();

                yield return(null);

                // Game data should be filled with actual gameplay data from each game
                Assert.AreEqual(Balloons.GetGameplayData(), batterySessionManagement.balloonsData);
                Assert.AreEqual(CatchTheThief.GetGameplayData(), batterySessionManagement.ctfData);
                Assert.AreEqual(Squares.GetGameplayData(), batterySessionManagement.squaresData);
                Assert.AreEqual(ImageHit.GetGameplayData(), batterySessionManagement.imageHitData);
                Assert.AreEqual(CatchTheBall.GetGameplayData(), batterySessionManagement.catchTheBallData);
                Assert.AreEqual(JudgeTheBall.GetGameplayData(), batterySessionManagement.judgeTheBallData);
                Assert.AreEqual(SaveOneBall.GetGameplayData(), batterySessionManagement.saveOneBallData);
            }
예제 #3
0
 public void OnControllerTrigger()
 {
     if (HasTarget())
     {
         triggerDownObject = currentTarget;
     }
 }
            public IEnumerator WHEN_SecondRoundEnd_Then_SomeImageDisplayedTwice()
            {
                ImageHit imagehit = imageHitScritps;

                yield return(new WaitForSeconds(0.5f));

                imagehit.OnRound2Over();
                Assert.True(imagehit.currentRoundTestData.Count == 0, "message :The no CheckOnRound2Over");
            }
            public IEnumerator WHEN_SecondRoundStart_Then_TheNumberOfImagesShouldNoLessThan3()
            {
                GameObject canvas = GameObject.Find("Canvas");

                imageHitScritps = canvas.GetComponent <ImageHit>();
                yield return(new WaitForSeconds(1f));

                List <TImage> images = imageHitScritps.OnRoundStart(2);

                Assert.IsFalse(images.Count < 3, "message : ImageRepetition" + images.Count);
            }
            public IEnumerator CheckOnStop()
            {
                ImageHit imagehit = imageHitScritps;

                yield return(new WaitForSeconds(0.5f));

                imagehit.OnStop();



                Assert.True(imagehit.gameState == -1, "message :The no CheckOnStop");
            }
            public IEnumerator CheckAddRoundTestData()
            {
                ImageHit imagehit = new ImageHit();

                yield return(new WaitForSeconds(0.5f));

                ImageHit.imageHitData         = new ImageHitStorage();
                ImageHit.imageHitData.Rounds  = new List <List <ImageHitRound> >();
                imagehit.currentRoundTestData = new List <ImageHitRound>();
                imagehit.AddRoundTestData();
                Assert.True(ImageHit.imageHitData.Rounds.Count >= 0, "message :The no CheckAddRound");
            }
        /// <summary>
        /// FillAllGameData is to update game data objects with corresponding raw gameplay data.
        /// It will only get gameplay data for the games that have been played.
        /// </summary>
        public void FillAllGameData()
        {
            // Get gameplay data for Balloons
            // If the game has been played, get the gameplay data; else, skip this game
            if (!notYetPlayBalloons)
            {
                balloonsData = Balloons.GetGameplayData();
            }

            // Get gameplay data for Squares
            // If the game has been played, get the gameplay data; else, skip this game
            if (!notYetPlaySquares)
            {
                squaresData = Squares.GetGameplayData();
            }


            // Get gameplay data for Catch The Thief
            // If the game has been played, get the gameplay data; else, skip this game
            if (!notYetPlayCTF)
            {
                ctfData = CatchTheThief.GetGameplayData();
            }

            // Get gameplay data for ImageHit
            // If the game has been played, get the gameplay data; else, skip this game
            if (!notYetPlayImageHit)
            {
                imageHitData = ImageHit.GetGameplayData();
            }

            // Get gameplay data for Catch The Ball
            // If the game has been played, get the gameplay data; else, skip this game
            if (!notYetCatchTheBall)
            {
                catchTheBallData = CatchTheBall.GetGameplayData();
            }

            // Get gameplay data for Save One Ball
            // If the game has been played, get the gameplay data; else, skip this game
            if (!notYetSaveOneBall)
            {
                saveOneBallData = SaveOneBall.GetGameplayData();
            }

            // Get gameplay data for Judge The Ball
            // If the game has been played, get the gameplay data; else, skip this game
            if (!notYetJudgeTheBall)
            {
                judgeTheBallData = JudgeTheBall.GetGameplayData();
            }
        }
            public IEnumerator CheckOnKey()
            {
                ImageHit imagehit = imageHitScritps;

                yield return(new WaitForSeconds(0.5f));

                imagehit.gameState    = 1;
                imagehit.prepareTime  = 0;
                imagehit.serialNumber = 1;
                imagehit.OnKey(true, new TimeAndKey(0, KeyCode.Space));
                Assert.True(ImageHit.currentImageHitRound.isKeyPressed, "message :The no CheckOnRound1Over");

                ImageHit.currentImageHitRound.UnidentifiedKeysPressed = null;
                imagehit.OnKey(false, new TimeAndKey(0, KeyCode.Space));
                Assert.True(ImageHit.currentImageHitRound.isKeyPressed, "message :The no CheckOnRound1Over");
            }
            public IEnumerator CheckFindImage()
            {
                ImageHit imagehit = imageHitScritps;

                yield return(new WaitForSeconds(0.5f));

                imagehit.gameState    = 0;
                imagehit.serialNumber = 1;
                imagehit.NextImage();

                TImage ti = imagehit.FindImage(imagehit.currentRoundTestImages, imagehit.currentRoundTestData[0]);

                Assert.True(ti != null, "message :The no CheckFindImage");

                TImage t2 = imagehit.FindImage(null, imagehit.currentRoundTestData[0]);

                Assert.True(ti != null, "message :The no CheckFindImage");
            }
            public IEnumerator CheckNextImageFalse()
            {
                ImageHit imagehit = imageHitScritps;

                yield return(new WaitForSeconds(0.5f));

                imagehit.gameState    = 0;
                imagehit.serialNumber = 10;
                imagehit.NextImage();
                Assert.True(imagehit.gameState == 1, "message :The no CheckNextImageFalse");

                imagehit.serialNumber = 10;
                imagehit.gameState    = 2;
                imagehit.NextImage();
                Assert.True(imagehit.gameState == -1, "message :The no CheckNextImageFalse2");

                imagehit.NextImage();
                Assert.True(imagehit.gameState == -1, "message :The no CheckNextImageFalse2");
            }
예제 #12
0
    public void OnControllerTriggerRelease()
    {
        if (HasTarget())
        {
            if (currentTarget.target.GetComponent <MenuOption> ())
            {
                Logger.LogMenuInteraction(currentTarget.target.name);
                currentTarget.target.GetComponent <MenuOption> ().SelectOption();
                return;
            }
        }

        if (!controller.gripDown)
        {
            SingleSelect();
        }
        else
        {
            AdditiveSelection();
        }
        triggerDownObject = default(ImageHit);
    }
            // Once scene loaded, store important game objects for the tests
            // into instance variables.
            void SetGameObjects(Scene scene, LoadSceneMode mode)
            {
                imageHitScritps = GameObject.Find("Canvas").GetComponent <ImageHit>();

                SceneManager.sceneLoaded -= SetGameObjects;
            }
            public IEnumerator CheckOnRound1Over()
            {
                ImageHit imagehit = imageHitScritps;

                yield return(new WaitForSeconds(0.5f));

                ImageHit.imageHitData         = new ImageHitStorage();
                imagehit.currentRoundTestData = new List <ImageHitRound>();
                imagehit.OnRound1Over();
                Assert.True(imagehit.canShowNextImage, "message :The no CheckOnRound1Over");


                ImageHit.imageHitData         = new ImageHitStorage();
                imagehit.currentRoundTestData = new List <ImageHitRound>();

                ImageHitRound image1 = new ImageHitRound();
                ImageHitRound image2 = new ImageHitRound();

                image1.isCorrectlyIdentified = true;
                imagehit.currentRoundTestData.Add(image1);
                imagehit.currentRoundTestData.Add(image2);
                imagehit.OnRound1Over();
                Assert.True(imagehit.canShowNextImage, "message :The no CheckOnRound1Over");


                ImageHit.imageHitData         = new ImageHitStorage();
                imagehit.currentRoundTestData = new List <ImageHitRound>();

                ImageHitRound image3 = new ImageHitRound();
                ImageHitRound image4 = new ImageHitRound();
                ImageHitRound image5 = new ImageHitRound();
                ImageHitRound image6 = new ImageHitRound();

                image3.isCorrectlyIdentified = true;
                image4.isCorrectlyIdentified = true;
                image5.isCorrectlyIdentified = true;
                image6.isCorrectlyIdentified = true;

                imagehit.currentRoundTestData.Add(image3);
                imagehit.currentRoundTestData.Add(image4);
                imagehit.currentRoundTestData.Add(image5);
                imagehit.currentRoundTestData.Add(image6);
                imagehit.OnRound1Over();
                Assert.True(imagehit.canShowNextImage, "message :The no CheckOnRound1Over");



                ImageHit.imageHitData         = new ImageHitStorage();
                imagehit.currentRoundTestData = new List <ImageHitRound>();

                ImageHitRound image7  = new ImageHitRound();
                ImageHitRound image8  = new ImageHitRound();
                ImageHitRound image9  = new ImageHitRound();
                ImageHitRound image10 = new ImageHitRound();


                imagehit.currentRoundTestData.Add(image7);
                imagehit.currentRoundTestData.Add(image8);
                imagehit.currentRoundTestData.Add(image9);
                imagehit.currentRoundTestData.Add(image10);
                imagehit.OnRound1Over();
                Assert.True(imagehit.canShowNextImage, "message :The no CheckOnRound1Over");
            }
예제 #15
0
 void ClearTarget()
 {
     currentTarget = default(ImageHit);
 }
예제 #16
0
    void UpdateTarget()
    {
        Vector3 fwd = transform.TransformDirection(Vector3.forward);

        RaycastHit[] hits;

        hits = Physics.RaycastAll(transform.position, fwd, 20);
        bool            canvasHit    = false;
        bool            editPlaneHit = false;
        List <ImageHit> imagesHit    = new List <ImageHit>();
        List <ImageHit> framesHit    = new List <ImageHit> ();

        // List<ImageHit> menuOptionsHit = new List<ImageHit> ();

        foreach (RaycastHit hit in hits)
        {
            if (hit.collider.gameObject.tag == "Image")
            {
                imagesHit.Add(new ImageHit(hit.collider.gameObject, hit.point));
                continue;
            }

            if (hit.collider.gameObject.tag == "Frame")
            {
                framesHit.Add(new ImageHit(hit.collider.gameObject, hit.point));
                continue;
            }

            if (hit.collider.gameObject.tag == "MainCanvas")
            {
                canvasHitAt = hit.point;
                canvasHit   = true;
                continue;
            }

            if (hit.collider.gameObject.tag == "MenuOption")
            {
                currentTarget = new ImageHit(hit.collider.gameObject, hit.point);
                return;
            }

            if (hit.collider.gameObject.tag == "Temp")
            {
                editPlaneHitAt = hit.point;
                editPlaneHit   = true;
                continue;
            }
        }

        if (!editPlaneHit)
        {
            editPlaneHitAt = default(Vector3);
        }

        if (!canvasHit)
        {
            crosshair.HideCrosshair();
            ray.UpdateRay();
            canvasHitAt = default(Vector3);
        }
        else
        {
            if (layerManager.HasSelectedFrames() && controller.trackpadDown)
            {
                crosshair.HideCrosshair();
                HideRay();
            }
        }

        List <Layer> sortedLayers = layerManager.GetLayers();
        bool         imageFound   = false;

        foreach (Layer layer in sortedLayers)
        {
            foreach (ImageHit imgHit in imagesHit)
            {
                if (layer.layerImage == imgHit.target.GetComponent <Image>())
                {
                    imageFound = true;
                    if (currentTarget.target != imgHit.target)
                    {
                        controller.Vibrate(vibrationForce);
                    }
                    currentTarget = imgHit;
                    break;
                }
            }
            if (imageFound)
            {
                break;
            }
        }

        // If no image have been hit but a frame has, take the first frame hit and set it as the current target
        if (!imageFound)
        {
            if (framesHit.Count > 0 && layerManager.rearrangementMode)
            {
                currentTarget = framesHit [0];
            }
            else
            {
                currentTarget = default(ImageHit);
            }
        }

        if (!HasTarget() && canvasHit)
        {
            ray.UpdateRay(Vector3.Distance(transform.position, canvasHitAt));
            crosshair.ShowCrosshair();
            crosshair.MoveCrosshair(canvasHitAt);
        }

        if (HasTarget())
        {
            crosshair.HideCrosshair();
        }
    }