Esempio n. 1
0
    private Sprite CreateTravelatorSprite(int roomID, int index)
    {
        var srcRect = new Rect((7 + index) * 8, (19 - roomID) * 8, 8, 8);
        var tex     = SpriteUtil.CreateTexture(8, 8);

        TexUtil.Blit(_roomProvider._blocks, tex, srcRect, Vector2.zero);
        return(Sprite.Create(tex, new Rect(0, 0, 8, 8), new Vector2(0, 1), 1));
    }
Esempio n. 2
0
    private void ApplyText(TextData text)
    {
        text.Texture.Clear(Color.clear);

        var topY = 184; // Font image is 192px tall, -8 for the actual row

        for (int i = 0; i < text.Text.Length || i == 31; i++)
        {
            var ord = (text.Text[i] - ' ');
            var x   = 8 * (ord % 32);
            var y   = topY - (text.FontColour * 24) - (8 * (ord / 32));
            TexUtil.Blit(_font, text.Texture, new Rect(x, y, 8, 8), new Vector2(i * 8, 0));
        }
    }
Esempio n. 3
0
    private void AddCrumbleBlock(object sender, PositionalWithSourceEventArgs e)
    {
        var tex = SpriteUtil.CreateTexture(8, 8);

        TexUtil.Blit(_roomProvider._blocks, tex, new Rect(e.SrcX, e.SrcY, 8, 8), Vector2.zero);

        var go = new GameObject("CrumbleBlock");

        go.tag = "Crumble";
        go.transform.SetParent(gameObject.transform);
        go.transform.localPosition = new Vector3(e.X, e.Y);
        var boxCollider = go.AddComponent <BoxCollider2D>();

        boxCollider.size      = new Vector2(8, 8);
        boxCollider.isTrigger = true;
        boxCollider.offset    = new Vector2(4, -4);

        var sr = go.AddComponent <SpriteRenderer>();

        sr.sprite = Sprite.Create(tex, new Rect(0, 0, 8, 8), new Vector2(0, 1), 1);
    }
Esempio n. 4
0
    private void RenderBackground(MMRoom room)
    {
        var spriteRenderer = GetComponent <SpriteRenderer>();
        var texture        = SpriteUtil.CreateTexture(256, 128);

        texture.filterMode = FilterMode.Point;

        var roomBlockOffsetY = (19 - _controller._roomID) * 8;

        for (int y = 0; y < 16; y++)
        {
            for (int x = 0; x < 32; x++)
            {
                var block = room.blocks[(y * 32) + x];
                if (Array.IndexOf(IGNORE_BLOCKS, block) > -1)
                {
                    // If it's a travelator or a crumble block
                    // we don't want to show it. Those are handled separately.
                    if (block == CRUMBLE_BLOCK)
                    {
                        AddCrumbleBlock?.Invoke(this, new PositionalWithSourceEventArgs(x * 8, (-y) * 8, 8 * block, roomBlockOffsetY));
                    }
                    block = 0;
                }
                var roomBlockOffsetX = 8 * block;

                var srcRect = new Rect(roomBlockOffsetX, roomBlockOffsetY, 8, 8);
                var pos     = new Vector2(x * 8, (15 - y) * 8);

                if (Array.IndexOf(KILLY_BLOCKS, block) > -1)
                {
                    AddKillBlock?.Invoke(this, new PositionalEventArgs(x * 8, (-y) * 8));
                }

                TexUtil.Blit(_blocks, texture, srcRect, pos);
            }
        }
        spriteRenderer.sprite = Sprite.Create(texture, new Rect(0, 0, 256, 128), new Vector2(0, 1), 1);
    }