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

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

  [复制链接]
查看: 510|回复: 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 编辑
) S, r: K3 J4 H: Y: Y+ W! u: ?. ?% f: |2 \6 f, e5 m
本游戏使用是高度为8像素的英文字库。. u( m- A2 u# K' b! W0 U

% s$ u6 Q6 u9 C需要修改的点如下6 s, v* q9 F6 j) P2 U  G
《1》将显示函数中按照单字节移动的指针,变成支持双字节。
2 K1 R% t* U2 ]( d4 z《2》在对话画面中,有时候需要显示4个对话选择项,4个选择项几乎是紧贴着的。. N: M' e/ z* a
     中文字库应该会选用12像素高度的字库,因此4个对话选择项显示的y坐标要做相应的改动。
" v1 ^6 p- @; i
4 }4 ^7 u" H# h5 d对话显示函数. [* O8 B7 B$ u% R9 Z# z' C% q
此显示函数,先用8次1像素位移的方法,画上字符串的阴影,最后再画上字符全本身。这个显示方法,和断剑1,2 非常类似。
$ T6 A) J7 t  Z- S: @
  1. void Display::drawText(uint16 x, uint16 y, uint8 color, const char *text, bool outlined) {
    ; l' d4 o( Y5 n& P: m/ D7 u
  2.         static const int dx[] = { -1, 0, 1, 1, 1, 0, -1, -1 };
    6 \; x  e, Y# h* F# `) a
  3.         static const int dy[] = { -1, -1, -1, 0, 1, 1, 1, 0 };: k  q$ M# }; @' w* C
  4.         const uint8 *str = (const uint8 *)text;
    4 V3 [! {) l# I& `" w. \8 Y
  5.         uint16 xs = x;
    1 v+ G$ M! w5 }8 S
  6.         while (*str && x < SCREEN_W) {
    ! K7 D6 p% {0 [1 A
  7.                 const uint8 ch = *str++;
    9 Q6 h. |8 N: `" ~/ t
  8.                 const uint8 *ftch = _font + ch * 8;
    ( ?" ~9 C: x3 K. G4 M
  9.                 if (outlined) {/ r. J- z: U6 i" n
  10.                         for (int i = 0; i < 8; ++i) {2 |/ J: T6 r1 @: @
  11.                                 drawChar(x + dx[i], y + dy[i], getInkColor(INK_OUTLINED_TEXT), ftch);6 d4 G( v) y0 `4 n
  12.                         }) z5 w" i8 h0 p! Y; O
  13.                 }0 _  o8 k+ i' z# c% a, D
  14.                 drawChar(x, y, color, ftch);0 D7 j7 k4 T' _$ d3 Q3 I
  15.                 x += _charWidth[ch];4 d: \1 l) W3 l' Y
  16.         }. }5 M% n: B, \# x8 Y
  17.         setDirtyBlock(xs - 1, y - 1, x - xs + 2, 8 + 2);/ y1 ?0 z; i& ]1 i! O6 @& _
  18. }
复制代码
' R6 v# o& F; X! p

; l" _) w$ i. r+ t* y" ]单字符显示函数
, ^# G2 R# F! S
  1. void Display::drawChar(uint16 x, uint16 y, uint8 color, const uint8 *chr) {; M* c' ~) L' A/ q
  2.         uint8 *dstBuf = _screenBuf + SCREEN_W * y + x;% M# I- Y7 d& r5 _
  3.         for (int j = 0; j < 8; ++j) {" G) f: m6 B4 X) e+ f2 R# l, I# R, d
  4.                 uint8 *p = dstBuf;
    % m, R2 ]$ ~7 `" {( y+ M
  5.                 uint8 c = *chr++;
    7 \8 Z. j2 D) n9 q5 ?
  6.                 if (c != 0) {' s0 x0 q& L) ~8 W7 W
  7.                         for (int i = 0; i < 8; ++i) {
    $ W+ {, Z4 a: d7 \+ Y
  8.                                 if (c & 0x80) {
    $ N# V' Y$ {- ]+ R
  9.                                         *p = color;
    - ^* g" c8 |. N; d' z; s1 c
  10.                                 }8 [: Q' z2 o4 G! L' Y0 u
  11.                                 ++p;: \2 g# H7 g+ K3 ?
  12.                                 c <<= 1;
    9 ]3 B( P. k4 d3 s% o( j7 \
  13.                         }
    % {4 M8 v' B+ T' |& O
  14.                 }( `/ v7 P+ {. S6 c; c5 D2 c
  15.                 dstBuf += SCREEN_W;
    # U4 n/ W5 x! V/ P
  16.         }
    0 [3 l7 R; b! ?1 r% y1 I
  17. }
复制代码

+ h: ?% L! T1 A7 u. I, S" h% p9 T( k* M2 ]9 {' A

* c4 q0 F2 n/ C4 t" G1 H6 l  k1 y% A1 e* z, f6 D
6 `- F; g0 c& r& g1 \" E/ h! p  v  k4 [
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 很美好很美好1 很差劲很差劲
回复

使用道具 举报

高级模式
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日,是全球华人共同的冒险解谜类游戏家园。我们致力于提供各类冒险游戏资讯供大家学习交流。本站所有资源均不用于商业用途。

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