示例#1
0
sint32 font_sprite_get_codepoint_sprite(sint32 fontSpriteBase, sint32 codepoint)
{
    return SPR_CHAR_START + (IMAGE_TYPE_REMAP | (fontSpriteBase + font_sprite_get_codepoint_offset(codepoint)));
}
示例#2
0
sint32 font_sprite_get_codepoint_width(sint32 fontSpriteBase, sint32 codepoint)
{
    return _spriteFontCharacterWidths[fontSpriteBase + font_sprite_get_codepoint_offset(codepoint)];
}
示例#3
0
void scrolling_text_initialise_bitmaps()
{
	uint8 drawingSurface[64];
	rct_drawpixelinfo dpi = {
		.bits = (uint8 *)&drawingSurface,
		.x = 0,
		.y = 0,
		.width = 8,
		.height = 8,
		.pitch = 0,
		.zoom_level = 0
	};


	for (sint32 i = 0; i < 224; i++) {
		memset(drawingSurface, 0, sizeof(drawingSurface));
		gfx_draw_sprite_software(&dpi, SPR_CHAR_START + FONT_SPRITE_BASE_TINY + i, -1, 0, 0);

		for (sint32 x = 0; x < 8; x++) {
			uint8 val = 0;
			for (sint32 y = 0; y < 8; y++) {
				val >>= 1;
				if (dpi.bits[x + y * 8] == 1) {
					val |= 0x80;
				}
			}
			_characterBitmaps[i * 8 + x] = val;
		}
	}

	for (sint32 i = 0; i < MAX_SCROLLING_TEXT_ENTRIES; i++) {
		rct_g1_element *g1 = &g1Elements[SPR_SCROLLING_TEXT_START + i];
		g1->offset = _drawScrollTextList[i].bitmap;
		g1->width = 64;
		g1->height = 40;
		g1->offset[0] = 0xFF;
		g1->offset[1] = 0xFF;
		g1->offset[14] = 0;
		g1->offset[15] = 0;
		g1->offset[16] = 0;
		g1->offset[17] = 0;
	}
}

static uint8 *font_sprite_get_codepoint_bitmap(sint32 codepoint)
{
	return &_characterBitmaps[font_sprite_get_codepoint_offset(codepoint) * 8];
}


static sint32 scrolling_text_get_matching_or_oldest(rct_string_id stringId, uint16 scroll, uint16 scrollingMode)
{
	uint32 oldestId = 0xFFFFFFFF;
	sint32 scrollIndex = -1;
	for (sint32 i = 0; i < MAX_SCROLLING_TEXT_ENTRIES; i++) {
		rct_draw_scroll_text *scrollText = &_drawScrollTextList[i];
		if (oldestId >= scrollText->id) {
			oldestId = scrollText->id;
			scrollIndex = i;
		}

		// If exact match return the matching index
		uint32 stringArgs0, stringArgs1;
		memcpy(&stringArgs0, gCommonFormatArgs + 0, sizeof(uint32));
		memcpy(&stringArgs1, gCommonFormatArgs + 4, sizeof(uint32));
		if (
			scrollText->string_id == stringId &&
			scrollText->string_args_0 == stringArgs0 &&
			scrollText->string_args_1 == stringArgs1 &&
			scrollText->position == scroll &&
			scrollText->mode == scrollingMode
		) {
			scrollText->id = _drawSCrollNextIndex;
			return i + SPR_SCROLLING_TEXT_START;
		}
	}
	return scrollIndex;
}
示例#4
0
文件: font.c 项目: Rodbourn/OpenRCT2
int font_sprite_get_codepoint_sprite(int fontSpriteBase, int codepoint)
{
    return SPR_CHAR_START + ((IMAGE_TYPE_USE_PALETTE << 28) | (fontSpriteBase + font_sprite_get_codepoint_offset(codepoint)));
}
示例#5
0
void scrolling_text_initialise_bitmaps()
{
    uint8 drawingSurface[64];
    rct_drawpixelinfo dpi = {
        .bits = (uint8 *)&drawingSurface,
        .x = 0,
        .y = 0,
        .width = 8,
        .height = 8,
        .pitch = 0,
        .zoom_level = 0
    };


    for (int i = 0; i < 224; i++) {
        memset(drawingSurface, 0, sizeof(drawingSurface));
        gfx_draw_sprite(&dpi, i + 0x10D5, -1, 0, 0);

        for (int x = 0; x < 8; x++) {
            uint8 val = 0;
            for (int y = 0; y < 8; y++) {
                val >>= 1;
                if (dpi.bits[x + y * 8] == 1) {
                    val |= 0x80;
                }
            }
            gCharacterBitmaps[i * 8 + x] = val;
        }

    }
}

static uint8 *font_sprite_get_codepoint_bitmap(int codepoint)
{
    return &gCharacterBitmaps[font_sprite_get_codepoint_offset(codepoint) * 8];
}


static int scrolling_text_get_matching_or_oldest(rct_string_id stringId, uint16 scroll, uint16 scrollingMode)
{
    uint32 oldestId = 0xFFFFFFFF;
    int scrollIndex = -1;
    rct_draw_scroll_text* oldestScroll = NULL;
    for (int i = 0; i < 32; i++) {
        rct_draw_scroll_text *scrollText = &gDrawScrollTextList[i];
        if (oldestId >= scrollText->id) {
            oldestId = scrollText->id;
            scrollIndex = i;
            oldestScroll = scrollText;
        }

        // If exact match return the matching index
        if (
            scrollText->string_id == stringId &&
            scrollText->string_args_0 == RCT2_GLOBAL(RCT2_ADDRESS_COMMON_FORMAT_ARGS, uint32) &&
            scrollText->string_args_1 == RCT2_GLOBAL(RCT2_ADDRESS_COMMON_FORMAT_ARGS + 4, uint32) &&
            scrollText->position == scroll &&
            scrollText->mode == scrollingMode
        ) {
            scrollText->id = RCT2_GLOBAL(RCT2_ADDRESS_DRAW_SCROLL_NEXT_ID, uint32);
            return i + 0x606;
        }
    }
    return scrollIndex;
}