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

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

[复制链接]
查看: 414|回复: 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 编辑
2 }! c: E9 W' L- t, J3 S% E/ b0 l! w6 E! M1 M+ z
本游戏使用是高度为8像素的英文字库。8 @1 e5 U* d8 e* V. A5 G$ s$ E
) L2 Y' C% ^+ K* }  E. X" y
需要修改的点如下
5 s$ s$ D* K! A" s4 i《1》将显示函数中按照单字节移动的指针,变成支持双字节。
5 m! ^% I. d( l$ {《2》在对话画面中,有时候需要显示4个对话选择项,4个选择项几乎是紧贴着的。, U) {& v& b( p/ Z8 Y4 H
     中文字库应该会选用12像素高度的字库,因此4个对话选择项显示的y坐标要做相应的改动。
& G6 R- x$ k6 c, a: G6 ?7 Z9 o/ `' U5 v! v
对话显示函数' L* F; |. r+ o( M
此显示函数,先用8次1像素位移的方法,画上字符串的阴影,最后再画上字符全本身。这个显示方法,和断剑1,2 非常类似。
5 j8 @# D, c3 g* n
  1. void Display::drawText(uint16 x, uint16 y, uint8 color, const char *text, bool outlined) {! f  T/ b% Q: M6 f: e8 p
  2.         static const int dx[] = { -1, 0, 1, 1, 1, 0, -1, -1 };. U% y% U: S3 B# ^  O
  3.         static const int dy[] = { -1, -1, -1, 0, 1, 1, 1, 0 };- l% n& W4 L, Z! z8 |: ^1 ], r+ U
  4.         const uint8 *str = (const uint8 *)text;
    , j% v  ~  }5 B+ |2 {
  5.         uint16 xs = x;9 X* A% b3 w6 b, _1 ^4 q% G
  6.         while (*str && x < SCREEN_W) {( e6 d1 X! W2 u) x3 ^- G" b$ O
  7.                 const uint8 ch = *str++;
    ) u3 \" N. v3 D7 `
  8.                 const uint8 *ftch = _font + ch * 8;2 d- n9 }- {% q, f
  9.                 if (outlined) {
    - }4 Q' r. k* N2 f3 H
  10.                         for (int i = 0; i < 8; ++i) {/ B% B, T- ~: J8 l8 q  K) u, t
  11.                                 drawChar(x + dx[i], y + dy[i], getInkColor(INK_OUTLINED_TEXT), ftch);" H' O* j2 A5 B9 g
  12.                         }
    ' m2 v) S0 B- w* ~
  13.                 }( p( l' J, H$ n( N& H1 p( c9 |
  14.                 drawChar(x, y, color, ftch);1 C* R$ N" j8 H( g, c
  15.                 x += _charWidth[ch];
    % p" `" {% v4 k4 w& M: F
  16.         }
    ( K; e; k$ m$ e$ ]
  17.         setDirtyBlock(xs - 1, y - 1, x - xs + 2, 8 + 2);2 ]( v4 q+ U6 E# _% s7 \/ Y
  18. }
复制代码
7 e3 s$ Y! U; D

! w3 m- }5 H: Z) m4 X0 w) R单字符显示函数" V! M$ o+ N; i! W8 `' @
  1. void Display::drawChar(uint16 x, uint16 y, uint8 color, const uint8 *chr) {
    . S0 v) _' r6 W. Q" _- m% k5 {
  2.         uint8 *dstBuf = _screenBuf + SCREEN_W * y + x;
    ; {" s! M9 y+ v" y0 _4 H( x
  3.         for (int j = 0; j < 8; ++j) {6 ]/ T+ z9 v1 U2 p/ l: E) D# {1 \
  4.                 uint8 *p = dstBuf;; l0 u! W* T1 T6 t  B
  5.                 uint8 c = *chr++;
    ; e/ \- }6 R) Y- ]
  6.                 if (c != 0) {
    ) c6 w- A! B: g
  7.                         for (int i = 0; i < 8; ++i) {, e0 _) H7 S$ b( I/ ]
  8.                                 if (c & 0x80) {
    7 M9 X8 k/ {4 w* K! s3 c
  9.                                         *p = color;
    , u: @* j, i: }/ N0 O! L
  10.                                 }9 h( n* M/ {0 k& R! ^8 B7 x
  11.                                 ++p;
    ) l3 Y6 \* ?' {" y  o5 O
  12.                                 c <<= 1;! ?& c/ M8 l, L# f
  13.                         }  i9 {$ V" F1 g# k" u4 h
  14.                 }
    + a# M; u2 ]5 t
  15.                 dstBuf += SCREEN_W;/ Y: m' Y1 [3 w& b( i' _( L0 Q" Q
  16.         }
    ) |. C: n, _; y  X4 R' ?3 O
  17. }
复制代码
+ C. h) ], Y" z3 X

, W* W& G1 E9 @9 Y
* F3 c2 C. F+ O0 D( B
0 {$ D" `: k9 V7 W3 D  i% ?% ?9 }# i; I% \6 b* x
分享到:  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日,是全球华人共同的冒险解谜类游戏家园。我们致力于提供各类冒险游戏资讯供大家学习交流。本站所有资源均不用于商业用途。

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