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); } }
private void OnTriggerStay(Collider other) { if (other.tag == "Player") { instructions.SetActive(true); Animator anim = Generator1.GetComponentInChildren <Animator>(); Animator anim1 = Generator2.GetComponentInChildren <Animator>(); Lock = Door.GetComponent <DoorController>(); if (Input.GetKeyDown(KeyCode.E)) { anim.SetTrigger("OnButton"); anim1.SetTrigger("OnButton"); generator1.Play(); generator2.Play(); Lock.Locked = false; foreach (GameObject objects in lightCeiling) { flick = objects.GetComponent <Flickering>(); flick.isFlickering = true; flick.stop = true; } } } }
// Калбэк приходящий непосредственно от самих шаров, при их столкновении с другими шарами, порождает звёзды, а сам шар переводит в состояние "остановлен" 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 static Flickering set(GameObject target, float period, Color color) { Flickering flickering = target.GetComponent <Flickering>(); if (flickering != null) { flickering.stopFlickering(true); } else { flickering = target.AddComponent <Flickering>(); } flickering.periodFlickering = period; flickering.flickeringColor = color; return(flickering); }
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; }
// Вызывается когда звёздочка прилетает на билет. Запускается логика отмечания этого шара, проверка на наличие вина или превина, и их отмечание void onBallArrive(GameObject flingGO, GameObject ticketCell) { var f = flingGO.GetComponent <Flying>(); if (f == null) { return; } GameObject fromGO = f.getStartFlyFromGameObject(); if (ticketCell == null) { return; } Ball ball = fromGO.GetComponent <Ball>(); if (ball == null) { print("Error! ball == null, fromGO.name:" + fromGO.name); } var tC = ticketCell.GetComponent <TicketCell>(); var t = tC.getMyTicket(); tC.mark(TicketCell.TypeMark.PRESENT); float transformTime = 1.0f; // #V общее значение времени для затухания звезды и появления шара(используется чуть ниже) Flickering.stop(flingGO, true); var fade = Effects.addFade(flingGO, transformTime); // #V исчезновение звезды fade.subscribeOnEffectDone(onFadeStar); // для удаления звезды, после её исчезновения SoundsSystem.play(Sound.S_STAR_TRANSFORM, ticketCell.transform.position); var tb = ticketCell.transform.FindChild("ticketBall"); if (tb != null) { Effects.addFade(tb.gameObject, transformTime, false); // #V появление шара } if (main.gameMode != GameMode.SERVER) { // (по факту не используется) bool isHaveLine = t.checkOnWin(tC); if (isHaveLine) { t.setPreWinsTest(); //main.updateWinMoney(); } } else { // проверка на наличие превинов и винов, и соответственном маркеровании клеток if (ball.jsonBallInfo.T == null) { return; } int myIndex = getMyIndex(t, ball); if (myIndex == -1) { return; } JsonHandler.WinTickets tPWin = ball.jsonBallInfo.T[myIndex]; var ticket = main.ticketHolder.getTicket(tPWin.N); if (tPWin.P != null) { ticket.setPreWins(tPWin.P); Tutorial.show(TutorialSubject.TS_PREVIN); } if (tPWin.W != null && tPWin.W.Length > 0) { ticket.setWins(tPWin.W); } main.templatesHolder.updateExpectedWinByNewPrewinsAndWins(tPWin.P, tPWin.W); } }