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

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

  [复制链接]
查看: 509|回复: 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 编辑
9 |- W+ K6 L6 p# h3 v& G. F  w
# Q' L* C% U; [" ]本游戏使用是高度为8像素的英文字库。
& f/ ?% O, Q; u
: J& q1 K" E% i6 j  f需要修改的点如下
6 d& t0 ]7 R9 B- c《1》将显示函数中按照单字节移动的指针,变成支持双字节。/ `. t6 `& a7 ~5 V5 ~9 ~
《2》在对话画面中,有时候需要显示4个对话选择项,4个选择项几乎是紧贴着的。
9 @; q5 [, b( L, Q     中文字库应该会选用12像素高度的字库,因此4个对话选择项显示的y坐标要做相应的改动。) w- j. J, P  d9 A0 Z5 d

! \5 M" R3 q' ]  w对话显示函数
% u( s( K8 @7 M2 F( n此显示函数,先用8次1像素位移的方法,画上字符串的阴影,最后再画上字符全本身。这个显示方法,和断剑1,2 非常类似。
+ D" r" t! W1 w" T9 O8 {9 W. T( s$ Q
  1. void Display::drawText(uint16 x, uint16 y, uint8 color, const char *text, bool outlined) {. R0 \+ G0 g$ J( x7 d5 B# H# `7 r
  2.         static const int dx[] = { -1, 0, 1, 1, 1, 0, -1, -1 };
    ' }1 z; U5 [, O# [
  3.         static const int dy[] = { -1, -1, -1, 0, 1, 1, 1, 0 };
    4 K$ j; f- n& {# J4 P
  4.         const uint8 *str = (const uint8 *)text;- T$ w# k$ Y3 l0 C- g$ @' O  I6 k
  5.         uint16 xs = x;
    0 P8 w& O0 \* n4 Q
  6.         while (*str && x < SCREEN_W) {
    , a3 L6 ^. ^/ c( }; ]  o( Z0 `
  7.                 const uint8 ch = *str++;1 P0 T/ p4 h0 V
  8.                 const uint8 *ftch = _font + ch * 8;
    ' v- o' {- A: y5 I& M
  9.                 if (outlined) {& N) R; ~6 z2 z/ p! P
  10.                         for (int i = 0; i < 8; ++i) {
    8 o2 Z$ @+ \" N- N. o
  11.                                 drawChar(x + dx[i], y + dy[i], getInkColor(INK_OUTLINED_TEXT), ftch);- H" g3 D2 q- E; v% W
  12.                         }
    ) G, n" f, B0 g2 b
  13.                 }0 V* o1 }! l: v6 o; t. t' `
  14.                 drawChar(x, y, color, ftch);3 S# \, t' o& n+ T, g7 S! a
  15.                 x += _charWidth[ch];
    ; ]/ n  _) s0 }6 h) t
  16.         }& ^. A$ B9 J* v6 e8 T- f& ~* ^! y) |
  17.         setDirtyBlock(xs - 1, y - 1, x - xs + 2, 8 + 2);
    " x8 ^2 W4 y& _
  18. }
复制代码
3 O& O9 A: Y$ c
* x2 q: x. ?) j( R0 \! i  m
单字符显示函数
: }2 U& N8 \. Q5 e
  1. void Display::drawChar(uint16 x, uint16 y, uint8 color, const uint8 *chr) {
    0 h, G+ G. z% a) v6 Q
  2.         uint8 *dstBuf = _screenBuf + SCREEN_W * y + x;: e6 n. i) k& D$ R
  3.         for (int j = 0; j < 8; ++j) {- S1 i! D. m$ U" y/ [# @9 u
  4.                 uint8 *p = dstBuf;
    ' t  \: L- Q' A& q6 ?0 T
  5.                 uint8 c = *chr++;
    1 }9 i) P, X2 i+ C' `0 m
  6.                 if (c != 0) {4 u% V- j3 i/ t+ m
  7.                         for (int i = 0; i < 8; ++i) {
    , e! c) @4 K+ I- {( R2 e- V
  8.                                 if (c & 0x80) {
    " a- a0 D3 [" P# u3 U/ s4 t
  9.                                         *p = color;, A& k: L' A8 f0 @: x
  10.                                 }
    % ~/ z6 `+ V0 H5 S! p0 M5 l2 d
  11.                                 ++p;
    : B; `; E1 Q/ z1 {1 W
  12.                                 c <<= 1;
    " m1 E! K( o& m
  13.                         }
    / N1 F7 c- S0 `) a8 o! l6 [# r  L
  14.                 }
    . _5 y# K6 l  J3 I/ R1 S7 l' y
  15.                 dstBuf += SCREEN_W;
    7 q7 f# U- f8 ]/ z2 p
  16.         }
    ! k9 A7 e& {* I% ^6 I' D
  17. }
复制代码
  N! s+ l& ]/ N" i
# ~. q6 |$ }  ]* H1 W" ?
+ _; U% E6 V5 O

) \! e0 ]3 j- B" w5 C! G" b7 g8 J' P2 [" p3 s. X( Q
分享到:  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日,是全球华人共同的冒险解谜类游戏家园。我们致力于提供各类冒险游戏资讯供大家学习交流。本站所有资源均不用于商业用途。

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