void Respond(string resString) { ExchangeApiResponse response = JsonUtility.FromJson <ExchangeApiResponse>(resString); if (response.res == 0) { //main.addToMyMoney(response.data.Gold - main.money.getValue()); if (response == null) { Debug.Log("response == null"); } if (response.data == null) { Debug.Log("response.data == null"); } if (main.money == null) { Debug.Log("main.money == null"); } if (main.raffle == null) { Debug.Log("main.raffle.flyExchengeMoneyToPocket == null"); } HUD.getHUD.flyExchengeMoneyToPocket = response.data.Gold - main.money.getValue(); main.addToMyRubins(response.data.Crystal - main.rubins.getValue()); Flickering.set(main.rubins.transform.parent.gameObject, 1.0f, 1); } else { Errors.showError(response.res, GameScene.MAIN_MENU); } }
// Калбэк приходящий непосредственно от самих шаров, при их столкновении с другими шарами, порождает звёзды, а сам шар переводит в состояние "остановлен" public void onNewBallStop(Ball newBall) { main.receivingTray.setBallToStopingBalls(newBall.gameObject); Ticket[] tickets = main.ticketHolder.getTickets(); var rbB = newBall.GetComponent <Rigidbody2D>(); for (int i = 0; (i < main.ticketHolder.transform.childCount && tickets[i] != null); i++) { TicketCell tC = tickets[i].getCellByNum(newBall.number); if (tC) { GameObject flyBall; if (flyingBallsPrefab != null && flyingBallsPrefab.GetComponent <SpriteRenderer>().sprite != null) { flyBall = Instantiate(flyingBallsPrefab); } else { flyBall = Instantiate(newBall.gameObject); } flyBall.transform.parent = flingBalls; Flying f = flyBall.AddComponent <Flying>(); f.destroyOnArrive = false; f.slowdown(3.0f, 0.02f, 0.9f); // #V здесь торможение звёзд: 1 - дистанция с которой начинается торможение, 2 - до скорости, 3 - сила торможения(если 1 то нулевая сила, если 0 то мгновеная остановка, если больше одного наоборот ускорение) flyBall.transform.position = newBall.transform.position; var b = flyBall.GetComponent <Ball>(); if (b != null) { flyBall.name = "flingBall_" + b.number; b.setOrderLayer(9); } var circleCollider = flyBall.GetComponent <CircleCollider2D>(); if (circleCollider != null) { circleCollider.enabled = false; } var rb = flyBall.GetComponent <Rigidbody2D>(); if (rb != null) { Destroy(rb); } var rotating = Rotating.set(flyBall, rbB.angularVelocity); rotating.slowdown(0.1f, 0.96f); // #V замедление вращение звёздочек f.init(tC.transform.position, 0.02f, newBall.prevVelocity[0] * 0.005f); f.subscribe(onBallArrive, tC.gameObject, newBall.gameObject); // #V эффекты на звёздочках: Flickering.set(flyBall, 0.15f); Scaling.set(flyBall, 0.5f, 0.15f); } } }
public void mark(TypeMark typeMark = TypeMark.NONE) // маркировка клетки { //print("█ #"+m_numValue+", ticket#"+getMyTicket().number+" newTypeMark:" + typeMark + " old:" + markType); if (typeMark == markType) { return; } if (markType == TypeMark.WIN) { //print("█ #" + m_numValue + " when WIN!, newState: " + typeMark); return; } else if (markType == TypeMark.WITH_OUT) { markSR.tag = "ticketBall"; stopPlayPrewin(true); } if (!markSR) { //Instantiate(Sprite); GameObject go = new GameObject(); go.transform.parent = this.transform; go.tag = "ticketBall"; go.name = go.tag + numValue; markSR = go.AddComponent <SpriteRenderer>(); markSR.sprite = Instantiate(greenBall); markSR.transform.position = Vector3.zero; markSR.transform.localScale = transform.localScale; markSR.sortingOrder = orderLayer + 1; go.transform.position = Vector3.zero; go.transform.localPosition = Vector3.zero; } markSR.enabled = true; switch (typeMark) { case TypeMark.PREWIN: { setOriol(Oriol.PREWIN); } break; case TypeMark.WITH_OUT: { //print("█ #"+m_numValue+" WITH_OUT, prewState: " + markType); startPlayPreWin(); tag = "missingBall"; } break; case TypeMark.NONE: { } break; case TypeMark.PRESENT: { } break; case TypeMark.WIN: { //print("█ █#" + m_numValue + " WIN, prewState: " + markType + " markSR.name == "+ markSR.name); markSR.sprite = markSprite; markSR.color = Color.yellow; setOriol(Oriol.NONE); if (GetComponent <Scaling>() == null) { Scaling.set(gameObject, 1.5f, 0.75f, 1); // # маштабирование каждого шара на виновом состоянии } if (GetComponent <Flickering>() == null) { Flickering.set(gameObject, 0.75f, 1); // #V мигание каждого шара на виновом состоянии } } break; } markType = typeMark; isMarked = true; }
public static void openFull() // открыть челюсть полностью ( шары начнут сыпаться ) { dragonHead.jaw.setLastState(); Flickering.set(dragonHead.eye.gameObject, 0.5f, 11); // V# мигание глаза при выплёвывании шаров SoundsSystem.play(Sound.S_DRAGON_FULL, dragonHead.transform.position); }
} // открыта ли полностью челюсть? public static void openMore() // ███ приоткрыть челюсть сильнее ( с каждым докупленным дополнительным шаром, позиции приоткрывания равномерно разбиваются от максимально доступного количества шаров, указанных в MAIN ) потому менняя их количество на сервере нужно всегда менять их и там { dragonHead.jaw.setNextState(); Flickering.set(dragonHead.eye.gameObject, 0.35f, 1); // V# мигание глаза при докупке шара SoundsSystem.play(Sound.S_DRAGON, dragonHead.transform.position); }
// ряд операций, при смене на соответсвующий стейт public void setState(RaffleState newState) { //print("[setState] newState: " + newState); switch (newState) { case RaffleState.WAIT: { if (main.gameMode != GameMode.SERVER) { main.changeNameBtnOn("Restart", "Start"); main.setEnableBtn("Start", true); main.setEnableBtn("BuyTicket", true); //main.setCaptionBtn("BuyTicket", "Buy Ticket: " + MAIN.ticketCost.ToString()); //main.setCaptionBtn("BuyBall", "Buy Ball: " + MAIN.ballCost1x.ToString()); } main.setEnableBtn("Restart", true); //main.setEnableBtn("BuyBallBtn", false); } break; case RaffleState.WAIT_SERVER_DATA: { main.setEnableBtn("Restart", false); main.setEnableBtn("Start", false); //main.setEnableBtn("BuyBallBtn", false); main.setEnableBtn("BuyTicket", false); } break; case RaffleState.PROCEED: { main.changeNameBtnOn("Start", "Restart"); main.setEnableBtn("BuyTicket", false); //Tutorial.show(TutorialSubject.TS_TEMPLEATES); } break; case RaffleState.FINISHED: { //HUD.setEnableBackButton(true); //if (main.handlerServerData.isAvailableNextBall) HUD.showBuyBallBtn(); } break; case RaffleState.ADDITIONAL_BALL: { startCheckTime = Time.time; DragonHead.openMore(); } break; case RaffleState.FINISH: { //Tutorial.show(TutorialSubject.TS_BUY_GOLD_BTN); getDrum().state = Drum.State.STOPING; HUD.setEnableBackButton(true); if (main.handlerServerData.isAvailableNextBall) { HUD.showBuyBallBtn(); var flickering = Flickering.set(HUD.getBuyBallButton().gameObject, 1.5f); // #V мигание кнопки докупки шаров flickering.setFlickeringUntilPress(); } else { var flickering = Flickering.set(HUD.getBackButton().gameObject, 1.5f); // #V мигание кнопки выхода flickering.setFlickeringUntilPress(); DragonHead.openFull(); main.receivingTray.setGravityForBalls(10); TicketsHolder.startHideTickets(); } Utils.screenShot("OnFinishRaffle.png"); // только в режиме тестировки } break; } raffleState = newState; }