예제 #1
0
 void Update()
 {
     if (!hole)
     {
         hole = transform.parent.GetComponent <HoleController>();
     }
 }
예제 #2
0
 HoleController getNextCol(HoleController current)
 {
     if (current.col < holes[current.row].Length - 1)
     {
         if (current.col == 4)
         {
             if (current.row == 0 || current.row == 6)
             {
                 return(null);
             }
         }
         if (current.col == 5)
         {
             if (current.row == 1 || current.row == 5)
             {
                 return(null);
             }
         }
         return(holes[current.row][current.col + 1]);
     }
     else
     {
         return(null);
     }
 }
    // состояние защиты
    protected override IEnumerator Safety()
    {
        HoleController hc    = ai.areaCenter.GetComponentInChildren <HoleController>();
        float          delay = 3.5f;

        //Debug.Log("override Safety() started | this is inherited method from AnimalMotor");
        transform.localScale = Vector3.zero;
        hc.mousesInHole.Add(gameObject);
        box.enabled = false;
        yield return(new WaitForSeconds(delay));

        while (true)
        {
            if (fow.visibleTargets.Count > 0)
            {
                yield return(new WaitForSeconds(delay));
            }
            else
            {
                break;
            }
        }
        transform.localScale = Vector3.one * 0.5f;
        hc.mousesInHole.Remove(gameObject);
        box.enabled = true;
        ChangeCondition(Condition.Secure, "Safety", "Secure");
    }
예제 #4
0
 HoleController getNextRow(HoleController current)
 {
     if (current.row < holes.Length - 1)
     {
         if (current.row == 4)
         {
             if (current.col == 0 || current.col == 6)
             {
                 return(null);
             }
         }
         if (current.row == 5)
         {
             if (current.col == 1 || current.col == 5)
             {
                 return(null);
             }
         }
         return(holes[current.row + 1][current.col]);
     }
     else
     {
         return(null);
     }
 }
예제 #5
0
 HoleController getPrevCol(HoleController current)
 {
     if (current.col > 0)
     {
         if (current.col == 1)
         {
             if (current.row == 1 || current.row == 5)
             {
                 return(null);
             }
         }
         if (current.col == 2)
         {
             if (current.row == 0 || current.row == 6)
             {
                 return(null);
             }
         }
         return(holes[current.row][current.col - 1]);
     }
     else
     {
         return(null);
     }
 }
예제 #6
0
    private void CheckClose()
    {
        Ray        ray = new Ray(playerCamera.transform.position, playerCamera.transform.forward);
        RaycastHit hit;

        if (Physics.Raycast(playerCamera.transform.position, playerCamera.transform.forward, out hit, 2))
        {
            if (hit.transform.tag == "Hole")
            {
                HoleController hole = hit.transform.gameObject.GetComponent <HoleController>();
                if (hole.GetOpen() == true)
                {
                    hole.Close();
                }
            }
            else if (hit.transform.tag == "Empolyee")
            {
                EmpolyeeController empolyee = hit.transform.gameObject.GetComponent <EmpolyeeController>();

                if (empolyee.GetHanging() == true)
                {
                    empolyee.Climb();
                }
            }
        }
    }
예제 #7
0
    //added for peg game
    void OnTriggerEnter(Collider other)
    {
        currentHole = other.GetComponent <HoleController>();

        // check if we are in a valid position
        if (Application.loadedLevelName == "Main Game")
        {
            validNeighbor = ValidMove();
        }
        else if (Application.loadedLevelName == "Main Game Square")
        {
            validNeighbor = ValidMoveSquare();
        }
        else if (Application.loadedLevelName == "Main Game European")
        {
            validNeighbor = ValidMoveEuro();
        }

        if (currentHole.currentPeg || !validNeighbor)
        {
            if (currentHole.currentPeg == gameObject)
            {
                myRenderer.material = ogMaterial;
            }
            else
            {
                myRenderer.material = occupiedMaterial;
            }
        }
        else
        {
            myRenderer.material = openMaterial;
        }
    }
예제 #8
0
    GameObject ValidMove()
    {
        char magnitude1 = (char)(originalHole.row + originalHole.col);
        char magnitude2 = (char)(currentHole.row + currentHole.col);

        BoardManager board = gameManager.GetComponent <BoardManager>();

        if (magnitude1 == magnitude2)
        {
            // the positions are at the same level
            if (originalHole.position - currentHole.position == 2)
            {
                //moved 2 slots away
                HoleController neighbor = board.GetHole(originalHole.row + 1, originalHole.col - 1);
                return(neighbor.currentPeg);
            }
            if (originalHole.position - currentHole.position == -2)
            {
                //moved 2 slots away
                HoleController neighbor = board.GetHole(originalHole.row - 1, originalHole.col + 1);
                return(neighbor.currentPeg);
            }
        }
        else if (originalHole.row == currentHole.row)
        {
            // diagonal NW<>SE
            if (originalHole.col - currentHole.col == 2)
            {
                // moved 2 slots away
                HoleController neighbor = board.GetHole(originalHole.row, originalHole.col - 1);
                return(neighbor.currentPeg);
            }
            if (originalHole.col - currentHole.col == -2)
            {
                // moved 2 slots away
                HoleController neighbor = board.GetHole(originalHole.row, originalHole.col + 1);
                return(neighbor.currentPeg);
            }
        }
        else if (originalHole.col == currentHole.col)
        {
            // diagonal SW<>NE
            if (originalHole.row - currentHole.row == 2)
            {
                // moved 2 slots away
                HoleController neighbor = board.GetHole(originalHole.row - 1, originalHole.col);
                return(neighbor.currentPeg);
            }
            if (originalHole.row - currentHole.row == -2)
            {
                // moved 2 slots away
                HoleController neighbor = board.GetHole(originalHole.row + 1, originalHole.col);
                return(neighbor.currentPeg);
            }
        }
        return(null);
    }
예제 #9
0
 public void Initialize()
 {
     for (int id = 0; id < _maxControllerIndex; id++)
     {
         HoleController controller = Instantiate(holeControllerPrefab) as HoleController;
         controller.transform.SetParent(this.transform);
         controller.Initialize(id);
         controllerGroup[id] = controller;
     }
     SetFaceBlock();
 }
예제 #10
0
 HoleController getNextCol(HoleController current)
 {
     if (current.col < holes[current.row].Length - 1)
     {
         return(holes[current.row][current.col + 1]);
     }
     else
     {
         return(null);
     }
 }
예제 #11
0
 HoleController getPrevCol(HoleController current)
 {
     if (current.col > 0)
     {
         return(holes[current.row][current.col - 1]);
     }
     else
     {
         return(null);
     }
 }
예제 #12
0
 HoleController getNextRow(HoleController current)
 {
     if (current.row < holes.Length - 1 && current.col < holes[current.row + 1].Length)
     {
         return(holes[current.row + 1][current.col]);
     }
     else
     {
         return(null);
     }
 }
예제 #13
0
 HoleController getPrevRow(HoleController current)
 {
     if (current.row > 0)
     {
         return(holes[current.row - 1][current.col]);
     }
     else
     {
         return(null);
     }
 }
예제 #14
0
 HoleController getLeft(HoleController current)
 {
     if (current.row <= holes.Length && current.col > 0)
     {
         return(holes[current.row + 1][current.col - 1]);
     }
     else
     {
         return(null);
     }
 }
예제 #15
0
 HoleController getRight(HoleController current)
 {
     if (current.row > 0)
     {
         return(holes[current.row - 1][current.col + 1]);
     }
     else
     {
         return(null);
     }
 }
예제 #16
0
    // Use this for initialization
    void Start()
    {
        //HoleController holeController = (HoleController)GetComponent ("HoleController");
        holeController = GameObject.Find("Holes").GetComponent <HoleController>();
        //bola = new Bola (numero, color);

        MeshRenderer rend = bolaColorModel.GetComponent <MeshRenderer>();

        //Set the main Color of the Material to green
        rend.material.shader = Shader.Find("_Color");
        rend.material.SetColor("_Color", color);

        //Find the Specular shader and change its Color to red
        rend.material.shader = Shader.Find("Specular");
        rend.material.SetColor("_SpecColor", Color.white);
    }
예제 #17
0
    // Use this for initialization
    void Start()
    {
        holes = new HoleController[5][];
        for (int i = 0; i < holes.Length; i++)
        {
            holes[i] = new HoleController[5 - i];
        }
        // get references to all of the holes
        List <HoleController> tempHoles = new List <HoleController> (GameObject.FindObjectsOfType <HoleController>());

        foreach (HoleController hole in tempHoles)
        {
            holes[hole.row][hole.col] = hole;
        }

        DestroyImmediate(pegs[Random.Range(0, 15)]);
    }
예제 #18
0
    bool CheckValidMoves(GameObject peg)
    {
        PegController  pegCont = peg.GetComponent <PegController>();
        HoleController hole    = pegCont.originalHole;
        HoleController nextRow = getNextRow(hole);
        HoleController prevRow = getPrevRow(hole);
        HoleController nextCol = getNextCol(hole);
        HoleController prevCol = getPrevCol(hole);


        if (nextRow && nextRow.currentPeg)
        {
            HoleController nextNextRow = getNextRow(nextRow);
            if (nextNextRow && !nextNextRow.currentPeg)
            {
                return(true);
            }
        }
        if (prevRow && prevRow.currentPeg)
        {
            HoleController prevPrevRow = getPrevRow(prevRow);
            if (prevPrevRow && !prevPrevRow.currentPeg)
            {
                return(true);
            }
        }
        if (nextCol && nextCol.currentPeg)
        {
            HoleController nextNextCol = getNextCol(nextCol);
            if (nextNextCol && !nextNextCol.currentPeg)
            {
                return(true);
            }
        }
        if (prevCol && prevCol.currentPeg)
        {
            HoleController prevPrevCol = getPrevCol(prevCol);
            if (prevPrevCol && !prevPrevCol.currentPeg)
            {
                return(true);
            }
        }

        return(false);
    }
예제 #19
0
 HoleController getPrevRow(HoleController current)
 {
     if (current.row > 0)
     {
         if (current.row == 2)
         {
             if (current.col == 0 || current.col == 1 || current.col == 5 || current.col == 6)
             {
                 return(null);
             }
         }
         return(holes[current.row - 1][current.col]);
     }
     else
     {
         return(null);
     }
 }
예제 #20
0
    public void OpenHole()
    {
        int tries = 0;

        while (tries < 4)
        {
            int randomNum = Random.Range(0, holes.Length);

            if (holes.Length != 0)
            {
                HoleController compCon = holes[randomNum].GetComponent <HoleController>();
                if (compCon.GetOpen() == false)
                {
                    compCon.Open();
                    tries = 4;
                }
            }
            tries++;
        }
    }
예제 #21
0
    GameObject ValidMoveEuro()
    {
        BoardManagerEuropean board = gameManager.GetComponent <BoardManagerEuropean>();

        if (originalHole.row == currentHole.row)
        {
            // diagonal NW<>SE
            if (originalHole.col - currentHole.col == 2)
            {
                // moved 2 slots away
                HoleController neighbor = board.GetHole(originalHole.row, originalHole.col - 1);
                return(neighbor.currentPeg);
            }
            if (originalHole.col - currentHole.col == -2)
            {
                // moved 2 slots away
                HoleController neighbor = board.GetHole(originalHole.row, originalHole.col + 1);
                return(neighbor.currentPeg);
            }
        }
        else if (originalHole.col == currentHole.col)
        {
            // diagonal SW<>NE
            if (originalHole.row - currentHole.row == 2)
            {
                // moved 2 slots away
                HoleController neighbor = board.GetHole(originalHole.row - 1, originalHole.col);
                return(neighbor.currentPeg);
            }
            if (originalHole.row - currentHole.row == -2)
            {
                // moved 2 slots away
                HoleController neighbor = board.GetHole(originalHole.row + 1, originalHole.col);
                return(neighbor.currentPeg);
            }
        }
        return(null);
    }
 // Update is called once per frame
 void Update()
 {
     //Basic Player movement via Arrow Keys
     if (Input.GetKeyDown(KeyCode.UpArrow) && CurrentHole.Up)
     {
         transform.position = CurrentHole.Up.position;
         CurrentHole        = CurrentHole.Up.gameObject.GetComponent <HoleController>();
     }
     if (Input.GetKeyDown(KeyCode.DownArrow) && CurrentHole.Down)
     {
         transform.position = CurrentHole.Down.position;
         CurrentHole        = CurrentHole.Down.gameObject.GetComponent <HoleController>();
     }
     if (Input.GetKeyDown(KeyCode.LeftArrow) && CurrentHole.Left)
     {
         transform.position = CurrentHole.Left.position;
         CurrentHole        = CurrentHole.Left.gameObject.GetComponent <HoleController>();
     }
     if (Input.GetKeyDown(KeyCode.RightArrow) && CurrentHole.Right)
     {
         transform.position = CurrentHole.Right.position;
         CurrentHole        = CurrentHole.Right.gameObject.GetComponent <HoleController>();
     }
 }
예제 #23
0
    private void Start()
    {
        GameStatusEnum = GameStatus.START;

        part1Obstacles      = GameObject.Find("Part1").transform;
        part2Obstacles      = GameObject.Find("Part2").transform;
        transitionObstacles = GameObject.Find("TransitionObstacles").transform;

        door = GameObject.Find("Door").transform;

        plane2Obj = GameObject.Find("Plane2").transform;
        plane1Obj = GameObject.Find("Plane1").transform;

        pointer   = GameObject.Find("Pointer").transform;
        pointCont = pointer.GetComponent <PointerController>();

        hole     = GameObject.Find("HoleObj").transform;
        holeCont = hole.GetComponent <HoleController>();
        holeCont.DoorOpenValue = 1;

        obstacleCounterStart = part1Obstacles.childCount + part2Obstacles.childCount + transitionObstacles.childCount;

        successBar = GameObject.Find("Inner").transform.GetComponent <Image>();
    }
예제 #24
0
    public HoleController GetHole(int row, int col)
    {
        HoleController temp = holes[row][col];

        return(temp);
    }
예제 #25
0
 private void Awake()
 {
     collider       = GetComponent <Collider>();
     holeController = GetComponent <HoleController>();
     holeMagnet     = GetComponentInChildren <HoleMagnet>();
 }
예제 #26
0
 void OnTriggerExit(Collider other)
 {
     newHoleController = null;
 }
예제 #27
0
 //added for peg game
 void OnTriggerEnter(Collider other)
 {
     newHoleController = other.GetComponent <HoleController>();
 }
예제 #28
0
 private void Start()
 {
     holeController = transform.parent.GetComponent <HoleController>();
 }
예제 #29
0
 void OnTriggerExit(Collider other)
 {
     currentHole         = null;
     myRenderer.material = ogMaterial;
 }
    public void ColliderTypeEvent(string type, GameObject TriggerObj)
    {
        switch (type)
        {
        case "Task":

            break;

        case "LittleBoss":
            if (Input.GetMouseButtonDown(0))
            {
                AttackerSoilder(TriggerObj);
            }

            break;

        case "Soilder":
            //FrontSightClick();
            //防禦用
            //好像又不用...
            break;

        case "Player":
        {
            if (Input.GetMouseButtonDown(0))
            {
                OpenBackageUI();
            }
        }
        break;

        case "Factory":
        {
            FactoryViewer viwer = TriggerObj.GetComponent <FactoryViewer>();
            if (Input.GetMouseButtonDown(0))
            {
                viwer.ShowFactoryUi();
            }
        }

        break;

        case "Energy":
        {
            if (Input.GetMouseButtonDown(0))
            {
                SoilderCarryThing(TriggerObj);
                //AttackerSoilder(TriggerObj);
            }
        }
        break;

        case "TheHole":
        {
            //Debug.Log("HitTheHole");
            HoleController holeController = TriggerObj.GetComponent <HoleController>();
            if (Input.GetMouseButtonDown(0) && holeController.TakeBreak == false && holeController.IsWorking == false)
            {
                SoilderAutoCreat(TriggerObj);
                //AttackerSoilder(TriggerObj);
            }
        }
        break;

        default:

            break;
        }
    }