Exemple #1
0
    //private void EnableChild(BrokenPart target, bool enable)
    //{
    //    target.transform.GetChild(0).gameObject.SetActive(enable);
    //}

    private static void ToggleChild(BrokenPart target)
    {
        for (int i = 0; i < target.transform.childCount; i++)
        {
            target.transform.GetChild(i)
            .gameObject.SetActive(!target.transform.GetChild(i).gameObject.activeInHierarchy);
        }
    }
Exemple #2
0
    /// <summary>
    /// Breaks the current part in a specific way, but only if the part can break that way.
    /// </summary>
    internal bool BreakSpecific(BrokenPart.BreakType brkTyp)
    {
        currentlyBroken |= brkTyp & possibleBreaks;		//<currentlyBroken> += the intersection of <possibleBreaks> and <brkTyp>

        if (Backend.BrokenParts.ContainsKey(part.GetHashCode()))			//If already broken...
            Backend.BrokenParts[part.GetHashCode()].UpdateProblems(currentlyBroken);	//Update the break
        else
            Backend.regBrokenPart(new BrokenPart(part, currentlyBroken));	//Otherwise, register the new break

        return (brkTyp & possibleBreaks) > 0;
    }
Exemple #3
0
    public void ChangePart(BrokenPart part, bool fix)
    {
        if (part.swapMesh)
        {
            ChangeMesh(fix ? part.toMesh : part.origMesh, part);
        }

        if (part.swapMaterial)
        {
            ChangeMaterial(fix ? part.toMaterial : part.origMaterial, part);
        }

        if (part.swapChildState)
        {
            ToggleChild(part);
        }

        if (part.enableSwapper)
        {
            if (fix)
            {
                EnableSwapper(part, true);
            }

            else
            {
                EnableSwapper(part, false);
                ChangeMaterial(part.origMaterial, part);
            }
        }
        if (fix)
        {
            part.transform.GetChild(0).GetComponent <ObjectSpewer>().go = true;
        }
        if (parts.Count <= 0)
        {
            manager.EndGame();
        }
    }
Exemple #4
0
    private void Update()
    {
        Ray        ray = Camera.main.ScreenPointToRay(Input.mousePosition);
        RaycastHit hit;

        if (Physics.Raycast(ray, out hit, viewDistance))
        {
            Debug.DrawLine(ray.origin, hit.point);

            if (hit.transform.tag == "Interactable")
            {
                indexCard.GetComponent <Animator>().SetTrigger("SlideUp");
                indexUp = true;
                indexCard.GetComponentInChildren <Text>().text = hit.transform.name;
                crosshair.color = crosshairHighlight;

                if (hamTimer < 0)
                {
                    if (Input.GetMouseButtonDown(0))
                    {
                        if (hit.transform.GetComponent <BrokenPart>())
                        {
                            BrokenPart brokenPart = hit.transform.GetComponent <BrokenPart>();
                            brokenPart.health -= damage;
                            audioSource.PlayOneShot(hamSounds[Random.Range(0, hamSounds.Length)]);
                            hammerAnim.SetTrigger("Ham");

                            if (brokenPart.health <= 0 &&
                                brokenPart.broken)
                            {
                                hit.transform.parent.GetComponent <MachineController>().ChangePart(brokenPart, true);
                                brokenPart.health =
                                    brokenPart.origHealth;
                                brokenPart.broken = false;
                                parts++;
                                fixCount.text = parts + "/" + 4;
                                if (parts == 4)
                                {
                                    thisPlayer.SetPlace(1);
                                    thisPlayer.mingameWins += 10;
                                    manager.EndGame();
                                }
                            }
                            hamTimer = origHamTimer;
                        }
                    }
                }
                else
                {
                    hamTimer -= Time.deltaTime;
                }

                if (!Input.GetMouseButtonDown(1))
                {
                    return;
                }
                if (hit.transform.name == "Data Point")
                {
                    thisPlayer.mingamePts++;
                    ptsCount.text = "Data Pts: " + thisPlayer.mingamePts;
                    hit.transform.gameObject.SetActive(false);
                }
            }
        }
        else
        {
            if (indexUp)
            {
                indexCard.GetComponent <Animator>().SetTrigger("SlideDown");
                indexUp = false;
            }
            crosshair.color = crosshairNormal;
        }
    }
 /// <summary>
 /// Compares the breaks in each part to see if they're the same.
 /// </summary>
 internal bool EquivalentBreaks(BrokenPart BP)
 {
     return this.problems == BP.problems;
 }
 internal static void updateBrokenPart(BrokenPart broken)
 {
     if (broken.Problems() == 0)
         BrokenParts.Remove(broken.id);
     else
         BrokenParts[broken.id].UpdateProblems(broken.Problems());
 }
 internal static void regBrokenPart(BrokenPart broken)
 {
     BrokenParts.Add(broken.id, broken);
 }
 internal void UpdateProblems(BrokenPart.BreakType updatedProblems)
 {
     problems |= updatedProblems;
 }
Exemple #9
0
 private static void EnableSwapper(BrokenPart target, bool enable)
 {
     target.GetComponent <MaterialSwapper>().stop  = !enable;
     target.GetComponent <MaterialSwapper>().reset = !enable;
 }
Exemple #10
0
 private static void ChangeMaterial(Material newMaterial, BrokenPart target)
 {
     target.GetComponent <MeshRenderer>().sharedMaterial = newMaterial;
 }
Exemple #11
0
 private static void ChangeMesh(Mesh newMesh, BrokenPart target)
 {
     target.GetComponent <MeshFilter>().sharedMesh = newMesh;
 }