Exemplo n.º 1
0
    IEnumerator RessetBall (BallController ballController) {
        if(ballController.isMain) {//bong trang vao lo
            yield return new WaitForFixedUpdate ();
            if(ServerController.serverController) {
                if(ServerController.serverController.isMyQueue) {
                    if(!(cueController.gameManager.blackBallInHolle || cueController.gameManager.otherBlackBallInHolle)) {
                        cueController.gameManager.needToChangeQueue = true;
                        cueController.gameManager.needToForceChangeQueue = true;
                        cueController.gameManager.setMoveInTable = true;
                        cueController.gameManager.gameInfoErrorText = "đánh bóng lỗi";
                    }

                    cueController.gameManager.mainBallIsOut = true;
                } else {
                    if(MenuControllerGenerator.controller.playWithAI) {
                        if(!(cueController.gameManager.blackBallInHolle || cueController.gameManager.otherBlackBallInHolle)) {
                            cueController.gameManager.needToChangeQueue = true;
                            cueController.gameManager.needToForceChangeQueue = true;
                            cueController.gameManager.setMoveInTable = true;
                            cueController.gameManager.gameInfoErrorText = "đánh bóng lỗi";
                        }
                    }
                    cueController.gameManager.otherMainBallIsOut = true;
                }
            }
            ballController.ballReflaction.GetComponent<Renderer> ().enabled = false;
            IncreaseSplineLength ();
            cueController.OnBallIsOut (true);
            yield return new WaitForSeconds (2.0f);

            while(!cueController.othersSleeping) {
                yield return null;
            }

            ballController.RessetPosition (cueController.centerPoint.position, false);
            ballController.ballReflaction.GetComponent<Renderer> ().enabled = true;
        } else {//cac bong khac vao lo
            yield return new WaitForFixedUpdate ();
            ballController.OnCheckHolle ();

            if(ServerController.serverController) {
                /*Game solo*/
                if(!ServerController.serverController.isModeCard) {
                    if(ballController.isBlack) {//bong den so 8
                        cueController.gameManager.needToChangeQueue = false;
                        cueController.gameManager.needToForceChangeQueue = false;

                        if(cueController.gameManager.remainedBlackBall) {
                            cueController.gameManager.myProfileNew.RemoveGuiBall (ballController.id);
                        }
                        if(cueController.gameManager.otherRemainedBlackBall) {
                            cueController.gameManager.otherProfileNew.RemoveGuiBall (ballController.id);
                        }
                        if(ServerController.serverController.isMyQueue) {
                            cueController.gameManager.blackBallInHolle = true;
                        } else {
                            cueController.gameManager.otherBlackBallInHolle = true;
                        }
                    } else {
                        if(cueController.gameManager.isFirstShot) {
                            if(!cueController.gameManager.needToForceChangeQueue) {
                                cueController.gameManager.needToChangeQueue = false;
                            }
                            cueController.gameManager.firsBalls.Add (ballController);
                        } else
                            if(cueController.gameManager.tableIsOpened) {
                                cueController.gameManager.tableIsOpened = false;

                                if(ServerController.serverController.isMyQueue) {
                                    if(!cueController.gameManager.needToForceChangeQueue) {
                                        cueController.gameManager.needToChangeQueue = false;
                                    }
                                    cueController.gameManager.SetBallType (ballController.ballType);

                                    cueController.gameManager.myProfileNew.RemoveGuiBall (ballController.id);

                                    if(ballController.ballType == 1) {
                                        cueController.gameManager.ShowGameInfo ("Bạn đánh bi", 1);
                                    } else {
                                        cueController.gameManager.ShowGameInfo ("Bạn đánh bi", 9);
                                    }
                                } else {
                                    if(MenuControllerGenerator.controller.playWithAI) {
                                        if(!cueController.gameManager.needToForceChangeQueue) {
                                            cueController.gameManager.needToChangeQueue = false;
                                        }
                                    }
                                    cueController.gameManager.SetBallType (-ballController.ballType);

                                    cueController.gameManager.otherProfileNew.RemoveGuiBall (ballController.id);

                                    if(ballController.ballType == -1) {
                                        cueController.gameManager.ShowGameInfo ("Bạn đánh bi", 1);
                                    } else {
                                        cueController.gameManager.ShowGameInfo ("Bạn đánh bi", 9);
                                    }
                                }

                                foreach(BallController item in cueController.gameManager.firsBalls) {
                                    if(item.ballType == cueController.gameManager.ballType) {
                                        cueController.gameManager.myProfileNew.RemoveGuiBall (item.id);
                                    } else {
                                        cueController.gameManager.otherProfileNew.RemoveGuiBall (item.id);
                                    }
                                }
                                cueController.gameManager.firsBalls = null;
                            } else {
                                if(cueController.gameManager.ballType == ballController.ballType) {
                                    if(!MenuControllerGenerator.controller.playWithAI || ServerController.serverController.isMyQueue) {
                                        if(!cueController.gameManager.firstHitBall || cueController.gameManager.firstHitBall.ballType == cueController.gameManager.ballType) {
                                            if(!cueController.gameManager.needToForceChangeQueue) {
                                                cueController.gameManager.needToChangeQueue = false;
                                            }
                                        }
                                    }
                                    cueController.gameManager.myProfileNew.RemoveGuiBall (ballController.id);
                                } else {
                                    if(MenuControllerGenerator.controller.playWithAI && !ServerController.serverController.isMyQueue) {
                                        if(!cueController.gameManager.firstHitBall || cueController.gameManager.firstHitBall.ballType == -cueController.gameManager.ballType) {
                                            if(!cueController.gameManager.needToForceChangeQueue) {
                                                cueController.gameManager.needToChangeQueue = false;
                                            }
                                        }
                                    }
                                    cueController.gameManager.otherProfileNew.RemoveGuiBall (ballController.id);
                                }
                            }
                    }
                    /*End Game solo*/
                } else {/*Game card*/
                    if(cueController.gameManager.isFirstShot) {
                        if(!cueController.gameManager.needToForceChangeQueue) {
                            cueController.gameManager.needToChangeQueue = false;
                        }
                        cueController.gameManager.firsBalls.Add (ballController);
                    } else {
                        if(cueController.gameManager.tableIsOpened) {
                            cueController.gameManager.tableIsOpened = false;

                            foreach(BallController item in cueController.gameManager.firsBalls) {
                                cueController.gameManager.myProfileNew.RemoveGuiCard (item.id);
                                cueController.gameManager.otherProfileNew.RemoveGuiCard (item.id);
                            }
                            cueController.gameManager.firsBalls = null;
                        } else {
                            if(!MenuControllerGenerator.controller.playWithAI || ServerController.serverController.isMyQueue) {
                                if(cueController.gameManager.myProfileNew.checkBallCard (ballController.id)) {
                                    if(!cueController.gameManager.needToForceChangeQueue) {
                                        cueController.gameManager.needToChangeQueue = false;
                                    }
                                }
                            }
                            if(MenuControllerGenerator.controller.playWithAI && !ServerController.serverController.isMyQueue) {
                                if(!cueController.gameManager.firstHitBall || cueController.gameManager.otherProfileNew.checkBallCard (ballController.id)) {
                                    if(!cueController.gameManager.needToForceChangeQueue) {
                                        cueController.gameManager.needToChangeQueue = false;
                                    }
                                }
                            }

                            cueController.gameManager.myProfileNew.RemoveGuiCard (ballController.id);
                            cueController.gameManager.otherProfileNew.RemoveGuiCard (ballController.id);
                        }
                    }

                }
                /*End Game card*/
            }
        }
    }