Exemple #1
0
    public bool IsSizeChangeable(EntityType type)
    {
        GameObject prefab     = prefabDB.GetPrefab(type);
        Changeable changeable = prefab.GetComponent <Changeable>();

        return(changeable != null && changeable.Resizable);
    }
Exemple #2
0
 public bool Equals(Changeable other)
 {
     if (other == null)
     {
         return(false);
     }
     return(GetType() == other.GetType() && Prop == other.Prop);
 }
Exemple #3
0
    public void Change(EvalContext context, EntityType entity)
    {
        Entity     target     = context.Target;
        Changeable changeable = target.GetComponent <Changeable>();

        if (changeable == null)
        {
            Debug.LogError($"Cannot change entity {target} to Entity {entity}");
            return;
        }

        Destroy(target.gameObject);
        GameObject prefab = prefabDB.GetPrefab(entity);

        target         = Instantiate(prefab, target.transform.position, prefab.transform.rotation).GetComponent <Entity>();
        context.Target = target; // Assign new target (because object has changed)

        Rigidbody rb = target.GetComponent <Rigidbody>();

        if (rb != null)
        {
            rb.useGravity = false;
        }

        //RuneStock.Inst.DeductRune(new RuneType(entity));

        StartCoroutine(
            StartGradualAction(timer =>
        {
            target.transform.localScale = Vector3.Lerp(
                new Vector3(0, 0, 0), new Vector3(1, 1, 1), timer);
        }, () =>
        {
            target.transform.localScale = new Vector3(1, 1, 1);
            if (rb != null)
            {
                rb.useGravity = true;
            }
        },
                               1.0f)
            );
    }
        public void Checkpoint_not_equal_after_value_has_changed()
        {
            // ARRANGE

            var left = new Changeable <string>
            {
                Data = "a"
            };

            var checkpoint = left.Flatten().ToArray();

            left.Data = "b";

            // ACT

            var result = left.DeepCompare(checkpoint);

            // ASSERT

            Assert.False(result.AreEqual);
            Assert.Equal(left.PropertyPath(l => l.Data).ToString(), result.Different.Values.Single());
        }
        public void Checkpoint_not_equal_after_array_item_was_added()
        {
            // ARRANGE

            var left = new Changeable <string[]>
            {
                Data = new[] { "a" }
            };

            var checkpoint = left.Flatten().ToArray();

            left.Data = new[] { "a", "b" };

            // ACT

            var result = left.DeepCompare(checkpoint);

            // ASSERT

            Assert.False(result.AreEqual);
            Assert.Equal(left.PropertyPath(l => l.Data[1]).ToString(), result.Missing.Right.Single());
        }
Exemple #6
0
 private void Awake()
 {
     changeable = GetComponent <Changeable>();
     rb         = GetComponent <Rigidbody>();
     cd         = GetComponent <ContactDetector>();
 }
Exemple #7
0
    void Update()
    {
        RaycastHit hit;

        Changeabletext.text = "";
        if (Physics.Raycast(cam.transform.position, cam.transform.forward, out hit, range))
        {
            if (hit.transform.tag == "Door")
            {
                Animator door = hit.transform.GetComponent <Animator>();

                if (progress != OpenTreshold)
                {
                    progress += 1f;
                    LoadingSlider.gameObject.SetActive(true);
                    LoadingSlider.value = progress;
                }
                else
                {
                    progress = 0;
                    LoadingSlider.gameObject.SetActive(false);
                    door.SetBool("IsOpen", true);
                }

                //if (door.GetBool("IsOpen"))
                //{
                //    Changeabletext.text = doortextClose;
                //    if (Input.GetKeyUp(KeyCode.E))
                //    {
                //        door.SetBool("IsOpen", false);
                //    }
                //}
                //else
                //{
                //    Changeabletext.text = doortextOpen;
                //    if (Input.GetKeyUp(KeyCode.E))
                //    {
                //        door.SetBool("IsOpen", true);
                //    }
                //}
            }
        }
        if (hit.transform != null)
        {
            if (hit.transform.tag == "Changeable")
            {
                Changeable target = hit.transform.GetComponent <Changeable>();

                if (Changeable.level >= target.neededlvl)
                {
                    Changeabletext.text = target.changetext;
                }
                else
                {
                    Changeabletext.text = "You must have at least " + target.neededlvl + " points to change this";
                }

                if (Input.GetKeyUp(KeyCode.E))
                {
                    audiosource.PlayOneShot(woosh);
                    target.Change();
                    Changeabletext.text = "";
                }
            }

            if (hit.transform.tag == "Handle")
            {
                if (Input.GetKeyUp(KeyCode.E))
                {
                    Animator handle;

                    if (hit.transform.childCount == 0)
                    {
                        handle = hit.transform.GetComponentInParent <Animator>();
                    }
                    else
                    {
                        handle = hit.transform.GetComponentInChildren <Animator>();
                    }
                    handle.SetBool("IsDown", true);
                }
                Changeabletext.text = Handletext;
            }

            if (hit.transform.tag == "KeycardReader")
            {
                Animator keycardanim = hit.transform.GetComponent <Animator>();
                if (TargetManager.HasKeycard)
                {
                    Changeabletext.text = "Press E to use your Keycard";
                    if (Input.GetKeyUp(KeyCode.E))
                    {
                        keycardanim.SetBool("IsOpen", true);
                    }
                }
                else
                {
                    Changeabletext.text = "You have to find a keycard";
                }
            }
        }
    }
Exemple #8
0
    public void Change(EvalContext context, ChangeType type)
    {
        Entity      target     = context.Target;
        Changeable  changeable = target.GetComponent <Changeable>();
        BoxCollider collider   = target.GetComponent <BoxCollider>();

        if (changeable == null)
        {
            //Debug.LogError($"Cannot change entity {target} to ChangeType {type}");
            return;
        }
        if (!changeable.Resizable)
        {
            Debug.LogError("Can't change its size");
            return;
        }

        //Rigidbody rb = target.GetComponent<Rigidbody>();
        Moveable        moveable = target.GetComponent <Moveable>();
        ContactDetector cd       = target.GetComponent <ContactDetector>();

        Vector3 finalSize = Vector3.one;

        switch (type)
        {
        case ChangeType.Big:
            if (!changeable.big)
            {
                cd.CheckSurroundingObstacles();
                if (changeable.IsConfined())
                {
                    return;
                }
                moveable.Ungravitate();
                finalSize           = target.transform.localScale * 3;
                changeable.changing = true;
                changeable.big      = true;
                changeable.SwellSound();
            }
            else
            {
                return;
            }
            break;

        case ChangeType.Small:
            if (changeable.big)
            {
                moveable.Ungravitate();
                finalSize           = target.transform.localScale / 3;
                changeable.changing = true;
                changeable.big      = false;
                changeable.ShrinkSound();
            }
            else
            {
                return;
            }
            break;

        default:
            Debug.LogError($"Unsupported ChangeType {type}");
            return;
        }

        //RuneStock.Inst.DeductRune(new RuneType(type));

        Vector3 originalPosition = target.transform.position;
        Vector3 finalPosition    = (type == ChangeType.Big) ? changeable.BePushed(originalPosition) : originalPosition;

        StartCoroutine(
            StartGradualAction(timer =>
        {
            target.transform.position = Vector3.Lerp(
                originalPosition, finalPosition, timer
                );

            target.transform.localScale = Vector3.Lerp(
                target.transform.localScale, finalSize, timer);

            //Debug.Log($"({Mathf.Round(10 * (-5 - target.transform.position.x)/timer)/10}, { (target.transform.position.y + 2) / timer} kinematic:{target.GetComponent<Rigidbody>().isKinematic} { moveable.YTendency })");
        }, () =>
        {
            target.transform.localScale = finalSize;
            changeable.changing         = false;
            changeable.AdjustPosition();
            collider.size = type == ChangeType.Big ? new Vector3(0.97f, 0.97f, 0.97f) : new Vector3(0.9f, 0.9f, 0.9f);
        },
                               1.0f
                               )
            );
    }
Exemple #9
0
 protected Assignment(Changeable changeable)
 {
     this.changeable = changeable;
 }
Exemple #10
0
 public void Cleanup()
 {
     GameObject.DestroyImmediate(this.changeable, true);
     this.changeable = null;
 }
Exemple #11
0
 private void ShowChangeableValue(Changeable c, TextBox txtNew, TextBox txtCurr)
 {
     txtNew.Text  = c.NewValue;
     txtCurr.Text = c.CurrentValue;
 }