Exemplo n.º 1
0
        private void ExtractVariableExports(ModuleData module, ObjectPattern objectPattern)
        {
            for (int i = 0, n = objectPattern.Properties.Count; i < n; i++)
            {
                switch (objectPattern.Properties[i])
                {
                case Property property:
                    switch (property.Value)
                    {
                    case Identifier identifier:
                        module.ExportsRaw.Add(new NamedExportData(identifier.Name));
                        break;

                    case ArrayPattern nestedArrayPattern:
                        ExtractVariableExports(module, nestedArrayPattern);
                        break;

                    case ObjectPattern nestedObjectPattern:
                        ExtractVariableExports(module, nestedObjectPattern);
                        break;
                    }
                    break;

                case RestElement restElement:
                    ExtractVariableExports(module, restElement);
                    break;
                }
            }
        }
        private UstExprs.AnonymousObjectExpression VisitObjectPattern(ObjectPattern objectPattern)
        {
            // TODO: maybe add new UST type ObjectPattern?
            var properties = VisitProperties(objectPattern.Properties);

            return(new UstExprs.AnonymousObjectExpression(properties, GetTextSpan(objectPattern)));
        }
Exemplo n.º 3
0
    private void Update()
    {
        if (isDead)
        {
            return;
        }

        // 回転
        transform.localEulerAngles = new Vector3(0f, 0f, transform.localEulerAngles.z + rotateSpeed * Time.deltaTime);

        foreach (var obj in objects)
        {
            obj.Proc(transform.position, rotateSpeed * Time.deltaTime);
            if (obj.Destoryed)
            {
                Destroy(obj.gameObject);
            }
        }
        objects.RemoveAll(p => p.Destoryed);

        if (isTitle)
        {
            return;
        }

        rotateSpeed      += rotateSpeedAccel * Time.deltaTime;
        staticRotateSpeed = rotateSpeed;
        if (trail != null)
        {
            trail.SetOmega(rotateSpeed);
        }

        // オブジェクトを生成
        rotateSum     += rotateSpeed * Time.deltaTime;
        score         += rotateSpeed * Time.deltaTime;
        scoreText.text = score.ToString("F2") + "m";

        highScore          = Mathf.Max(highScore, score);
        highScoreText.text = highScore.ToString("F2") + "m";

        if (rotateSum >= spawnIntervalDegree)
        {
            rotateSum -= spawnIntervalDegree;

            int id = curPattern.Next();
            while (id == -1)
            {
                // 終端に到達したので新しいパターンを使う
                curPattern = patterns[Random.Range(0, patterns.Count)];
                curPattern.Reset();
                id = curPattern.Next();
            }
            if (id >= 0)
            {
                var obj = (BaseStageObject)Instantiate(objectPrefabs[id]);
                obj.Init(new Vector2(270.0f, 0.0f), transform.position);
                objects.Add(obj);
            }
        }
    }
Exemplo n.º 4
0
    private void Start()
    {
        staticRotateSpeed = rotateSpeed;
        if (trail != null)
        {
            trail.SetOmega(rotateSpeed);
        }

        foreach (var obj in objects)
        {
            obj.Init(new Vector2(120f, 7.0f), transform.position);
        }

        curPattern = patterns[Random.Range(0, patterns.Count)];
        curPattern.Reset();
        highScore = PlayerPrefs.GetFloat("highscore", 0);
    }
Exemplo n.º 5
0
 public virtual void VisitObjectPattern(ObjectPattern objectPattern)
 {
 }
Exemplo n.º 6
0
 protected virtual void VisitObjectPattern(ObjectPattern objectPattern)
 {
 }
Exemplo n.º 7
0
 protected override void VisitObjectPattern(ObjectPattern objectPattern)
 {
     using (StartNodeObject(objectPattern))
         Member("properties", objectPattern.Properties);
 }
Exemplo n.º 8
0
 protected internal override void VisitObjectPattern(ObjectPattern objectPattern)
 {
     VisitingObjectPattern?.Invoke(this, objectPattern);
     base.VisitObjectPattern(objectPattern);
     VisitedObjectPattern?.Invoke(this, objectPattern);
 }
 protected override void VisitObjectPattern(ObjectPattern objectPattern)
 {
 }
Exemplo n.º 10
0
        private static void HandleObjectPattern(Engine engine, ObjectPattern pattern, JsValue argument, LexicalEnvironment environment, bool checkReference)
        {
            var processedProperties = pattern.Properties.Count > 0 && pattern.Properties[pattern.Properties.Count - 1] is RestElement
                ? new HashSet <JsValue>()
                : null;

            var source = TypeConverter.ToObject(engine, argument);

            for (var i = 0; i < pattern.Properties.Count; i++)
            {
                if (pattern.Properties[i] is Property p)
                {
                    JsValue sourceKey;
                    var     identifier = p.Key as Identifier;
                    if (identifier == null || p.Computed)
                    {
                        var keyExpression = Build(engine, p.Key);
                        sourceKey = TypeConverter.ToPropertyKey(keyExpression.GetValue());
                    }
                    else
                    {
                        sourceKey = identifier.Name;
                    }

                    processedProperties?.Add(sourceKey.ToString());
                    if (p.Value is AssignmentPattern assignmentPattern)
                    {
                        source.TryGetValue(sourceKey, out var value);
                        if (value.IsUndefined())
                        {
                            var jintExpression = Build(engine, assignmentPattern.Right);
                            value = jintExpression.GetValue();
                        }

                        if (assignmentPattern.Left is BindingPattern bp)
                        {
                            ProcessPatterns(engine, bp, value, environment);
                            continue;
                        }

                        var target = assignmentPattern.Left as Identifier ?? identifier;

                        if (assignmentPattern.Right.IsFunctionWithName())
                        {
                            ((FunctionInstance)value).SetFunctionName(target.Name);
                        }

                        AssignToIdentifier(engine, target.Name, value, environment);
                    }
                    else if (p.Value is BindingPattern bindingPattern)
                    {
                        source.TryGetValue(sourceKey, out var value);
                        ProcessPatterns(engine, bindingPattern, value, environment);
                    }
                    else if (p.Value is MemberExpression memberExpression)
                    {
                        var reference = GetReferenceFromMember(engine, memberExpression);
                        source.TryGetValue(sourceKey, out var value);
                        AssignToReference(engine, reference, value, environment);
                    }
                    else
                    {
                        var identifierReference = p.Value as Identifier;
                        var target = identifierReference ?? identifier;
                        source.TryGetValue(sourceKey, out var v);
                        AssignToIdentifier(engine, target.Name, v, environment, checkReference);
                    }
                }
                else
                {
                    var restElement = (RestElement)pattern.Properties[i];
                    if (restElement.Argument is Identifier leftIdentifier)
                    {
                        var count = Math.Max(0, source.Properties?.Count ?? 0) - processedProperties.Count;
                        var rest  = engine.Object.Construct(count);
                        source.CopyDataProperties(rest, processedProperties);
                        AssignToIdentifier(engine, leftIdentifier.Name, rest, environment);
                    }
                    else if (restElement.Argument is BindingPattern bp)
                    {
                        ProcessPatterns(engine, bp, argument, environment);
                    }
                    else if (restElement.Argument is MemberExpression memberExpression)
                    {
                        var left = GetReferenceFromMember(engine, memberExpression);
                        var rest = engine.Object.Construct(0);
                        source.CopyDataProperties(rest, processedProperties);
                        AssignToReference(engine, left, rest, environment);
                    }
                    else
                    {
                        ExceptionHelper.ThrowArgumentException("cannot handle parameter type " + restElement.Argument);
                    }
                }
            }
        }