Exemple #1
0
    public override string Eval(List <Expression> expList, Dictionary <string, TYPEDEF> typedefTable, Dictionary <string, VARDECL> symbolTable)
    {
        if (expList.Count != 1)
        {
            throw new SemanticException("TAIL Operator requires one expression (TAIL <exp> ).");
        }

        string seqname = expList[0].Eval(typedefTable, symbolTable);

        if (!typedefTable.ContainsKey(seqname))
        {
            throw new SemanticException("A SEQUENCE of type " + seqname + " was never defined, please add a TYPEDEF " + seqname + " SEQUENCE ... above.");
        }

        if (typedefTable[seqname].Type != "SEQUENCE")
        {
            throw new SemanticException("Expression " + expList[0] + " evaluates to type " + typedefTable[seqname].Type + " but expected type SUM.");
        }

        SEQUENCE seq = typedefTable[seqname] as SEQUENCE;

        if (null == seq)
        {
            throw new SemanticException("First param to TAIL is not actually a SEQUENCE.");
        }

        return(seq.Name);
    }
    void ShootEraser()
    {
        switch (GetPickAmount())
        {
        case 0:
            var seq = LeanTween.sequence();
            seq.append(LeanTween.scaleY(gameObject, 0.0f, 0.1f));
            seq.append(() => {
                GetComponentInChildren <TextMeshPro>().text = "flipped country eraser";
            });
            seq.append(LeanTween.scaleY(gameObject, originalScale, 0.1f));
            GetComponent <Rigidbody2D>().AddForce(new Vector2(0.0f, 2000.0f));
            GetComponent <Rigidbody2D>().AddTorque(5.0f);
            Toolbox.Instance.finalScore = Toolbox.Instance.finalScore + 1.0f;
            break;

        case 1:
            GetComponent <Rigidbody2D>().AddForce(new Vector2(0.0f, 5000.0f));
            GetComponent <Rigidbody2D>().AddTorque(100.0f);
            break;

        case -1:
            GetComponent <Rigidbody2D>().AddForce(new Vector2(0.0f, 750.0f));
            GetComponent <Rigidbody2D>().AddTorque(0.5f);
            break;
        }

        sequence = SEQUENCE.FLIPPED;
        powerBar.SetActive(false);
        Toolbox.Instance.Gc.EndLevel();
    }
Exemple #3
0
    /*
     * Parses TYPEDEF commands (First token, then delegates rest to specific TYPEDEF implementations).
     * Populates typedef table.
     */
    public static TYPEDEF Parse(string code, Dictionary <string, TYPEDEF> typedefTable)
    {
        if (String.IsNullOrEmpty(code))
        {
            throw new ArgumentNullException("code");
        }
        if (null == typedefTable)
        {
            throw new ArgumentNullException("typedefTable");
        }

        string[] tokens = code.Split(new char[] { ' ', '\t' }, StringSplitOptions.RemoveEmptyEntries);

        if (tokens.Length < 3)
        {
            throw new ArgumentException("TYPEDEF statements must consist of at least three tokens (TYPEDEF <NAME> <TYPE>), received: " + code);
        }
        if (tokens[0].ToUpper() != "TYPEDEF")
        {
            throw new ArgumentException("TYPEDEFs must start with keyword TYPEDEF, but received: " + tokens[0]);
        }

        TYPEDEF parsedType = null;
        string  Type       = tokens[2].ToUpper();

        if (Type == "BASIC")
        {
            parsedType = new BASIC(tokens, typedefTable);
        }
        else if (Type == "PRODUCT")
        {
            parsedType = new PRODUCT(tokens, typedefTable);
        }
        else if (Type == "SUM")
        {
            parsedType = new SUM(tokens, typedefTable);
        }
        else if (Type == "SEQUENCE")
        {
            parsedType = new SEQUENCE(tokens, typedefTable);
        }
        else if (Type == "FUNCTION")
        {
            parsedType = new FUNCTION(tokens, typedefTable);
        }
        else if (Type == "SUBTYPE")
        {
            parsedType = new SUBTYPE(tokens, typedefTable);
        }
        else
        {
            throw new SyntacticException("Not a valid TYPEDEF: " + code);
        }

        return(parsedType);
    }
Exemple #4
0
 // 点滅
 void Blink()
 {
     Observable.FromCoroutine(BlinkCoroutine)
     .DelayFrame(10)
     .Where(_ => _sequence == SEQUENCE.START)            // スキップ時の遅延実行防止
     .Subscribe(_ =>
     {
         _sequence = SEQUENCE.LIGHTED;
     });
 }
Exemple #5
0
        // プレイヤーとゴールを出現させる
        void SetGame()
        {
            // スキップボタンを削除
            _isSkiped = true;
            Destroy(_skipButton.gameObject);

            // オブジェクトの影設定
            StageManager.Instance.SetObjectShadowMode();

            Sequence seq = DOTween.Sequence()
                           .OnStart(() =>
            {
                // プレイヤーの透明度を0にする
                Color playerColor = _player.GetComponent <SpriteRenderer>().material.color;
                playerColor.a     = 0f;
                _player.GetComponent <SpriteRenderer>().material.color = playerColor;

                // クリアガードを非表示にする
                _clear.transform.Find("ClearGuard").gameObject.SetActive(false);
            })
                           .Append(_clear.transform.DOScale(Vector3.one, 1f))
                           .AppendCallback(() =>
            {
                // プレイヤーの透明度を最大にする
                DOTween.ToAlpha(
                    () => _player.GetComponent <SpriteRenderer>().material.color,
                    color => _player.GetComponent <SpriteRenderer>().material.color = color,
                    1f,
                    1f
                    );
            })
                           .Join(_player.DOScale(Vector3.one, 1f))
                           .AppendCallback(() =>
            {
                StageManager.Instance.IsPlay = true;
            })
                           .Append(_clear.transform.DOScale(Vector3.zero, 1f))
                           .AppendCallback(() =>
            {
                _clear.transform.position = _goalPos;
                _clear.transform.Find("ClearGuard").gameObject.SetActive(true);
            })
                           .Join(_clear.transform.DOScale(Vector3.one, 1f))
                           .AppendCallback(() =>
            {
                _clear.transform.GetComponentInChildren <BoxCollider>().isTrigger = true;
                _sequence = SEQUENCE.CORRECTED;
            })
                           .OnComplete(() => _lightSpot.GetComponent <LightSpot>().IsStart = true);


            seq.Play();
        }
Exemple #6
0
        // カメラ移動
        void SetCamera()
        {
            // オブジェクトの正面に寄ってからゲーム画面の正面に寄る
            Sequence seq = DOTween.Sequence()
                           .OnStart(() => { })
                           .Append(Camera.main.transform.DOLocalRotate(Vector3.zero, 2f))
                           .Join(Camera.main.transform.DOMove(new Vector3(_light.transform.position.x, _light.transform.position.y, _light.transform.position.z - 9f), 2f).SetEase(Ease.InSine))
                           .Append(Camera.main.transform.DOMove(ModeChanger.Instance.GetGameModeCameraPos, 2f))
                           .AppendCallback(() => _sequence = SEQUENCE.CAMERA_SETTED);

            seq.Play();
        }
    void OnMouseDown()
    {
        switch (sequence)
        {
        case SEQUENCE.START:
            sequence = SEQUENCE.PICK_POWER;
            powerBar.SetActive(true);
            break;

        case SEQUENCE.PICK_POWER:
            ShootEraser();
            break;

        case SEQUENCE.FLIPPED:
            break;
        }
    }
Exemple #8
0
        // スタート演出スキップ
        public void Skip()
        {
            if (_isSkiped)
            {
                return;
            }

            // SEを鳴らす
            AudioManager.Instance.PlaySE(AUDIO.SE_BUTTON);

            // アニメーション中であればアニメーションをやめる
            DOTween.KillAll(true);

            // スキップボタンを削除
            Destroy(_skipButton.gameObject);

            // オブジェクトの影設定
            StageManager.Instance.SetObjectShadowMode();

            // ライト点灯
            _light.gameObject.SetActive(true);

            // 各オブジェクト、プレイヤーの初期化
            _player.localScale          = Vector3.one;
            _clear.transform.localScale = Vector3.one;
            _clear.transform.position   = _goalPos;
            _clear.transform.GetComponentInChildren <BoxCollider>().isTrigger = true;

            // ゲームモード用にカメラを合わせる
            Camera.main.transform.position      = ModeChanger.Instance.GetGameModeCameraPos;
            Camera.main.transform.localRotation = Quaternion.identity;

            // ゴールオブジェクトのアニメーションスタート
            _lightSpot.GetComponent <LightSpot>().IsStart = true;

            // シーケンス更新
            StageManager.Instance.IsPlay = true;
            _sequence = SEQUENCE.CORRECTED;

            _isSkiped = true;
        }
Exemple #9
0
 protected override void Visit_SEQUENCE(SEQUENCE node)
 {
     /* MOVE CODE HERE */
 }
		/// <summary>
		/// This is advanced interface - this is what I would like...
		/// </summary>
		/// <param name="asnseq"></param>
		/// <param name="num"></param>
		/// <param name="tip"></param>
		public static void Make(SEQUENCE asnseq, int num, ExperimentalType tip)
		{
			asnseq.TypeInfos[num] = ComponentTypeInfo.Make(tip);
		}
Exemple #11
0
 public TareaDeCumplimientoDeEntrega()
 {
     Text = SEQUENCE.ToString();
 }
Exemple #12
0
 protected virtual void Visit_SEQUENCE(SEQUENCE node)
 {
 }