Beispiel #1
0
    bool tryPlacePiece(KeyCode key, out TSGameTile targetTile)
    {
        targetTile = getTargetTile(key, activeTile);
        bool valid = isValidPlacement(activeTile, targetTile);

        clearActiveTile();
        return(valid);
    }
Beispiel #2
0
    void Update()
    {
        bool successfulPlacement = false;

        if (hasActiveTile)
        {
            bool       keyPressed = false;
            TSGameTile targetTile = null;
            if (Input.GetKeyDown(leftKey))
            {
                keyPressed          = true;
                successfulPlacement = tryPlacePiece(leftKey, out targetTile);
                leftButton.BeginPress();
            }
            else if (Input.GetKeyDown(rightKey))
            {
                keyPressed          = true;
                successfulPlacement = tryPlacePiece(rightKey, out targetTile);
                rightButton.BeginPress();
            }
            if (keyPressed && targetTile != null)
            {
                targetTile.TimedShowIcon(successfulPlacement);
                if (hasCurrentTask)
                {
                    recordReponseTime();
                }
            }
        }
        bool buttonWasUp = false;

        if (Input.GetKeyUp(leftKey))
        {
            leftButton.EndPress();
            buttonWasUp = true;
        }
        else if (Input.GetKeyUp(rightKey))
        {
            rightButton.EndPress();
            buttonWasUp = true;
        }
        if (buttonWasUp)
        {
            rightButton.SetInactive();
            leftButton.SetInactive();
            if (hasCurrentTask)
            {
                recordTaskTime();
                sendTask(currentTask,
                         successfulPlacement ? TSResponseStatus.Correct : TSResponseStatus.Error,
                         responseTime,
                         taskTime);
            }
        }
    }
Beispiel #3
0
 void trackTile(TSGameTile tile)
 {
     if (tileMatches.ContainsKey(tile.GetMatchCondition))
     {
         tileMatches[tile.GetMatchCondition] = tile;
     }
     else
     {
         tileMatches.Add(tile.GetMatchCondition, tile);
     }
 }
Beispiel #4
0
    TSGamePiece spawnPiece(StimuliSet set)
    {
        toggleAllPiecesVisible(isVisible: false);
        TSGamePiece piece      = choosePieceToSpawn();
        int         pieceIndex = ArrayUtil.IndexOf(boardPieces, piece);

        this.activeTile = boardTiles[pieceIndex];
        piece.SetPiece(batch, set);
        activeTile.SetPiece(piece);
        this.currentTask = trackTask(set, pieceIndex);
        return(piece);
    }
Beispiel #5
0
    TSGameTile getTargetTile(KeyCode key, TSGameTile occupiedTile)
    {
        TSMatchCondition targetCondition = getMatchCondition(key, occupiedTile.GetMatchType);
        TSGameTile       targetTile;

        if (tileMatches.TryGetValue(targetCondition, out targetTile))
        {
            return(targetTile);
        }
        else
        {
            Debug.LogError("Could not find specified target tile");
            return(null);
        }
    }
Beispiel #6
0
    bool isValidPlacementHybrid(TSPieceID id, HybridTaskBatch hybridBatch, TSGameTile targetTile)
    {
        switch (targetTile.GetMatchCondition)
        {
        case TSMatchCondition.Stimuli1Category1:
            if (id.Stimuli1Image == null)
            {
                return(hybridBatch.IsValidStimuli1Category1(id.Stimuli1));
            }
            else
            {
                return(hybridBatch.IsValidStimuli1Category1(id.Stimuli1Image));
            }

        case TSMatchCondition.Stimuli1Category2:
            if (id.Stimuli1Image == null)
            {
                return(hybridBatch.IsValidStimuli1Category2(id.Stimuli1));
            }
            else
            {
                return(hybridBatch.IsValidStimuli1Category2(id.Stimuli1Image));
            }

        case TSMatchCondition.Stimuli2Category1:
            if (id.Stimuli2Image == null)
            {
                return(hybridBatch.IsValidStimuli2Category1(id.Stimuli2));
            }
            else
            {
                return(hybridBatch.IsValidStimuli2Category1(id.Stimuli2Image));
            }

        case TSMatchCondition.Stimuli2Category2:
            if (id.Stimuli2Image == null)
            {
                return(hybridBatch.IsValidStimuli2Category2(id.Stimuli2));
            }
            else
            {
                return(hybridBatch.IsValidStimuli2Category2(id.Stimuli2Image));
            }

        default:
            return(false);
        }
    }
Beispiel #7
0
    bool isValidPlacement(TSGameTile sourceTile, TSGameTile targetTile)
    {
        TSPieceID id = sourceTile.GetPiece.ID;

        if (id.IsHybrid)
        {
            return(isValidPlacementHybrid(id, batch as HybridTaskBatch, targetTile));
        }
        else if (id.IsImages)
        {
            return(isValidPlacementImage(id, batch as ImageTaskBatch, targetTile));
        }
        else
        {
            return(isValidPlacementText(id, batch, targetTile));
        }
    }
Beispiel #8
0
    bool isValidPlacementImage(TSPieceID id, ImageTaskBatch batch, TSGameTile targetTile)
    {
        switch (targetTile.GetMatchCondition)
        {
        case TSMatchCondition.Stimuli1Category1:
            return(batch.IsValidStimuli1Category1(id.Stimuli1Image));

        case TSMatchCondition.Stimuli1Category2:
            return(batch.IsValidStimuli1Category2(id.Stimuli1Image));

        case TSMatchCondition.Stimuli2Category1:
            return(batch.IsValidStimuli2Category1(id.Stimuli2Image));

        case TSMatchCondition.Stimuli2Category2:
            return(batch.IsValidStimuli2Category2(id.Stimuli2Image));

        default:
            return(false);
        }
    }
Beispiel #9
0
    IEnumerator spawnCoroutine()
    {
        while (this.spawningActive)
        {
            yield return(new WaitForSeconds(spawnDelay));

            TSGameTile previousTile = activeTile;
            bool       tooSlow      = false;
            if (hasCurrentTask)
            {
                sendTask(currentTask, TSResponseStatus.TooSlow, 0, 0);
                tooSlow = true;
            }
            rightButton.SetActive();
            leftButton.SetActive();
            toggleAllTileIcons(visible: false);
            StimuliSet stimuli = data.GetSet();
            spawnPiece(stimuli);
            if (tooSlow && previousTile)
            {
                previousTile.TimedShowIcon(successfulPlacement: false);
            }
        }
    }
Beispiel #10
0
 void clearActiveTile()
 {
     activeTile.ClearPiece();
     activeTile = null;
 }