Пример #1
0
 //==============================[ client  fabric ]================================
 bool checkOnWinCF(TicketCell newCell)  // (отключено, недоделано и неактуально)
 {
     /*List<Template> templates = main.templatesHolder.templates;
      * for(int i=0; i< templates.Count; i++) {
      *  Template template = templates[i];
      *  for(int j=0; j<template.variables.Length; j++) {
      *      //xy[] coordsCells = getCoordsByTicketCell(newCell);
      *      //getVariableCellsByCell( new xy(newCell) )
      *      //Template win = template()
      *  }
      * }*/
     return(false);
 }
Пример #2
0
 public TicketCell getCellByNum(int num) // получить клетку за её индексом в масиве ( 0..24 )
 {
     //print(transform.childCount);
     for (int i = 0; i < cellsHolder.childCount; i++)
     {
         TicketCell tC = cellsHolder.GetChild(i).GetComponent <TicketCell>();
         if (tC.numValue == num)
         {
             return(tC);
         }
     }
     return(null);
 }
Пример #3
0
    // Калбэк приходящий непосредственно от самих шаров, при их столкновении с другими шарами, порождает звёзды, а сам шар переводит в состояние "остановлен"
    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);
            }
        }
    }
Пример #4
0
 public bool checkOnWin(TicketCell newCell) // ( недоделано и не актуально ) старая проверка на выиграшь при новом шаре, проверка выполняется, но нет никаких сообщений
 {
     /*switch (main.templetesFrom) {
      *  case TemplatesFrom.CLIENT_OLD: return checkOnWinOld(newCell);
      *  case TemplatesFrom.CLIENT_FABRIC: return checkOnWinCF(newCell);
      *  //case TemplatesFrom.SERVER: return checkNewBall();
      * }*/
     if (main.gameMode == GameMode.SERVER)
     {
         return(false);
     }
     return(checkOnWinOld(newCell));  // старая логика
     //print("Error! [checkOnWin] unknown TemplatesFrom:" + main.templetesFrom);
     //return false;
 }
Пример #5
0
 xy getCoordsByTicketCell(TicketCell tCell) // Возвращает позиции клекти
 {
     for (int i = 0; i < MAIN.ticketCountRows; i++)
     {
         for (int j = 0; j < MAIN.ticketCountColumns; j++)
         {
             if (cells[i, j] == tCell)
             {
                 return(new global::xy(i, j));
             }
         }
     }
     print("Error! [getCoordsByTicketCell] coords cell#" + tCell.name + " not find!!!");
     return(new global::xy(-1, -1));
 }
Пример #6
0
 public void onBornNewBall(Ball newBall)
 {
     //print("onBornNewBall:" + newBall.number + "main.ticketHolder.transform.childCount = "+ main.ticketHolder.transform.childCount);
     newBall.subscribeOnBallStop(onNewBallStop);
     Ticket[] tickets = main.ticketHolder.getTickets();
     for (int i = 0; (i < main.ticketHolder.transform.childCount); i++)
     {
         if (tickets[i] == null)
         {
             Errors.showTest("Ошибка! Билетов ещё нет, а шары уже сыпятся");
         }
         //print("bornBall:"+ newBall.number+ ", tickets:" +tickets[i]);
         TicketCell tC = tickets[i].getCellByNum(newBall.number);
         //print(newBall.number);
         if (tC != null)
         {
             newBall.setGreen();
             return;
         }
     }
 }   // проверка всех билетов
Пример #7
0
    public bool initWithJsonStruct(JsonHandler.TicketJSON jsonTicket) // Преобразование JSON структуры, и инициализация полученных данных
    {
        Start();
        if (!beforeGenerateInit())
        {
            return(false);
        }
        int currentCell = 0;

        number = jsonTicket.N;
        if (jsonTicket.B == null)
        {
            print("Error! [] in jsonTicket:" + jsonTicket.N + " not init cells!");
            return(false);
        }
        int countCells = jsonTicket.B.Length;

        if (countCells != totalCellsCount)
        {
            print("Error![initWithJsonStruct] rows(" + MAIN.ticketCountRows + ") and columns(" + MAIN.ticketCountColumns + ") do not coincide with count cells in json ticket(" + countCells + ")");
            return(false);
        }
        for (int j = MAIN.ticketCountColumns - 1; j >= 0; j--)
        {
            for (int i = 0; i < MAIN.ticketCountRows; i++)
            {
                TicketCell newCell = Instantiate(tiledCell);
                newCell.transform.parent        = cellsHolder.transform;
                newCell.transform.localPosition = new Vector3(p.x + i * indent.x, p.y + j * indent.y);
                newCell.numValue = takeAwayCellNumber(i, jsonTicket.B[currentCell++]);
                cells[i, j]      = newCell;
            }
        }
        isInit = true;
        return(true);
    }
Пример #8
0
    //=============================[ Old client check ]================================
    public bool checkOnWinOld(TicketCell newCell) // (отключено и неактуально) старая логика протоипа игры, проверка на наличие простых захаркодженных шаблонов
    {
        int  ii  = 0;
        int  jj  = 0;
        bool res = false;

        for (int i = 0; i < MAIN.ticketCountRows; i++)
        {
            for (int j = 0; j < MAIN.ticketCountColumns; j++)
            {
                if (cells[i, j] == newCell)
                {
                    ii = i; jj = j; break;
                }
            }
        }

        bool line = true;

        for (int i = 0; i < MAIN.ticketCountRows; i++)
        {
            if (!cells[i, jj].isMarked)
            {
                line = false;
                break;
            }
        }
        if (line)
        {
            newWinLine();
            res = true;
        }

        line = true;
        for (int j = 0; j < MAIN.ticketCountColumns; j++)
        {
            if (!cells[ii, j].isMarked)
            {
                line = false;
                break;
            }
        }
        if (line)
        {
            newWinLine();
            res = true;
        }


        line = true;
        if (MAIN.ticketCountColumns == MAIN.ticketCountRows && ii == jj)
        {
            for (int i = 0; i < MAIN.ticketCountColumns; i++)
            {
                if (!cells[i, i].isMarked)
                {
                    line = false;
                }
            }
            if (line)
            {
                newWinLine();
                res = true;
            }
        }

        line = true;
        if (MAIN.ticketCountColumns == MAIN.ticketCountRows && ii == (MAIN.ticketCountRows - 1) - jj)
        {
            for (int i = 0; i < MAIN.ticketCountColumns; i++)
            {
                if (!cells[i, (MAIN.ticketCountRows - 1) - i].isMarked)
                {
                    line = false;
                    break;
                }
                int a = (MAIN.ticketCountRows - 1) - i;
                //print("i:" + i + ", j:" + a);
            }
            if (line)
            {
                newWinLine();
                res = true;
            }
        }
        return(res);
    }