bool tryPlacePiece(KeyCode key, out TSGameTile targetTile) { targetTile = getTargetTile(key, activeTile); bool valid = isValidPlacement(activeTile, targetTile); clearActiveTile(); return(valid); }
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); } } }
void trackTile(TSGameTile tile) { if (tileMatches.ContainsKey(tile.GetMatchCondition)) { tileMatches[tile.GetMatchCondition] = tile; } else { tileMatches.Add(tile.GetMatchCondition, tile); } }
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); }
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); } }
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); } }
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)); } }
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); } }
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); } } }
void clearActiveTile() { activeTile.ClearPiece(); activeTile = null; }