Ejemplo n.º 1
0
 void Awake()
 {
     State     = _state.Idle;
     NextState = State;
     paused    = false;
     miscStats = new PropertyStats();
 }
Ejemplo n.º 2
0
 void Die()
 {
     NextState = _state.Dead;
     dieTimer  = Time.time;
     this.SendMessage("SetAction", UnitAnimation._action.Die, SendMessageOptions.DontRequireReceiver);
     this.SendMessage("StartAnimation", null, SendMessageOptions.DontRequireReceiver);
 }
Ejemplo n.º 3
0
 void AttackUnit()
 {
     this.SendMessage("SetAction", weapon.actionAnim, SendMessageOptions.DontRequireReceiver);
     this.SendMessage("StartAnimation", null, SendMessageOptions.DontRequireReceiver);
     NextState   = _state.Engage;
     attackTimer = Time.time;
 }
Ejemplo n.º 4
0
 void EngageUnit()
 {
     if ((attackTimer + weapon.rechargeTime) < Time.time)
     {
         NextState = _state.Idle;
     }
 }
Ejemplo n.º 5
0
    public void Throw()
    {
        Debug.Log("I am being thrown!");
        if (state == _state.Held)
        {
            state = _state.Throwing;
            Vector3 pos = heldBy.transform.position;

            PlayerController nearest=heldBy;
            float nearestDist = float.MaxValue;
            foreach (PlayerController player in PlayerController.players)
            {
                if (player == heldBy) continue;
                float currentDist = Vector3.Distance(player.transform.position, heldBy.transform.position);
                if (nearestDist > currentDist)
                {
                    nearestDist=currentDist;
                    nearest=player;
                }
            }
            //ThrowStriaght();
            ThrowAt(nearest.transform.position);
            heldBy.state = PlayerState.NOT_HOLDING;
        }
    }
Ejemplo n.º 6
0
 public void disconnect()
 {
     arduino_serial.DiscardInBuffer();
     arduino_serial.DiscardOutBuffer();
     arduino_serial.Close();
     state = _state.DISCONNECTED;
 }
Ejemplo n.º 7
0
 public void PickUp(PlayerController pc)
 {
     if (state == _state.OnGround || state == _state.Falling || state == _state.Throwing)
     {
         heldBy = pc;
         state = _state.Held;
         pc.state = PlayerState.HOLDING;
         //transform.position = heldBy.eggNode.transform.position;
     }
 }
Ejemplo n.º 8
0
 public void ThrowToPlayer(Vector3 receivingPlayer)
 {
     Debug.Log ("Throwing to a player");
     if (state == _state.Held) {
         state = _state.Throwing;
         //Vector3 distance = receivingPlayer - this.transform.position;
         ThrowAt(receivingPlayer);
         //delta = Vector3.Normalize ((distance) + Vector3.up) * 5.0f;
         heldBy = null;
     }
 }
Ejemplo n.º 9
0
        private void serial_data_received(object sender, SerialDataReceivedEventArgs e)
        {
            String command_feedback;

            try
            {
                command_feedback = arduino_serial.ReadLine();
                //Console.WriteLine(command_feedback);
            }
            catch
            {
                return;
            }
            if (command_checker == null)
            {
                return;
            }
            if (!command_feedback.Contains(command_checker))
            {
                //throw new InvalidOperationException("Invalid command feedback");
            }
            else
            {
                command_valid = true;
                if (command_feedback.IndexOf('(') > -1 && command_feedback.IndexOf(',') > -1 && command_feedback.IndexOf(')') > -1)
                {
                    int startchar = command_feedback.IndexOf('(') + 1;
                    int numlength = (command_feedback.IndexOf(',') - startchar);
                    values_received[0] = Convert.ToInt64(command_feedback.Substring(startchar, numlength));
                    startchar          = command_feedback.IndexOf(',') + 1;
                    numlength          = (command_feedback.IndexOf(')') - startchar);
                    values_received[1] = Convert.ToInt64(command_feedback.Substring(startchar, numlength));
                }
                if (command_checker == "InoCtrl")
                {
                    state = _state.CONTROLLING;
                }
            }

            if (command_feedback.Contains("Homming"))
            {
                command_type = command_types.HOME;
            }
            else if (command_feedback.Contains("Start"))
            {
                command_type = command_types.START;
            }
            else if (command_feedback.Contains("Normal"))
            {
                command_type = command_types.NORMAL;
            }
            //if(command_feedback.Contains("Apertou"))
            //Console.WriteLine("Received Data: "+ command_feedback);
        }
Ejemplo n.º 10
0
 //public resetButton resetButton;
 public controlPanel()
 {
     state = _state.beforeStart;
     buttonA = new buttonA();
     buttonB = new buttonB();
     //resetButton = new resetButton();
     this.Controls.Add(buttonA);
     this.Controls.Add(buttonB);
     //this.Controls.Add(resetButton);
     buttonA.Left = 2;
     buttonB.Left = buttonA.Left + buttonA.Width + 2;
     this.Height = buttonA.Height + 2;
     this.Width = buttonA.Width + 4;
     buttonB.Visible = false;
 }
Ejemplo n.º 11
0
    void SetupMoveUnit()
    {
        UnitAnimation._direction dir;
        int tileXDelta;
        int tileYDelta;

        tileXDelta = (int)moveTile.x - (int)curTile.x;
        tileYDelta = (int)moveTile.y - (int)curTile.y;

        if ((tileXDelta == 0) && (tileYDelta == 0))
        {
            return;
        }

        deltaX = (float)tileXDelta * moveXScale;
        deltaY = (float)tileYDelta * moveXScale;

        if (Mathf.Abs(tileXDelta) > Mathf.Abs(tileYDelta))
        {
            if (tileXDelta > 0)
            {
                dir = UnitAnimation._direction.DirRight;
            }
            else
            {
                dir = UnitAnimation._direction.DirLeft;
            }
        }
        else
        {
            if (tileYDelta > 0)
            {
                dir = UnitAnimation._direction.DirUp;
            }
            else
            {
                dir = UnitAnimation._direction.DirDown;
            }
        }

        this.SendMessage("SetDirection", dir, SendMessageOptions.DontRequireReceiver);
        this.SendMessage("SetAction", UnitAnimation._action.Walk, SendMessageOptions.DontRequireReceiver);
        this.SendMessage("StartAnimation", null, SendMessageOptions.DontRequireReceiver);
        NextState = _state.Move;
    }
Ejemplo n.º 12
0
        public bool connect(String port_name)
        {
            try
            {
                arduino_serial.PortName  = port_name;
                arduino_serial.BaudRate  = 115200;
                arduino_serial.Handshake = Handshake.RequestToSend;
                arduino_serial.DtrEnable = true;
                arduino_serial.RtsEnable = true;
                arduino_serial.Open();
                //arduino_serial = new SerialPort(port_name, 9600);//, Parity.None, 8, StopBits.One);
            }
            catch
            {
                return(false);
            }

            state      = _state.INITIALIZING;
            state_init = _state_init.NOT_READY;
            state_ctrl = _state_ctrl.CONTROLLING;
            return(true);
        }
Ejemplo n.º 13
0
    void Awake()
    {
        //Application.targetFrameRate = 30;
        Screen.SetResolution(1080, 1920, true);
        //Application.targetFrameRate = 60;
        //QualitySettings.vSyncCount = 0;
        cam = Camera.Instantiate(mainCamera);

        playerDataController = transform.GetComponent <PlayerDataController>();
        playerDataController.LoadPlayerData();
        Debug.Log(playerDataController.playerData.lastLevel);
        dataController = transform.GetComponent <DataController>();
        dataController.LoadGameData();
        gameState = _state.intro;
        Object.DontDestroyOnLoad(transform);
        Object.DontDestroyOnLoad(cam);
        soundController  = GetComponent <SoundController>();
        musicController  = GetComponent <MusicController>();
        pauseMenuEnabled = true;
        paused           = false;
        helperEnabled    = true;
        if (playerDataController.playerData.sfxOnOff == 1)
        {
            soundController.SoundFXOn = true;
        }
        else
        {
            soundController.SoundFXOn = false;
        }
        if (playerDataController.playerData.musicOnOff == 1)
        {
            musicController.MusicOn = true;
        }
        else
        {
            musicController.MusicOn = false;
        }
    }
Ejemplo n.º 14
0
 private void OnLevelFinishLoading(Scene scene, LoadSceneMode mode)
 {
     if (scene.name == "Board")
     {
         gameState = _state.board;
         StartBoard();
         LevelPostStart();
         sceneHandler = null;
         //background = GameObject.Instantiate(backgroundPrefabs[currentLevel % backgroundPrefabs.Count]);
         background = GameObject.Instantiate((GameObject)Resources.Load("Backgrounds/" + backgrounds[currentLevel % backgrounds.Count]));
     }
     if (scene.name == "World")
     {
         if (board)
         {
             Destroy(board);
         }
         if (worldController == null)
         {
             worldController = GameObject.Instantiate(worldControllerPrefab);
         }
         worldController.GetComponent <WorldController>().DoRender();
     }
 }
Ejemplo n.º 15
0
 void Move(Vector2 newTile)
 {
     NextState = _state.SetupMove;
     moveTile  = newTile;
 }
Ejemplo n.º 16
0
        } // end of parce of tree

        /// <summary>
        /// Парсинг скобочного дерева 1С
        /// </summary>
        /// <param name="text"></param>
        /// <param name="path"></param>
        /// <returns></returns>
        public static Tree Parse_1Ctext(String text, String path)
        {
            StringBuilder __curvalue__ = new StringBuilder("");

            String    curvalue = "";
            Tree      ret      = new Tree("", Node_Type.nd_list, null);
            Tree      t        = ret;
            int       len      = text.Length;
            int       i        = 0;
            char      sym      = '0';
            Node_Type nt       = Node_Type.nd_unknown;

            _state state = _state.s_value;

            //for (i = 0; i <= len-1; i++)
            for (i = 1; i < len; i++)
            {
                sym = text[i];

                if (String.IsNullOrEmpty(sym.ToString()))
                {
                    break;
                }

                switch (state)
                {
                case _state.s_value:
                    switch (sym)
                    {
                    case ' ':         // space
                    case '\t':
                    case '\r':
                    case '\n':
                        break;

                    case '"':

                        __curvalue__.Clear();
                        state = _state.s_string;
                        break;

                    case '{':

                        t = new Tree("", Node_Type.nd_list, t);
                        break;

                    case '}':

                        if (t.Get_First() != null)
                        {
                            t.AddChild("", Node_Type.nd_empty);
                        }

                        t = t.Get_Parent();

                        if (t == null)
                        {
                            //if (msreg) msreg->AddError("Ошибка формата потока. Лишняя закрывающая скобка }.", "Позиция", i, "Путь", path);
                            //delete ret;
                            //String msreg = $"Ошибка формата потока. Лишняя закрывающая скобка. Позиция: { i }, Путь: {path}";
                            ShowMessage("Ошибка формата потока. Лишняя закрывающая скобка }. Позиция " + i + ", Путь " + path);
                            ret = null;
                            return(null);
                        }
                        state = _state.s_delimitier;
                        break;

                    case ',':

                        t.AddChild("", Node_Type.nd_empty);
                        break;

                    default:

                        __curvalue__.Clear();
                        __curvalue__.Append(sym);
                        state = _state.s_nonstring;

                        break;
                    }
                    break;

                case _state.s_delimitier:
                    switch (sym)
                    {
                    case ' ':         // space
                    case '\t':
                    case '\r':
                    case '\n':
                        break;

                    case ',':
                        state = _state.s_value;
                        break;

                    case '}':
                        t = t.Get_Parent();
                        if (t == null)
                        {
                            /*
                             * if (msreg) msreg->AddError("Ошибка формата потока. Лишняя закрывающая скобка }.",
                             *   "Позиция", i,
                             *   "Путь", path);
                             */
                            ShowMessage("Ошибка формата потока. Лишняя закрывающая скобка }. Позиция " + i + ", Путь " + path);
                            ret = null;
                            return(null);
                        }
                        break;

                    default:
                        /*
                         * if (msreg) msreg->AddError("Ошибка формата потока. Ошибочный символ в режиме ожидания разделителя.",
                         *   "Символ", sym,
                         *   "Код символа", tohex(sym),
                         *   "Путь", path);
                         */
                        ShowMessage("Ошибка формата потока. Ошибочный символ в режиме ожидания разделителя. Символ " + sym + ", Код символа " + sym.ToString() + ", Путь " + path);
                        ret = null;
                        return(null);
                    }
                    break;

                case _state.s_string:
                    if (sym == '"')
                    {
                        state = _state.s_quote_or_endstring;
                    }
                    else
                    {
                        __curvalue__.Append(sym);
                    }
                    break;

                case _state.s_quote_or_endstring:
                    if (sym == '"')
                    {
                        __curvalue__.Append(sym);
                        state = _state.s_string;
                    }
                    else
                    {
                        t.AddChild(__curvalue__.ToString(), Node_Type.nd_string);
                        switch (sym)
                        {
                        case ' ':         // space
                        case '\t':
                        case '\r':
                        case '\n':
                            state = _state.s_delimitier;
                            break;

                        case ',':
                            state = _state.s_value;
                            break;

                        case '}':
                            t = t.Get_Parent();
                            if (t == null)
                            {
                                /*
                                 * if (msreg) msreg->AddError("Ошибка формата потока. Лишняя закрывающая скобка }.",
                                 *   "Позиция", i,
                                 *   "Путь", path);
                                 */
                                ShowMessage("Ошибка формата потока. Лишняя закрывающая скобка }. Позиция " + i.ToString() + ", Путь " + path);
                                ret = null;
                                return(null);
                            }
                            state = _state.s_delimitier;
                            break;

                        default:
                            /*
                             * if (msreg) msreg->AddError("Ошибка формата потока. Ошибочный символ в режиме ожидания разделителя.",
                             *   "Символ", sym,
                             *   "Код символа", tohex(sym),
                             *   "Путь", path);
                             */
                            ShowMessage("Ошибка формата потока. Ошибочный символ в режиме ожидания разделителя. Символ " + sym + ", Код символа " + sym.ToString() + ", Путь " + path);
                            ret = null;
                            return(null);
                        }
                    }
                    break;

                case _state.s_nonstring:
                    switch (sym)
                    {
                    case ',':
                        curvalue = __curvalue__.ToString();
                        nt       = ClassificationValue(curvalue);
                        if (nt == Node_Type.nd_unknown)
                        {
                            /*
                             * if (msreg) msreg->AddError("Ошибка формата потока. Неизвестный тип значения.",
                             * "Значение", curvalue,
                             * "Путь", path);
                             */
                            ShowMessage("Ошибка формата потока. Неизвестный тип значения. Значение " + curvalue + ", Путь " + path);
                        }
                        t.AddChild(curvalue, nt);
                        state = _state.s_value;
                        break;

                    case '}':
                        curvalue = __curvalue__.ToString();

                        nt = ClassificationValue(curvalue);

                        if (nt == Node_Type.nd_unknown)
                        {
                            //if (msreg) msreg->AddError("Ошибка формата потока. Неизвестный тип значения.", "Значение", curvalue, "Путь", path);
                            ShowMessage("Ошибка формата потока. Неизвестный тип значения. Значение " + curvalue + ", Путь " + path);
                        }
                        t.AddChild(curvalue, nt);
                        t = t.Get_Parent();
                        if (t == null)
                        {
                            /*
                             * if (msreg) msreg->AddError("Ошибка формата потока. Лишняя закрывающая скобка }.",
                             *   "Позиция", i,
                             *   "Путь", path);
                             */
                            ShowMessage("Ошибка формата потока. Лишняя закрывающая скобка. Позиция " + i.ToString() + ", Путь " + path);
                            ret = null;
                            return(null);
                        }
                        state = _state.s_delimitier;
                        break;

                    default:
                        __curvalue__.Append(sym);
                        break;
                    }
                    break;

                default:
                    /*
                     * if (msreg) msreg->AddError("Ошибка формата потока. Неизвестный режим разбора.",
                     *   "Режим разбора", tohex(state),
                     *   "Путь", path);
                     */
                    ShowMessage("Ошибка формата потока. Неизвестный режим разбора. Режим разбора " + state.ToString() + ", Путь " + path);
                    ret = null;
                    return(null);
                }
            }


            if (state == _state.s_nonstring)
            {
                curvalue = __curvalue__.ToString();
                nt       = ClassificationValue(curvalue);
                if (nt == Node_Type.nd_unknown)
                {
                    /*
                     * if (msreg) msreg->AddError("Ошибка формата потока. Неизвестный тип значения.",
                     * "Значение", curvalue,
                     * "Путь", path);
                     */
                    ShowMessage("Ошибка формата потока. Неизвестный тип значения. Значение: " + curvalue + ", Путь " + path);
                }
                t.AddChild(curvalue, nt);
            }
            else
            if (state == _state.s_quote_or_endstring)
            {
                t.AddChild(__curvalue__.ToString(), Node_Type.nd_string);
            }
            else
            if (state != _state.s_delimitier)
            {
                /*
                 * if (msreg) msreg->AddError("Ошибка формата потока. Незавершенное значение",
                 *   "Режим разбора", tohex(state),
                 *   "Путь", path);
                 */
                ShowMessage("Ошибка формата потока. Незавершенное значение. Режим разбора: " + state.ToString() + ", Путь " + path);
                ret = null;
                return(null);
            }

            if (t != ret)
            {
                /*
                 * if (msreg) msreg->AddError("Ошибка формата потока. Не хватает закрывающих скобок } в конце текста разбора.",
                 *   "Путь", path);
                 */
                ShowMessage("Ошибка формата потока. Не хватает закрывающих скобок в конце текста разбора, путь " + path);
                ret = null;
                return(null);
            }

            return(ret);
        } // End parse_1Ctext
Ejemplo n.º 17
0
        public static Tree Parse_1Cstream(Stream str, string err, string path)
        {
            StringBuilder __curvalue__ = new StringBuilder("");

            string curvalue = "";

            _state state = _state.s_value;

            int i = 0;

            Char sym = '0';

            int _sym = 0;

            Node_Type nt = Node_Type.nd_unknown;

            Tree ret = new Tree("", Node_Type.nd_list, null);

            Tree t = ret;

            //StreamReader reader = new StreamReader(str, true);
            StreamReader reader = new StreamReader(str, Encoding.ASCII, true); // т.к. файл в кодировке win1251

            for (i = 1, _sym = reader.Read(); _sym >= 0; i++, _sym = reader.Read())
            {
                sym = (Char)_sym;
                //if(i % 0x100000 == 0) if(err) err->Status(String(i/0x100000) + L" MB");
                switch (state)
                {
                case _state.s_value:
                    switch (sym)
                    {
                    case ' ':          // space
                    case '\t':
                    case '\r':
                    case '\n':
                        break;

                    case '"':
                        __curvalue__.Clear();
                        state = _state.s_string;
                        break;

                    case '{':
                        t = new Tree("", Node_Type.nd_list, t);
                        break;

                    case '}':
                        if (t.Get_First() != null)
                        {
                            t.AddChild("", Node_Type.nd_empty);
                        }
                        t = t.Get_Parent();
                        //if (t != null)
                        if (t is null)
                        {
                            // Ошибка формата потока. Лишняя закрывающая скобка }.
                            ShowMessage("Ошибка формата потока. Лишняя закрывающая скобка }");
                            ret = null;
                            return(null);
                        }
                        state = _state.s_delimitier;
                        break;

                    case ',':
                        t.AddChild("", Node_Type.nd_empty);
                        break;

                    default:
                        __curvalue__.Clear();
                        __curvalue__.Append(sym);
                        state = _state.s_nonstring;
                        break;
                    }
                    break;

                case _state.s_delimitier:
                    switch (sym)
                    {
                    case ' ':          // space
                    case '\t':
                    case '\r':
                    case '\n':
                        break;

                    case ',':
                        state = _state.s_value;
                        break;

                    case '}':
                        t = t.Get_Parent();
                        //if (t != null)
                        if (t is null)
                        {
                            // Ошибка формата потока. Лишняя закрывающая скобка }.
                            ShowMessage("Ошибка формата потока. Лишняя закрывающая скобка }");
                            ret = null;
                            return(null);
                        }
                        //state = _state.s_delimitier;
                        break;

                    default:
                        // Ошибка формата потока. Ошибочный символ в режиме ожидания разделителя.
                        ShowMessage("Ошибка формата потока. Ошибочный символ в режиме ожидания разделителя.");
                        __curvalue__.Clear();
                        __curvalue__.Append(sym);
                        ret = null;
                        return(null);
                    }
                    break;

                case _state.s_string:
                    if (sym == '"')
                    {
                        state = _state.s_quote_or_endstring;
                    }
                    else
                    {
                        __curvalue__.Append(sym);
                    }
                    break;

                case _state.s_quote_or_endstring:
                    if (sym == '"')
                    {
                        __curvalue__.Append(sym);
                        state = _state.s_string;
                    }
                    else
                    {
                        t.AddChild(__curvalue__.ToString(), Node_Type.nd_string);
                        switch (sym)
                        {
                        case ' ':
                        case '\t':
                        case '\r':
                        case '\n':
                            state = _state.s_delimitier;
                            break;

                        case ',':
                            state = _state.s_value;
                            break;

                        case '}':
                            t = t.Get_Parent();
                            //if (t != null)
                            if (t is null)
                            {
                                // Ошибка формата потока. Лишняя закрывающая скобка }.
                                ShowMessage("Ошибка формата потока. Лишняя закрывающая скобка }.");
                                ret = null;
                                return(null);
                            }
                            state = _state.s_delimitier;
                            break;

                        default:
                            // Ошибка формата потока. Ошибочный символ в режиме ожидания разделителя.
                            ShowMessage("Ошибка формата потока. Ошибочный символ в режиме ожидания разделителя.");
                            ret = null;
                            return(null);
                        }
                    }
                    break;

                case _state.s_nonstring:
                    switch (sym)
                    {
                    case ',':
                        curvalue = __curvalue__.ToString();
                        nt       = ClassificationValue(curvalue);
                        if (nt == Node_Type.nd_unknown)
                        {
                            // Ошибка формата потока. Неизвестный тип значения.
                            ShowMessage("Ошибка формата потока. Неизвестный тип значения.");
                        }
                        t.AddChild(curvalue, nt);
                        state = _state.s_value;
                        break;

                    case '}':
                        curvalue = __curvalue__.ToString();
                        nt       = ClassificationValue(curvalue);
                        if (nt == Node_Type.nd_unknown)
                        {
                            // Ошибка формата потока. Неизвестный тип значения.
                            ShowMessage("Ошибка формата потока. Неизвестный тип значения.");
                        }
                        t.AddChild(curvalue, nt);
                        t = t.Get_Parent();
                        //if (t != null)
                        if (t is null)
                        {
                            // Ошибка формата потока. Лишняя закрывающая скобка }.
                            ShowMessage("Ошибка формата потока. Лишняя закрывающая скобка }.");
                            ret = null;
                            return(null);
                        }
                        state = _state.s_delimitier;
                        break;

                    default:
                        __curvalue__.Append(sym);
                        break;
                    }
                    break;

                default:
                    if (1 != 1)
                    {
                        // Ошибка формата потока. Неизвестный режим разбора.
                        ShowMessage("Ошибка формата потока. Неизвестный режим разбора.");
                    }
                    ret = null;
                    return(null);
                }
            } // end of for

            if (state == _state.s_nonstring)
            {
                curvalue = __curvalue__.ToString();
                nt       = ClassificationValue(curvalue);
                if (nt == Node_Type.nd_unknown)
                {
                    // Ошибка формата потока. Неизвестный тип значения.
                    ShowMessage("Ошибка формата потока. Неизвестный тип значения.");
                }
                t.AddChild(curvalue, nt);
            }
            if (state == _state.s_quote_or_endstring)
            {
                t.AddChild(__curvalue__.ToString(), Node_Type.nd_string);
            }
            if (state != _state.s_delimitier)
            {
                ret = null;
                return(null);
            }
            if (t != ret)
            {
                // Ошибка формата потока. Не хватает закрывающих скобок } в конце текста разбора.
                ShowMessage("Ошибка формата потока. Не хватает закрывающих скобок } в конце текста разбора. ");
                ret = null;
                return(null);
            }
            return(ret);
        } // end of parce of tree
Ejemplo n.º 18
0
    void MoveUnit()
    {
        float xSpeed;
        float ySpeed;

        xSpeed = 0;
        ySpeed = 0;

        if (deltaX > 0)
        {
            xSpeed  = speed * Time.deltaTime;
            deltaX -= xSpeed;

            if (deltaX < 0)
            {
                xSpeed = deltaX;
                deltaX = 0;
            }
        }
        else if (deltaX < 0)
        {
            xSpeed  = speed * Time.deltaTime * -1;
            deltaX -= xSpeed;

            if (deltaX > 0)
            {
                xSpeed = -deltaX;
                deltaX = 0;
            }
        }

        if (deltaY > 0)
        {
            ySpeed  = speed * Time.deltaTime;
            deltaY -= ySpeed;

            if (deltaY < 0)
            {
                ySpeed = deltaY;
                deltaY = 0;
            }
        }
        else if (deltaY < 0)
        {
            ySpeed  = speed * Time.deltaTime * -1;
            deltaY -= ySpeed;

            if (deltaY > 0)
            {
                ySpeed = -deltaY;
                deltaY = 0;
            }
        }

        //Debug.Log(xSpeed + ":" + ySpeed + "> <" + deltaX + ":" + deltaY);
        if ((deltaX == 0) && (deltaY == 0))
        {
            curTile   = moveTile;
            NextState = _state.Idle;
            State     = NextState;
            world.GetComponent <WorldController>().UnitAI((int)curTile.y, (int)curTile.x);
        }

        transform.position = new Vector3(transform.position.x + xSpeed, transform.position.y + ySpeed, transform.position.z);
    }
Ejemplo n.º 19
0
    void Update()
    {
        // Instantiate the health bars
        if ((HpLeftBar == null) && (BarEmptyLeft != null))
        {
            HpLeftBar  = Instantiate(BarEmptyLeft, HpBarPos, Quaternion.identity) as GameObject;
            HpMidBar   = Instantiate(BarEmptyMid, HpBarPos + new Vector3(0.3f * transform.localScale.x, 0, 0), Quaternion.identity) as GameObject;
            HpRightBar = Instantiate(BarEmptyRight, HpBarPos + new Vector3(0.6f * transform.localScale.x, 0, 0), Quaternion.identity) as GameObject;
            HpBarFill  = Instantiate(HpBarColor, HpBarPos + new Vector3(0.3f * transform.localScale.x, 0, 0), Quaternion.identity) as GameObject;
            HpBarFill.transform.localScale = new Vector3(HpBarMidScale, 0.4f * transform.localScale.x, 1);

            // Make the health bars follow the unit
            HpLeftBar.transform.parent  = transform;
            HpMidBar.transform.parent   = transform;
            HpRightBar.transform.parent = transform;
            HpBarFill.transform.parent  = transform;
        }

        // Don't update the unit until the animation has been changed
        if (NextState != State)
        {
            if ((GetComponent <UnitAnimation>() != null) && (GetComponent <UnitAnimation>().isAnimationChanged() == true))
            {
                State = NextState;
            }
            else
            {
                return;
            }
        }

        if (paused)
        {
            return;
        }

        // Apply unit regen
        if (regenRate > 0)
        {
            if (nextRegenTick < Time.time)
            {
                if (health < getStats().maxHealth)
                {
                    health += regenRate;

                    if (health > getStats().maxHealth)
                    {
                        health = getStats().maxHealth;
                    }

                    updateHealthBars();
                    nextRegenTick = Time.time + 1;
                }
            }
        }

        switch (State)
        {
        case _state.Idle:
            this.SendMessage("SetDirection", idleDir, SendMessageOptions.DontRequireReceiver);
            this.SendMessage("SetAction", UnitAnimation._action.Idle, SendMessageOptions.DontRequireReceiver);
            this.SendMessage("StartAnimation", null, SendMessageOptions.DontRequireReceiver);
            break;

        case _state.SetupMove:
            SetupMoveUnit();
            break;

        case _state.Move:
            MoveUnit();
            break;

        case _state.Advance:
            break;

        case _state.Attacking:
            AttackUnit();
            break;

        case _state.Engage:
            EngageUnit();
            break;

        case _state.Dead:
            DeadUnit();
            break;
        }
    }
Ejemplo n.º 20
0
    //public void ShowPauseButton()
    //{
    //    if (!pauseButton)
    //    {
    //        pauseButton = GameObject.Instantiate(pauseButtonPrefab);
    //    }
    //    pauseButton.SetActive(true);
    //}

    public void IntroOnClick()
    {
        SceneManager.LoadScene(1);
        gameState = _state.world;
    }
Ejemplo n.º 21
0
        private void arduino_admin_func(Object source, ElapsedEventArgs e)
        {
            if (arduino_serial != null)
            {
                if (!arduino_serial.IsOpen)
                {
                    state = _state.DISCONNECTED;
                }
            }
            admin_clock++;
            if (arduino_serial.IsOpen)
            {
                if (arduino_serial.BytesToRead > 0)
                {
                    this.serial_data_received(null, null);
                }
            }
            switch (state)
            {
            case _state.DISCONNECTED:
                /*if (arduino_serial.IsOpen)
                 * {
                 *  state = _state.INITIALIZING;
                 *  return;
                 * }*/
                /*if (!comboBox1.InvokeRequired)
                 * {
                 *  String[] ports = SerialPort.GetPortNames();
                 *  if (this.actual_ports.Length == 255)
                 *  {
                 *      foreach (String port in ports)
                 *          comboBox1.Items.Add(port);
                 *      comboBox1.Refresh();
                 *  }
                 *  else if (!this.actual_ports.SequenceEqual(ports))
                 *  {
                 *      comboBox1.Items.Clear();
                 *      foreach (String port in ports)
                 *          comboBox1.Items.Add(port);
                 *      comboBox1.Refresh();
                 *  }
                 *  this.actual_ports = ports;
                 * }*/
                break;

            case _state.INITIALIZING:
                switch (state_init)
                {
                case _state_init.NOT_READY:
                    if (command_valid)
                    {
                        state_init++;
                        command_valid   = false;
                        command_timeout = 0;
                        command_checker = "";
                        return;
                    }
                    if (command_checker == "" || admin_clock > command_timeout)
                    {
                        //Console.WriteLine("ReadyPc");
                        arduino_serial.WriteLine("ReadyPc");
                        command_checker   = "ReadyAr";
                        command_timeout   = admin_clock + 10;
                        calibrate_counter = 0;
                    }
                    break;

                case _state_init.GETTING_DATA:
                    if (command_valid)
                    {
                        calibrate_counter++;
                        //motors[0].position = ((motors[0].position * (calibrate_counter - 1)) + values_received[0])/ calibrate_counter;
                        //motors[1].position = ((motors[1].position * (calibrate_counter - 1)) + values_received[1]) / calibrate_counter;
                        motors[0].position = values_received[0];
                        motors[1].position = values_received[1];
                        if (calibrate_counter > 128)
                        {
                            motors[0].setpoint = motors[0].position;
                            motors[1].setpoint = motors[1].position;
                            state_init++;
                        }
                        command_valid   = false;
                        command_timeout = 0;
                        command_checker = "";
                    }
                    if (command_checker == "" || admin_clock > command_timeout)
                    {
                        arduino_serial.WriteLine("GetData");
                        command_checker = "SendData";
                        command_timeout = admin_clock + 10;
                    }
                    break;

                case _state_init.DATA_READY:
                    if (command_valid)
                    {
                        state++;
                        command_valid   = false;
                        command_timeout = 0;
                        command_checker = "";
                        return;
                    }
                    if (command_checker == "" || admin_clock > command_timeout)
                    {
                        arduino_serial.WriteLine("DataSetup");
                        command_checker = "ArduinoSetup";
                        command_timeout = admin_clock + 10;
                    }
                    break;
                }
                break;

            case _state.CONTROLLING:
                if (command_valid)
                {
                    if (command_checker.Equals("SetpointSetted"))
                    {
                        motors[0].position = values_received[0];
                        motors[1].position = values_received[1];
                    }
                    else if (command_checker.Equals("BrakeSetted"))
                    {
                        if (motors[0].brake != values_received[0] || motors[1].brake != values_received[1])
                        {
                            ;
                        }
                    }
                    else if (command_checker.Equals("HomeSetted"))
                    {
                        if (motors[0].home != values_received[0] || motors[1].home != values_received[1])
                        {
                            ;
                        }
                    }
                    command_valid   = false;
                    command_timeout = 0;
                    command_checker = "";
                    return;
                }
                if (command_checker == "" || admin_clock > command_timeout)
                {
                    switch (state_ctrl)
                    {
                    case _state_ctrl.CONTROLLING:
                        arduino_serial.WriteLine(String.Format("Controlling({0},{1})", motors[0].setpoint, motors[1].setpoint));
                        command_checker = "SetpointSetted";
                        break;

                    case _state_ctrl.SETBRAKE:
                        arduino_serial.WriteLine(String.Format("setbrake({0},{1})", motors[0].brake, motors[1].brake));
                        command_checker = "BrakeSetted";
                        state_ctrl      = _state_ctrl.CONTROLLING;
                        break;

                    case _state_ctrl.SETHOME:
                        arduino_serial.WriteLine(String.Format("sethome({0},{1})", motors[0].home, motors[1].home));
                        command_checker = "HomeSetted";
                        state_ctrl      = _state_ctrl.CONTROLLING;
                        break;
                    }
                }
                break;

            case _state.HOMMING_LOCK:
                if (command_checker == "" || admin_clock > command_timeout)
                {
                    arduino_serial.WriteLine("TesteIno");
                    command_checker  = "InoCtrl";
                    command_timeout += admin_clock + 10;
                }
                break;
            }
        }
Ejemplo n.º 22
0
 public void notReady()
 {
     this.state = _state.beforeStart;
     buttonA.notReady();
     buttonB.notReady();
 }
Ejemplo n.º 23
0
 private void DetectGroundHit()
 {
     transform.position += delta * Time.deltaTime;
     delta.y -= gravity * Time.deltaTime;
     RaycastHit fallingHitinfo;
     if(Physics.Raycast(new Ray(transform.position, Vector3.down), out fallingHitinfo)) {
         if(fallingHitinfo.collider.gameObject.layer == LayerMask.NameToLayer("Terrain")) {
             if(fallingHitinfo.distance < 0.2f){
                 state = _state.OnGround;
                 transform.position = fallingHitinfo.point;
                 return;
             }
         }
     }
 }
Ejemplo n.º 24
0
 public void Reset()
 {
     transform.position = spawnPos;
     state = _state.OnGround;
 }
Ejemplo n.º 25
0
 set => SetProperty(ref _state, value);
Ejemplo n.º 26
0
 void Attack()
 {
     NextState = _state.Attacking;
 }