设为首页收藏本站官方微博

其他 【Scummvm汉化 #2】Flight of the Amazon Queen 亚马逊女王的航班 #1 字库篇

[复制链接]
查看: 288|回复: 0
打印 上一主题 下一主题

[其他] 【Scummvm汉化 #2】Flight of the Amazon Queen 亚马逊女王的航班 #1 字库篇

跳转到指定楼层
楼主
发表于 2023-8-12 12:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

【Scummvm汉化 #2】Flight of the Amazon Queen 亚马逊女王的航班 #1 字库篇

本帖最后由 shane007 于 2023-8-12 12:21 编辑
5 k+ E& {- k! A
$ [7 g6 {# c$ q4 J! P# E本游戏使用是高度为8像素的英文字库。0 M+ R# F  g( K: `) m' Q
! k- \5 C) L. k
需要修改的点如下
# Y2 F7 G$ S+ P+ E/ }2 p《1》将显示函数中按照单字节移动的指针,变成支持双字节。
; u0 V9 g  B. |7 B《2》在对话画面中,有时候需要显示4个对话选择项,4个选择项几乎是紧贴着的。2 e2 a- o% z* T( d6 a1 P( n: v1 ~
     中文字库应该会选用12像素高度的字库,因此4个对话选择项显示的y坐标要做相应的改动。
: O8 }! S, P8 e9 o( l1 }" q+ j
  [( B  L7 e/ O7 m8 [对话显示函数
2 |  B# X4 a* @此显示函数,先用8次1像素位移的方法,画上字符串的阴影,最后再画上字符全本身。这个显示方法,和断剑1,2 非常类似。' ~( T9 |  n" d  Q; {
  1. void Display::drawText(uint16 x, uint16 y, uint8 color, const char *text, bool outlined) {5 L+ `& j: @' H1 A- t' b
  2.         static const int dx[] = { -1, 0, 1, 1, 1, 0, -1, -1 };( w5 J6 n# V* t! d5 }: ~+ b7 i  f/ W
  3.         static const int dy[] = { -1, -1, -1, 0, 1, 1, 1, 0 };
    , K$ M& |# O/ {; G8 c  t
  4.         const uint8 *str = (const uint8 *)text;
    - s8 c0 X$ E' k
  5.         uint16 xs = x;
    6 I" h) r, X' L* ~, O7 @- B- Q. c
  6.         while (*str && x < SCREEN_W) {
    % l  J" e3 T; O' K/ K" g: x
  7.                 const uint8 ch = *str++;
    + d7 O" A1 w6 A% j9 \) L
  8.                 const uint8 *ftch = _font + ch * 8;3 h, Y) ?$ C. e- H# @
  9.                 if (outlined) {
    . I  T. _, r& J$ S
  10.                         for (int i = 0; i < 8; ++i) {% f  v( {9 Y! I7 b0 f3 o4 _
  11.                                 drawChar(x + dx[i], y + dy[i], getInkColor(INK_OUTLINED_TEXT), ftch);2 S8 [, ~; O# v  F8 V
  12.                         }
    / I' G0 D8 _5 N' `0 E! ]+ T/ k
  13.                 }
    ; h9 x9 ^0 ?' f. V7 n+ Q: w: A
  14.                 drawChar(x, y, color, ftch);
    3 `+ ]) ]9 G3 ?2 r) B/ M0 m: @
  15.                 x += _charWidth[ch];/ r! C( a0 W' X) \4 M
  16.         }
    ) p/ N8 C# [/ q) z3 k) c
  17.         setDirtyBlock(xs - 1, y - 1, x - xs + 2, 8 + 2);9 S( N# O0 I4 Z! n9 E9 ~
  18. }
复制代码
$ y- j5 ~( P) b- U& |; D+ N+ D
" m2 z+ b- j" v( K" L; r
单字符显示函数
* l+ A6 {& G! m6 m5 n. j, t
  1. void Display::drawChar(uint16 x, uint16 y, uint8 color, const uint8 *chr) {
    2 m" |2 S+ o+ p1 o5 _6 ^6 n) \
  2.         uint8 *dstBuf = _screenBuf + SCREEN_W * y + x;: X0 Y1 l/ X& q8 `8 T+ c/ _
  3.         for (int j = 0; j < 8; ++j) {
    . v0 Y7 e7 p: i$ c& Z
  4.                 uint8 *p = dstBuf;
    / d1 f% C) i$ v6 v2 {
  5.                 uint8 c = *chr++;
    4 t8 ^. G8 K" ?5 s- T
  6.                 if (c != 0) {* A6 z* B7 ^" ?2 B  Z4 @2 y, S
  7.                         for (int i = 0; i < 8; ++i) {6 e" `; D+ b7 f
  8.                                 if (c & 0x80) {
    7 J4 X; x4 |' P/ L
  9.                                         *p = color;- e  Y5 r+ n$ U/ G0 K% w
  10.                                 }- J! u. T9 Y  z( _! H# g
  11.                                 ++p;! t) h: \! D0 a
  12.                                 c <<= 1;
      K. j' A- B$ m& X7 s: M6 x
  13.                         }4 ^1 V# ~' {# Q" O4 U! ~; Z
  14.                 }
    2 `: }/ a: u$ {1 _$ B8 f2 e
  15.                 dstBuf += SCREEN_W;) h% D' b4 L1 s4 g2 T) W
  16.         }# T2 w$ G5 n. w' M1 h: T4 ~) q
  17. }
复制代码
6 i6 M0 ?: l# [8 o) c, t% L. D
' L7 s' h& `5 U" f; X+ F

8 e6 t/ u; z- i8 b4 {1 t: U
% X; {/ b) i: F
1 f; [* N. ~3 D+ U9 }3 G
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 很美好很美好 很差劲很差劲
回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies

本版积分规则

冒险解谜游戏中文网 ChinaAVG

官方微博官方微信号小黑屋 微信玩家群  

(C) ChinaAVG 2004 - 2019 All Right Reserved. Powered by Discuz! X3.2
辽ICP备11008827号 | 桂公网安备 45010702000051号

冒险,与你同在。 冒险解谜游戏中文网ChinaAVG诞生于2004年9月9日,是全球华人共同的冒险解谜类游戏家园。我们致力于提供各类冒险游戏资讯供大家学习交流。本站所有资源均不用于商业用途。

快速回复 返回顶部 返回列表