Exemplo n.º 1
0
        static void Main(string[] args)
        {
            var KeyWords    = new ConstTable(@"Tables/KeyWords.txt");
            var Delimiters  = new ConstTable(@"Tables/Delimiters.txt");
            var Operations  = new ConstTable(@"Tables/Operations.txt");
            var Constants   = new VarTable();
            var Identifiers = new VarTable();
            var Goto        = new ConstTable(@"Tables/Goto.txt");
            var Labels      = new VarTable();

            string TestFile = "test3";

            LexicAnalyzer LA = new LexicAnalyzer(KeyWords, Delimiters, Operations, Constants, Identifiers);

            Token[] LexicAnalysisResult = LA.AnalyzeSource(TestFile);

            SyntacticAnalyzer SA = new SyntacticAnalyzer(KeyWords, Delimiters, Operations, Constants, Identifiers, Goto, Labels);

            try
            {
                SA.AnalyzeTokens(LexicAnalysisResult);
                Console.WriteLine("Синтаксическтй анализ успешно завершен.");
            }
            catch (Exception Ex)
            {
                Console.WriteLine("Ошибка: " + Ex.Message);
                File.WriteAllText(Directory.GetCurrentDirectory() + @"\" + TestFile + ".syn.out.txt", "Ошибка: " + Ex.Message);
            }

            CodeBuilder CB = new CodeBuilder(KeyWords, Operations, Constants, Identifiers, Goto, Labels);

            CB.BuildCode(SA.Output);
            File.WriteAllText(Directory.GetCurrentDirectory() + @"\" + TestFile + ".asm", CB.ToString());
            Console.WriteLine($"Построение кода успешно завершено. Выходной файл: {TestFile}.asm");
        }
Exemplo n.º 2
0
    public void ShowAttackChangeHP(bool left, SpriteRenderer sr, int max, int src, int dest, int speed, float waitTime, UnityAction onComplete = null)
    {
        UI_BattleAttackInfo ui = left ? Left_BattleAttackInfo : Right_BattleAttackInfo;

        gameMode.unitShower.SetHP(sr, max, src, dest, ConstTable.UI_VALUE_BAR_SPEED());
        ui.SetHP(max, src, dest, ConstTable.UI_VALUE_BAR_SPEED(), waitTime, onComplete);
    }
Exemplo n.º 3
0
    public Transform AddUnit(EnumCharacterCamp t, string name, Sprite[] stay, Sprite[] move, Vector2Int tilePos)
    {
        Transform  root = GetUnitTransformRoot(t);
        GameObject unit = new GameObject(name);
        GameObject hp   = new GameObject("hp");

        unit.transform.SetParent(root, false);
        var hp_sp = hp.AddComponent <SpriteRenderer>();

        Utils.GameUtil.DelayFuncEndOfFrame(() => hp_sp.size = new Vector2(HP_WIDTH, HP_HEIGHT));
        hp_sp.drawMode     = SpriteDrawMode.Sliced;
        hp_sp.sortingOrder = 1;
        hp_sp.sprite       = BarSprite;
        hp_sp.color        = ConstTable.CAMP_COLOR(t, 1.0f);
        hp.transform.SetParent(unit.transform, false);
        hp.transform.localPosition = new Vector3(-0.50f, 0.08f, 0);
        hp.transform.localScale    = Vector3.one;
        hp.SetActive(false);
        var sr = unit.AddComponent <SpriteRenderer>();

        sr.sharedMaterial = UnitMaterials[(int)t];
        MultiSpriteAnimator anim = unit.AddComponent <MultiSpriteAnimator>();

        anim.SetAnimatorContent(MultiSpriteAnimator.EAnimateType.Stay, stay);
        anim.SetAnimatorContent(MultiSpriteAnimator.EAnimateType.Move, move);
        anim.SetActiveAnimator(MultiSpriteAnimator.EAnimateType.Stay);
        PositionMath.SetUnitLocalPosition(unit.transform, tilePos);
        keyValue.Add(tilePos, anim);
        return(unit.transform);
    }
Exemplo n.º 4
0
 void Awake()
 {
     render          = GetComponent <SpriteRenderer>();
     HPBar           = transform.GetChild(0).gameObject;
     ConstSwitchTime = new float[countOfType] {
         ConstTable.UNIT_STAY_SWITCH_TIME(), ConstTable.UNIT_MOVE_SWITCH_TIME()
     };
 }
Exemplo n.º 5
0
 public void Show(EnumCharacterCamp camp, int Turn, UnityAction onHide)
 {
     base.Show();
     RegisterHideEvent(onHide);
     text.text  = camp.ToString() + "  Turn " + Turn;
     text.color = ConstTable.CAMP_COLOR(camp);
     AnimatePos(true, MoveOut);
 }
Exemplo n.º 6
0
 public LexicAnalyzer(
     ConstTable KeyWords,
     ConstTable Delimiters,
     ConstTable Operations,
     VarTable Constants,
     VarTable Identifiers)
 {
     FSM = new FiniteStateMachine(KeyWords, Delimiters, Operations, Constants, Identifiers);
 }
Exemplo n.º 7
0
        /// <summary>
        /// Конструктор.
        /// </summary>
        public FiniteStateMachine()
        {
            State       = States.Start;
            KeyWords    = new ConstTable(@"Tables/KeyWords.txt");
            Delimiters  = new ConstTable(@"Tables/Delimiters.txt");
            Operations  = new ConstTable(@"Tables/Operations.txt");
            Constants   = new VarTable();
            Identifiers = new VarTable();
            Letters     = new ConstTable(@"Tables/Letters.txt");
            Digits      = new ConstTable(@"Tables/Digits.txt");

            Buffer   = "";
            StepBack = false;
        }
Exemplo n.º 8
0
        static void Main(string[] args)
        {
            var           KeyWords    = new ConstTable(@"Tables/KeyWords.txt");
            var           Delimiters  = new ConstTable(@"Tables/Delimiters.txt");
            var           Operations  = new ConstTable(@"Tables/Operations.txt");
            var           Constants   = new VarTable();
            var           Identifiers = new VarTable();
            LexicAnalyzer La          = new LexicAnalyzer(KeyWords, Delimiters, Operations, Constants, Identifiers);

            Token[] res = La.AnalyzeSource("test2");
            foreach (string s in La.Output)
            {
                Console.WriteLine(s);
            }
            Console.WriteLine(Constants);
            Console.WriteLine(Identifiers);
        }
Exemplo n.º 9
0
        public override void OnEnter()
        {
            RPGCharacter ch = null;

            if (CharacterID >= 0)
            {
                ch = gameMode.ChapterManager.GetCharacterFromID(CharacterID);
                Assert.IsNotNull(ch, CharacterID + " id 角色不存在");
                gameMode.BattlePlayer.KillUnit(CharacterID, ConstTable.UNIT_DISAPPEAR_SPEED(Speed), Continue);
            }
            else
            {
                ch = gameMode.ChapterManager.GetCharacterFromCoord(TilePos);
                Assert.IsNotNull(ch, TilePos + "处不存在角色");
                gameMode.BattlePlayer.KillUnitAt(TilePos, ConstTable.UNIT_DISAPPEAR_SPEED(Speed), Continue);
            }
        }
Exemplo n.º 10
0
        public void Show(string[] talkData)
        {
            mTalkData              = talkData;
            scriptLineIndex        = 0;
            bTop                   = false;
            scriptLineIndex        = 0;
            lastLineIndex          = 0;
            bTyping                = false;
            bStopType              = false;
            Char_Top.sprite        = null;
            ContentBox_Top.text    = NameBox_Top.text = null;
            Char_Bottom.sprite     = null;
            ContentBox_Bottom.text = NameBox_Bottom.text = null;

            TypeTime = ConstTable.SHOW_TEXT_TYPE_TIME();
            SoundManage.Instance.LowerBGM();
            gameObject.SetActive(true);
        }
Exemplo n.º 11
0
        public CodeBuilder(
            ConstTable KeyWords,
            ConstTable Operations,
            VarTable Constants,
            VarTable Identifiers,
            ConstTable Goto,
            VarTable Labels
            )
        {
            this.KeyWords    = KeyWords;
            this.Operations  = Operations;
            this.Constants   = Constants;
            this.Identifiers = Identifiers;
            this.Goto        = Goto;
            this.Labels      = Labels;

            output = new StringBuilder();
        }
Exemplo n.º 12
0
        public override void Action()
        {
            Debug.Log("开始AI行动");
            sequenceEvents = new List <Sequence.SequenceEvent>();
            //判定人物是否在一半视野内,如果不在则进行移动
            bool isInHalfView = gameMode.slgCamera.IsTargetInHalfView(unit.GetTileCoord());

            if (isInHalfView)
            {
                return;
            }
            var moveCamera = AddSequenceEvent <Sequence.CameraMoveToTile>();

            moveCamera.TilePos  = unit.GetTileCoord();
            moveCamera.MoveTime = ConstTable.CAMERA_MOVE_TIME();
            var waitTime = AddSequenceEvent <Sequence.WaitTime>();

            waitTime.duration = 1.0f;
        }
Exemplo n.º 13
0
        /// <summary>
        /// Конструктор.
        /// </summary>
        public FiniteStateMachine(
            ConstTable KeyWords,
            ConstTable Delimiters,
            ConstTable Operations,
            VarTable Constants,
            VarTable Identifiers
            )
        {
            State            = States.Start;
            this.KeyWords    = KeyWords;
            this.Delimiters  = Delimiters;
            this.Operations  = Operations;
            this.Constants   = Constants;
            this.Identifiers = Identifiers;
            Letters          = new ConstTable(@"Tables/Letters.txt");
            Digits           = new ConstTable(@"Tables/Digits.txt");

            Buffer   = "";
            StepBack = false;
        }
Exemplo n.º 14
0
        public override void OnEnter()
        {
            Vector2Int startPos = Routine.First();
            Vector2Int endPos   = Routine.Last();

            Assert.IsFalse(startPos == endPos, "移动点和终结点相同");
            RPGCharacter ch = null;

            if (CharacterID >= 0)
            {
                ch = gameMode.ChapterManager.GetCharacterFromID(CharacterID);
                Assert.IsNotNull(ch, startPos + "处不存在角色");
                var chPos = ch.GetTileCoord();
                Assert.IsTrue(startPos == chPos, "ID:" + CharacterID + "  移动起始点" + startPos + "与角色所在位置" + chPos + "不相符");
            }
            else
            {
                ch = gameMode.ChapterManager.GetCharacterFromCoord(startPos);
                Assert.IsNotNull(ch, startPos + "处不存在角色");
            }
            ch.Logic.SetTileCoord(endPos);

            if (CameraFollow)
            {
                gameMode.slgCamera.StartFollowTransform(ch.GetTransform(), true);
            }

            if (WaitUntilFinished)
            {
                gameMode.BattlePlayer.MoveUnitByRoutine(Routine, ConstTable.UNIT_MOVE_SPEED(Speed), Continue);
            }
            else
            {
                gameMode.BattlePlayer.MoveUnitByRoutine(Routine, ConstTable.UNIT_MOVE_SPEED(Speed), null);
                Continue();
            }
        }
Exemplo n.º 15
0
        private async void CompileButton_Click(object sender, RoutedEventArgs e)
        {
            var str = EditField.Text;
            var inp = new StringAsFileBuffer(str);

            _lexer = new LexAn();

            try {
                _lexer.Scan(inp);
            }
            catch (FormatException ex)
            {
                MessageBox.Show(ex.Message, "Lexical error");
                Log = "Error: " + ex.Message;
                return;
            }
            catch (ArgumentException ex)
            {
                MessageBox.Show(ex.Message, "Compilation error");
                Log = "Error: " + ex.Message;
                return;
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString(), "Inner compiler error");
                Log = "Please contact the developer " + ex.ToString();
                return;
            }

            var result = "";

            foreach (var s in _lexer.Output)
            {
                result += s + " ";
            }

            Log = "Lexical output: " + result;

            Binding b = new Binding();

            b.Source = Identifiers;
            b.Mode   = BindingMode.OneWay;
            BindingOperations.ClearBinding(IdentifiersTable, DataGrid.ItemsSourceProperty);
            IdentifiersTable.SetBinding(DataGrid.ItemsSourceProperty, b);

            Binding bs = new Binding();

            bs.Source = Constants;
            bs.Mode   = BindingMode.OneWay;
            BindingOperations.ClearBinding(ConstTable, DataGrid.ItemsSourceProperty);
            ConstTable.SetBinding(DataGrid.ItemsSourceProperty, bs);

            var syntax  = new SyntaxAnalyser(_lexer);
            var loading = new Loading();

            loading.Show();
            loading.progress.Maximum = _lexer.Output.Count - 1;
            syntax.LexIndexChanged  += (i) => ProgressUpdate(loading, i);
            await Task.Run(() => syntax.BuildAST());

            loading.Close();
            Log = syntax.IsValid ? "Valid" : "Invalid";
            if (!syntax.IsValid)
            {
                Log = syntax.ErrorMessage;
            }
            else
            {
                var root = treeView.Items[0];
                DrawTree((TreeViewItem)root, syntax.Tree.Root);

                tabs.SelectedIndex = 1;
            }
        }
Exemplo n.º 16
0
        static bool GetLexem(string name)
        {
            if (IsLexem(name))
            {
                int c = 0;
                for (int i = 0; i < lexem.Length; i++)
                {
                    if (name == lexem[i])
                    {
                        c = i + 1;
                    }
                }
                LexemTable.Add(new Lexem(++LexemNumber, NumberOfLines, name, c, 0));
                return(true);
            }

            if (IsId(name))
            {
                string type;
                if (IsInitialized(name, out type))
                {
                    int  code = 0;
                    bool key  = false;
                    for (int i = 0; i < IdTable.Count; i++)
                    {
                        if ((name == IdTable[i].IdName))
                        {
                            if (type != IdTable[i].IdType)
                            {
                                return(false);
                            }
                            key  = true;
                            code = IdTable[i].IdCode;
                            break;
                        }
                    }
                    if (!key)
                    {
                        IdTable.Add(new Id(name, ++IdCodeNumber, type));
                        code = IdCodeNumber;
                    }
                    LexemTable.Add(new Lexem(++LexemNumber, NumberOfLines, name, 46, code));
                }
                else
                {
                    return(false);
                }
                return(true);
            }

            if (IsConst(name))
            {
                bool key    = false;
                int  Number = 0;
                for (int i = 0; i < ConstCodeNumber; i++)
                {
                    if (ConstTable[i].ConstName == name)
                    {
                        key    = true;
                        Number = ConstTable[i].ConstCode;
                        break;
                    }
                }
                if (!key)
                {
                    ConstTable.Add(new Const(name, ++ConstCodeNumber));
                    Number = ConstCodeNumber;
                }
                LexemTable.Add(new Lexem(++LexemNumber, NumberOfLines, name, 47, Number));
                return(true);
            }
            return(false);
        }
Exemplo n.º 17
0
        static void Main(string[] args)
        {
            var KeyWords    = new ConstTable(@"Tables/KeyWords.txt");
            var Delimiters  = new ConstTable(@"Tables/Delimiters.txt");
            var Operations  = new ConstTable(@"Tables/Operations.txt");
            var Constants   = new VarTable();
            var Identifiers = new VarTable();
            var Goto        = new ConstTable(@"Tables/Goto.txt");
            var Labels      = new VarTable();

            string TestFile = "test1";

            LexicAnalyzer LA = new LexicAnalyzer(KeyWords, Delimiters, Operations, Constants, Identifiers);

            Token[] LexicAnalysisResult = LA.AnalyzeSource(TestFile);

            SyntacticAnalyzer SA = new SyntacticAnalyzer(KeyWords, Delimiters, Operations, Constants, Identifiers, Goto, Labels);

            try
            {
                SA.AnalyzeTokens(LexicAnalysisResult);
                Console.WriteLine("Синтаксическтй анализ успешно завершен.");

                var Tokens = new List <string>();
                var Text   = new List <string>();
                foreach (Token[] Line in SA.Output)
                {
                    string buffer     = "";
                    string textBuffer = "";
                    foreach (Token T in Line)
                    {
                        buffer += T;
                        if (T.TableID == KeyWords.ID)
                        {
                            textBuffer += KeyWords.Find(T.Index) + " ";
                        }
                        if (T.TableID == Operations.ID)
                        {
                            textBuffer += Operations.Find(T.Index) + " ";
                        }
                        if (T.TableID == Constants.ID)
                        {
                            textBuffer += Constants.Find(T.Index) + " ";
                        }
                        if (T.TableID == Identifiers.ID)
                        {
                            textBuffer += Identifiers.Find(T.Index) + " ";
                        }
                        if (T.TableID == Goto.ID)
                        {
                            textBuffer += Goto.Find(T.Index) + " ";
                        }
                        if (T.TableID == Labels.ID)
                        {
                            textBuffer += Labels.Find(T.Index) + " ";
                        }
                    }
                    Tokens.Add(buffer);
                    Text.Add(textBuffer);
                }

                File.WriteAllLines(Directory.GetCurrentDirectory() + @"\" + TestFile + ".syn.out.txt", Tokens);
                File.WriteAllLines(Directory.GetCurrentDirectory() + @"\" + TestFile + ".syn.text.out.txt", Text);
            }
            catch (Exception Ex)
            {
                Console.WriteLine("Ошибка: " + Ex.Message);
                File.WriteAllText(Directory.GetCurrentDirectory() + @"\" + TestFile + ".syn.out.txt", "Ошибка: " + Ex.Message);
            }
        }
Exemplo n.º 18
0
        public SyntacticAnalyzer(
            ConstTable KeyWords,
            ConstTable Delimiters,
            ConstTable Operations,
            VarTable Constants,
            VarTable Identifiers,
            ConstTable Goto,
            VarTable Labels
            )
        {
            this.KeyWords    = KeyWords;
            this.Delimiters  = Delimiters;
            this.Operations  = Operations;
            this.Constants   = Constants;
            this.Identifiers = Identifiers;
            this.Goto        = Goto;
            this.Labels      = Labels;

            Output = new List <Token[]>();

            Priority = new Dictionary <Token, int>
            {
                { Operations["+"], 2 },
                { Operations["-"], 2 },
                { Operations["=="], 1 },
                { Operations["<="], 1 },
                { Operations[">="], 1 },
                { Operations["<"], 1 },
                { Operations[">"], 1 },
                { Operations["="], 0 }
            };

            var BODYTerminals = new List <Token> {
                KeyWords["int"], KeyWords["while"], Delimiters["}"]
            };

            BODYTerminals.AddRange(Identifiers.ToArray());

            var D1Terminals = new Token[] { Operations["="], Delimiters[";"] };

            var EXPRTerminals = new List <Token> {
                Delimiters[";"]
            };

            EXPRTerminals.AddRange(Constants.ToArray());
            EXPRTerminals.AddRange(Identifiers.ToArray());

            var ICTerminals = new List <Token>(Constants.ToArray());

            ICTerminals.AddRange(Identifiers.ToArray());

            var W_BODYTerminals = new List <Token>(Identifiers.ToArray());

            W_BODYTerminals.Add(Delimiters["{"]);

            var COMPTerminals = new Token[] { Operations["=="], Operations["<="], Operations[">="], Operations["<"], Operations[">"] };
            var XTerminals    = new Token[] { Operations["+"], Operations["-"], Delimiters[";"] };
            var OPTerminals   = new Token[] { Operations["+"], Operations["-"] };

            Table = new StateDescriptor[]
            {
                new StateDescriptor(KeyWords["void"], 1, false, false, false, true),          //0 PROG
                new StateDescriptor(KeyWords["void"], 2, true, false, false, true),           //1
                new StateDescriptor(KeyWords["main"], 3, true, false, false, true),           //2
                new StateDescriptor(Delimiters["("], 4, true, false, false, true),            //3
                new StateDescriptor(Delimiters[")"], 5, true, false, false, true),            //4
                new StateDescriptor(Delimiters["{"], 6, true, false, false, true),            //5
                new StateDescriptor(BODYTerminals.ToArray(), 8, false, true, false, true),    //6 BODY
                new StateDescriptor(Delimiters["}"], -1, true, false, false, true),           //7
                new StateDescriptor(KeyWords["int"], 12, false, false, true, false),          //8 BODY1
                new StateDescriptor(KeyWords["while"], 23, false, false, false, false),       //9 BODY2
                new StateDescriptor(Identifiers.ToArray(), 46, false, false, false, false),   //10 BODY3
                new StateDescriptor(Delimiters["}"], 75, false, false, false, true),          //11 BODY4
                new StateDescriptor(KeyWords["int"], 13, true, false, false, true),           //12
                new StateDescriptor(Identifiers.ToArray(), 15, false, true, false, true),     //13 DECL
                new StateDescriptor(BODYTerminals.ToArray(), 8, false, false, false, true),   //14 BODY
                new StateDescriptor(Identifiers.ToArray(), 16, true, false, false, true),     //15
                new StateDescriptor(D1Terminals, 18, false, true, false, true),               //16 D1
                new StateDescriptor(Delimiters[";"], -1, true, false, true, true),            //17
                new StateDescriptor(Operations["="], 20, false, false, false, false),         //18 D11
                new StateDescriptor(Delimiters[";"], 22, false, false, false, true),          //19 D12
                new StateDescriptor(Operations["="], 21, true, false, false, true),           //20
                new StateDescriptor(EXPRTerminals.ToArray(), 60, false, false, false, true),  //21 EXPR
                new StateDescriptor(Delimiters[";"], -1, false, false, true, true),           //22 EPS
                new StateDescriptor(KeyWords["while"], 24, true, false, false, true),         //23
                new StateDescriptor(Delimiters["("], 25, true, false, false, true),           //24
                new StateDescriptor(ICTerminals.ToArray(), 29, false, true, false, true),     //25 L_EXPR
                new StateDescriptor(Delimiters[")"], 27, true, false, false, true),           //26
                new StateDescriptor(W_BODYTerminals.ToArray(), 51, false, true, false, true), //27 W_BODY
                new StateDescriptor(BODYTerminals.ToArray(), 8, false, false, false, true),   //28 BODY
                new StateDescriptor(ICTerminals.ToArray(), 32, false, true, false, true),     //29 LOP
                new StateDescriptor(COMPTerminals, 36, false, true, false, true),             //30 COMP
                new StateDescriptor(ICTerminals.ToArray(), 32, false, false, false, true),    //31 LOP
                new StateDescriptor(Identifiers.ToArray(), 34, false, false, false, false),   //32 LOP1
                new StateDescriptor(Constants.ToArray(), 35, false, false, false, true),      //33 LOP1
                new StateDescriptor(Identifiers.ToArray(), -1, true, false, true, true),      //34
                new StateDescriptor(Constants.ToArray(), -1, true, false, true, true),        //35
                new StateDescriptor(Operations["=="], 41, false, false, false, false),        //36 COMP1
                new StateDescriptor(Operations["<="], 42, false, false, false, false),        //37 COMP2
                new StateDescriptor(Operations[">="], 43, false, false, false, false),        //38 COMP3
                new StateDescriptor(Operations["<"], 44, false, false, false, false),         //39 COMP4
                new StateDescriptor(Operations[">"], 45, false, false, false, true),          //40 COMP5
                new StateDescriptor(Operations["=="], -1, true, false, true, true),           //41
                new StateDescriptor(Operations["<="], -1, true, false, true, true),           //42
                new StateDescriptor(Operations[">="], -1, true, false, true, true),           //43
                new StateDescriptor(Operations["<"], -1, true, false, true, true),            //44
                new StateDescriptor(Operations[">"], -1, true, false, true, true),            //45
                new StateDescriptor(Identifiers.ToArray(), 47, true, false, false, true),     //46
                new StateDescriptor(Operations["="], 48, true, false, false, true),           //47
                new StateDescriptor(EXPRTerminals.ToArray(), 60, false, true, false, true),   //48 EXPR
                new StateDescriptor(Delimiters[";"], 50, true, false, false, true),           //49
                new StateDescriptor(BODYTerminals.ToArray(), 8, false, false, false, true),   //50 BODY
                new StateDescriptor(Delimiters["{"], 53, false, false, false, false),         //51 W_BODY1
                new StateDescriptor(Identifiers.ToArray(), 56, false, false, false, true),    //52 W_BODY1
                new StateDescriptor(Delimiters["{"], 54, true, false, false, true),           //53
                new StateDescriptor(BODYTerminals.ToArray(), 8, false, true, false, true),    //54 BODY
                new StateDescriptor(Delimiters["}"], -1, true, false, true, true),            //55
                new StateDescriptor(Identifiers.ToArray(), 57, true, false, false, true),     //56
                new StateDescriptor(Operations["="], 58, true, false, false, true),           //57
                new StateDescriptor(EXPRTerminals.ToArray(), 60, false, true, false, true),   //58 EXPR
                new StateDescriptor(Delimiters[";"], -1, true, false, true, true),            //59
                new StateDescriptor(Constants.ToArray(), 62, false, false, false, false),     //60 EXPR1
                new StateDescriptor(Identifiers.ToArray(), 64, false, false, false, true),    //61 EXPR2
                new StateDescriptor(Constants.ToArray(), 63, true, false, false, true),       //62
                new StateDescriptor(XTerminals, 66, false, false, false, true),               //63 X
                new StateDescriptor(Identifiers.ToArray(), 65, true, false, false, true),     //64
                new StateDescriptor(XTerminals, 66, false, false, false, true),               //65 X
                new StateDescriptor(OPTerminals, 68, false, false, false, false),             //66 X1
                new StateDescriptor(Delimiters[";"], 70, false, false, false, true),          //67 X2
                new StateDescriptor(OPTerminals, 71, false, true, false, true),               //68 OP
                new StateDescriptor(EXPRTerminals.ToArray(), 60, false, false, false, true),  //69 EXPR
                new StateDescriptor(Delimiters[";"], -1, false, false, true, true),           //70 EPS
                new StateDescriptor(Operations["+"], 73, false, false, false, false),         //71 OP1
                new StateDescriptor(Operations["-"], 74, false, false, false, true),          //72 OP2
                new StateDescriptor(Operations["+"], -1, true, false, true, true),            //73
                new StateDescriptor(Operations["-"], -1, true, false, true, true),            //74
                new StateDescriptor(Delimiters["}"], -1, false, false, true, true),           //75 EPS
            };
        }
Exemplo n.º 19
0
 private void HP()
 {
     if (AttackInfo.damageToAttack > 0)
     {
         int maxHP1  = atk.Logic.GetMaxHP();
         int srcHp1  = atk.Logic.GetCurrentHP();
         int destHP1 = atk.Logic.Damage(AttackInfo.damageToAttack);
         if (destHP1 == 0)
         {
             gameMode.UIManager.ShowAttackChangeHP(!IsLeft, defSr, maxHP1, srcHp1, destHP1, ConstTable.UI_VALUE_BAR_SPEED(), WaitTime, null);
         }
         else
         {
             gameMode.UIManager.ShowAttackChangeHP(!IsLeft, defSr, maxHP1, srcHp1, destHP1, ConstTable.UI_VALUE_BAR_SPEED(), WaitTime, null);
         }
     }
     if (AttackInfo.hit)
     {
         int maxHP  = def.Logic.GetMaxHP();
         int srcHP  = def.Logic.GetCurrentHP();
         int destHP = def.Logic.Damage(AttackInfo.damageToDefender);
         if (destHP == 0)
         {
             gameMode.UIManager.ShowAttackChangeHP(IsLeft, atkSr, maxHP, srcHP, destHP, ConstTable.UI_VALUE_BAR_SPEED(), WaitTime, () => Dead(def));
         }
         else
         {
             gameMode.UIManager.ShowAttackChangeHP(IsLeft, atkSr, maxHP, srcHP, destHP, ConstTable.UI_VALUE_BAR_SPEED(), WaitTime, Continue);
         }
         AttackInfo.damageToAttack = 10;
     }
     else
     {
         //miss
         Avoid();
     }
 }
Exemplo n.º 20
0
    public void ExecuteMove(Vector2Int destPos)
    {
        Vector2Int srcPos = currentCharacter.GetTileCoord();

        CurrentCharacterLogic.SetTileCoord(destPos);
        CurrentCharacterLogic.ConsumeActionPoint(EnumActionType.Move);
        ChangeState(EBattleState.Lock);
        ClearRangeAction();
        gameMode.BattlePlayer.MoveUnitAfterAction(currentCharacter.GetCamp(), srcPos, destPos, ConstTable.UNIT_MOVE_SPEED(), CheckRangeEvent);
    }
Exemplo n.º 21
0
 private void Dead(RPGCharacter ch)
 {
     gameMode.BattlePlayer.KillUnit(ch, ConstTable.UNIT_DISAPPEAR_SPEED(), Continue, true);
 }