Пример #1
0
    protected override string IsCorrectlyPlaced()
    {
        if (CanValidate())
        {
            switch (instruction)
            {
            case Util.INIT_INSTRUCTION:
                return((currentStandingOn.HolderID == sortingElementID) ? Util.INIT_OK : Util.INIT_ERROR);

            case UtilSort.MOVE_TO_BUCKET_INST:
                if (!bucketSortInstruction.HasBeenExecuted())
                {
                    // First check if the element is still standing on the init holder
                    if (currentStandingOn != null)
                    {
                        // Check if element is standing on holder (before any user action) / or if mistake and move back
                        if (IntermediateMove && currentStandingOn.HolderID == bucketSortInstruction.HolderID)
                        {
                            return(UtilSort.CORRECT_HOLDER);
                        }
                    }
                    else if (currentInside != null)
                    {
                        if (IntermediateMove && currentInside.BucketID == bucketSortInstruction.BucketID)
                        {
                            Instruction.Status = Util.EXECUTED_INST;
                            return(UtilSort.CORRECT_BUCKET);
                        }
                    }
                    return(UtilSort.WRONG_BUCKET);
                }
                else     // Aftercheck (instruction has been executed)
                {
                    return((currentInside != null && currentInside.BucketID == bucketSortInstruction.BucketID) ? UtilSort.CORRECT_BUCKET : UtilSort.WRONG_BUCKET);
                }

            case UtilSort.MOVE_BACK_INST:
                if (!bucketSortInstruction.HasBeenExecuted())
                {
                    if (currentStandingOn != null)
                    {
                        // Check correct move first
                        if (IntermediateMove && CurrentStandingOn.HolderID == bucketSortInstruction.NextHolderID)
                        {
                            Instruction.Status = Util.EXECUTED_INST;
                            intermediateMove   = false;
                            return(UtilSort.CORRECT_HOLDER);
                        }
                    }
                    else if (currentInside != null)
                    {
                        if (IntermediateMove && CurrentInside.BucketID == bucketSortInstruction.BucketID)
                        {
                            return(UtilSort.CORRECT_BUCKET);
                        }
                        return(UtilSort.WRONG_HOLDER);
                    }
                    return(UtilSort.WRONG_HOLDER);
                }
                else
                {
                    return((currentStandingOn != null && CurrentStandingOn.HolderID == bucketSortInstruction.NextHolderID) ? UtilSort.CORRECT_HOLDER : UtilSort.WRONG_HOLDER);
                }

            case UtilSort.DISPLAY_ELEMENT:
                return((currentInside != null && currentInside.BucketID == bucketSortInstruction.BucketID) ? UtilSort.CORRECT_HOLDER : UtilSort.WRONG_HOLDER);

            default: Debug.Log(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> IsCorrectlyPlaced(): Add '" + instruction + "' case, or ignore"); break;
            }
        }
        return(UtilSort.CANNOT_VALIDATE_ERROR);
    }