Esempio n. 1
0
    public void UpdateTotal()
    {
        // Defaults
        total       = is_value ? value : 0;
        valid_state = true;

        if (script_digit_upper != null)
        {
            Operator upper_op = script_digit_upper.GetOperator();
            if (script_digit_upper.GetIsValue() && !is_value)
            {
                // Above block is value and current block is operator, transfer total
                valid_op = true;
                total    = script_digit_upper.GetTotal();
            }
            else if (!script_digit_upper.GetIsValue() && is_value && upper_op != Operator.invalid)
            {
                // Above block is operator and current block is value, perform operation and calculate new total
                total = ApplyOperation(upper_op, script_digit_upper.GetTotal(), value);
            }
            else // Invalid placement
            {
                valid_state = false;
                script_digit_upper.SetValidState(false);
                script_digit_upper.UpdateColor();
                UpdateColor();
                return;
            }
        }

        // Update lower block's total if exists
        if (script_digit_lower != null)
        {
            script_digit_lower.UpdateTotal();
        }

        UpdateColor();
    }
Esempio n. 2
0
 private void OnCollisionStay(Collision collision)
 {
     if (collision.collider.tag == "Digit" && script_digit_connected == null)
     {
         script_digit_connected = collision.gameObject.GetComponent <Behavior_Digit>();
         if (!script_digit_connected.GetIsValue()) // Don't bind to operators
         {
             script_digit_connected = null;
         }
         else
         {
             value_actual = script_digit_connected.GetTotal();
             CheckTotal();
         }
     }
 }