Example #1
0
    /// <summary>
    /// Get a grid's value based on the given pattern and coord
    /// </summary>
    /// <param name="refPattern"></param>
    /// <param name="x"></param>
    /// <param name="y"></param>
    /// <returns></returns>
    public int GetGrid(SinglePattern refPattern, int x, int y)
    {
        int yIndex = refPattern.height - y - 1;     // Get the y index for the grid for the given coord
        int index  = x + refPattern.width * yIndex; // Get the index for the coord

        return(refPattern.pattern[index]);
    }
Example #2
0
        public void generate(GameObject scene)
        {
            float target = Random.Range(0, totalPossibility);
            float p      = 0.0f;

            SinglePattern targPattern = null;
            string        patternName = "";

            do
            {
                foreach (KeyValuePair <string, SinglePattern> pair in patterns)
                {
                    p += pair.Value.prob;
                    if (p >= target)
                    {
                        targPattern = pair.Value;
                        patternName = pair.Key;
                        break;
                    }
                }
            } while(lastGenPattern != null && !lastGenPattern.acceptsAsNextPattern(patternName));
            lastGenPattern = targPattern.pattern;
            generate(scene, targPattern.pattern);
            //Debug.Log("Generate " + patternName);
        }
Example #3
0
        /// <summary>Snippet for SinglePatternMethodAsync</summary>
        public async Task SinglePatternMethodRequestObjectAsync()
        {
            // Snippet: SinglePatternMethodAsync(SinglePattern, CallSettings)
            // Additional: SinglePatternMethodAsync(SinglePattern, CancellationToken)
            // Create client
            ResourceNamesClient resourceNamesClient = await ResourceNamesClient.CreateAsync();

            // Initialize request argument(s)
            SinglePattern request = new SinglePattern
            {
                RealNameAsSinglePatternName     = SinglePatternName.FromItem("[ITEM_ID]"),
                RefAsSinglePatternName          = SinglePatternName.FromItem("[ITEM_ID]"),
                RepeatedRefAsSinglePatternNames =
                {
                    SinglePatternName.FromItem("[ITEM_ID]"),
                },
                ValueRefAsSinglePatternName          = SinglePatternName.FromItem("[ITEM_ID]"),
                RepeatedValueRefAsSinglePatternNames =
                {
                    SinglePatternName.FromItem("[ITEM_ID]"),
                },
            };
            // Make the request
            Response response = await resourceNamesClient.SinglePatternMethodAsync(request);

            // End snippet
        }
Example #4
0
    /// <summary>
    /// Update the game's grids base on the given pattern
    /// </summary>
    /// <param name="newPattern"></param>
    /// <param name="currentPattern"></param>
    public IEnumerator UpdateGridsDisplay(SinglePattern newPattern, SinglePattern currentPattern)
    {
        for (int i = 0; i < currentGridDisplays.Count; i++)
        {
            currentGridDisplays[i].GetComponent <Tile>().StateChange(newPattern.pattern[i]);
            //currentGridDisplays[i].GetComponent<Tile>().currState = newPattern.pattern[i];
            //UpdateTile(currentGridDisplays[i], newPattern.pattern[i]);
        }

        yield return(animationWait);

        canPlayerMove = false;
    }
 public static SinglePattern GetInstance()
 {
     if (singlePattern == null)
     {
         lock (Lock)
         {
             if (singlePattern == null)
             {
                 singlePattern = new SinglePattern();
             }
         }
     }
     return singlePattern ;
 }
 /// <summary>Snippet for SinglePatternMethod</summary>
 /// <remarks>
 /// This snippet has been automatically generated for illustrative purposes only.
 /// It may require modifications to work in your environment.
 /// </remarks>
 public void SinglePatternMethodRequestObject()
 {
     // Create client
     ResourceNamesClient resourceNamesClient = ResourceNamesClient.Create();
     // Initialize request argument(s)
     SinglePattern request = new SinglePattern
     {
         RealNameAsSinglePatternName     = SinglePatternName.FromItem("[ITEM_ID]"),
         RefAsSinglePatternName          = SinglePatternName.FromItem("[ITEM_ID]"),
         RepeatedRefAsSinglePatternNames =
         {
             SinglePatternName.FromItem("[ITEM_ID]"),
         },
         ValueRefAsSinglePatternName          = SinglePatternName.FromItem("[ITEM_ID]"),
         RepeatedValueRefAsSinglePatternNames =
         {
             SinglePatternName.FromItem("[ITEM_ID]"),
         },
     };
     // Make the request
     Response response = resourceNamesClient.SinglePatternMethod(request);
 }
Example #7
0
    public void CreateLevelPatternStorages()
    {
        // Valid check
        if (width <= 0 || height <= 0)
        {
            print("Invalid level size");
            return;
        }

        // Create pattern storages
        for (int y = 0; y < height; y++)
        {
            for (int x = 0; x < width; x++)
            {
                GameObject    newStorage = new GameObject(x + ", " + y);
                SinglePattern newPattern = newStorage.AddComponent <SinglePattern>();
                newPattern.width            = width;
                newPattern.height           = height;
                newStorage.transform.parent = transform;
                patterns.Add(newPattern);
            }
        }
    }
Example #8
0
    /// <summary>
    /// When player moves in a direction
    /// </summary>
    /// <param name="xDir"></param>
    /// <param name="yDir"></param>
    /// <returns></returns>
    public SinglePattern PlayerMoved(int xDir, int yDir)
    {
        // Store last position coord
        if (xDir != 0 || yDir != 0)
        {
            moveHistory.Add(new Vector2(playerXcoord, playerYcoord));
        }

        // Get player new position
        playerXcoord += xDir;
        if (playerXcoord < 0)
        {
            playerXcoord = currentLevel.width - 1;
        }
        if (playerXcoord == currentLevel.width)
        {
            playerXcoord = 0;
        }
        playerYcoord += yDir;
        if (playerYcoord < 0)
        {
            playerYcoord = currentLevel.height - 1;
        }
        if (playerYcoord == currentLevel.height)
        {
            playerYcoord = 0;
        }

        // Proceed result base on the grid color and coord the player moved to
        SinglePattern previousPattern = currentPattern;
        SinglePattern nextPattern     = null;

        // If this is the start move from a new level
        if (xDir == 0 && yDir == 0)
        {
            previousPattern = GetPattern(playerXcoord, playerYcoord);
            nextPattern     = GetPattern(playerXcoord, playerYcoord);
        }
        else
        {
            // Play move sound effect
            AudioManager.instance.PlaySFX(AudioManager.instance.playerMoveSFX);

            switch (GetGrid(currentPattern, playerXcoord, playerYcoord))
            {
            // White grid
            case 0:
                nextPattern = GetPattern(playerXcoord, playerYcoord);
                break;

            // Gray grid
            case 1:
                nextPattern = currentPattern;
                break;
            }
        }

        currentPattern = nextPattern;

        // Play the pattern update animation (can have animation even if the pattern didn't change)
        canPlayerMove = true;
        StartCoroutine(UpdateGridsDisplay(currentPattern, previousPattern));

        return(nextPattern);
    }
Example #9
0
        public Env ExtendValue <T>(Pattern pattern, T argument, Netlist netlist, string source, Style style, int s) where T : Value    // bounded polymorphism :)
        {
            Env env = this;

            if (pattern is SinglePattern)
            {
                SinglePattern parameter = pattern as SinglePattern;
                env = new ValueEnv(parameter.name, parameter.type, argument, netlist, env);
            }
            else if (pattern is ListPattern)
            {
                List <Pattern> subPatterns = (pattern as ListPattern).list.parameters;
                if (!(argument is ListValue <T>))
                {
                    throw new Error("A list pattern is bound to a non-list value: '" + source + "'");
                }
                List <T> subArguments = (argument as ListValue <T>).elements;
                env = env.ExtendValues(subPatterns, subArguments, netlist, source, style, s + 1);
            }
            else if (pattern is HeadConsPattern)
            {
                List <Pattern> headPatterns  = (pattern as HeadConsPattern).list.parameters;
                Pattern        singlePattern = (pattern as HeadConsPattern).single;
                if (!(argument is ListValue <T>))
                {
                    throw new Error("A list pattern is bound to a non-list value: '" + source + "'");
                }
                List <T> subArguments = (argument as ListValue <T>).elements;
                if (headPatterns.Count > subArguments.Count)
                {
                    throw new Error("In a list pattern variables exceed values: '" + source + "'");
                }
                List <T> headArguments = subArguments.Take(headPatterns.Count).ToList();
                List <T> tailArguments = subArguments.Skip(headPatterns.Count).ToList();
                env = env.ExtendValues(headPatterns, headArguments, netlist, source, style, s + 1);
                env = env.ExtendValue(singlePattern, new ListValue <T>(tailArguments), netlist, source, style, s + 1);
            }
            else if (pattern is TailConsPattern)
            {
                Pattern        singlePattern = (pattern as TailConsPattern).single;
                List <Pattern> tailPatterns  = (pattern as TailConsPattern).list.parameters;
                if (!(argument is ListValue <T>))
                {
                    throw new Error("A list pattern is bound to a non-list value: '" + source + "'");
                }
                List <T> subArguments = (argument as ListValue <T>).elements;
                if (tailPatterns.Count > subArguments.Count)
                {
                    throw new Error("In a list pattern variables exceed values: '" + source + "'");
                }
                List <T> headArguments = subArguments.Take(subArguments.Count - tailPatterns.Count).ToList();
                List <T> tailArguments = subArguments.Skip(subArguments.Count - tailPatterns.Count).ToList();
                env = env.ExtendValue(singlePattern, new ListValue <T>(headArguments), netlist, source, style, s + 1);
                env = env.ExtendValues(tailPatterns, tailArguments, netlist, source, style, s + 1);
            }
            else
            {
                throw new Error("Pattern");
            }
            return(env);
        }