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)); }
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)); } }
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); }
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); }