首页 > 其他分享 >原始翎风CLIENT8位 (12) playscn的学习

原始翎风CLIENT8位 (12) playscn的学习

时间:2024-05-07 22:47:25浏览次数:20  
标签:CLIENT8 Map MySelf 12 翎风 地图 像素 UNITX 坐标

绘图
关键的数据
地图客户区,以主角的地图坐标为中心左右各9格,上下9,8格
一切以主角为中心进行计算,换算。
Map.m_ClientRect
Left := g_MySelf.m_nRx - 9;
Top := g_MySelf.m_nRy - 9;
Right := g_MySelf.m_nRx + 9;
Bottom := g_MySelf.m_nRy + 8;

 

地图地面绘图
m_MapSurface的像素大小,宽,高
在显示的范围增加4格 800+192+30=1022,455+128=538
m_MapSurface.SetSize(MAPSURFACEWIDTH + UNITX * 4 + 30, MAPSURFACEHEIGHT + UNITY
* 4);

MAPSURFACEWIDTH 800 显示区域宽 实际16.66格
MAPSURFACEHEIGHT 455 显示区域高减去了底台的高度 14.21格

绘制到m_MapSurface
===================================================
贴大地砖 2格一贴
(i mod 2 = 0) and (j mod 2 = 0) 偶数格开始贴,
像素坐标nY := 但是这个是没有在y中间的,是从顶开始贴的?
地图坐标j := (Top - Map.m_nBlockTop - 1) to (Bottom - Map.m_nBlockTop + 1)
换算 g_MySelf.m_nRy -10格 到 g_MySelf.m_nRy + 9 格
以主角为中心格
像素 格
-64 -10
-32 -9*
0 -8
32 -7
256 0
512 8*
544 9


像素坐标nX := - UNITX + AAX + 14; AAX 为16 这样30?人物看起来在格子X中间?
地图坐标i := (Left - Map.m_nBlockLeft - 2) to (Right - Map.m_nBlockLeft + 1)
换算 g_MySelf.m_nRx - 11格,到 g_MySelf.m_nRx + 10格

像素 -18 30 78 510 942 990
格 -11 -10 -9* 0 9* 10
==================================
贴小地砖

像素坐标nY := -UNITY;
地图坐标j := (Top - Map.m_nBlockTop - 1) to (Bottom - Map.m_nBlockTop + 1)
像素 格
-32 -10
0 -9*
288 0
544 8*
576 9

 

像素坐标nX :=- UNITX + AAX + 14 ;
地图坐标i := (Left - Map.m_nBlockLeft - 2) to (Right - Map.m_nBlockLeft + 1)

像素 -18 30 78 510 942 990
格 -11 -10 -9* 0 9* 10

=======================================================

地图地面(地图背景)画到物体表面层
截取地图地面区域的144 64,944 519.左缩进3格,上缩进2格。
这里假设取偏移为0.

m_ObjSurface.SetSize(MAPSURFACEWIDTH - SOFFX * 2, MAPSURFACEHEIGHT);

m_ObjSurface.Draw(0, 0,
Rect(UNITX * 3 + g_MySelf.m_nShiftX,
UNITY * 2 + g_MySelf.m_nShiftY,
UNITX * 3 + g_MySelf.m_nShiftX + MAPSURFACEWIDTH,
UNITY * 2 + g_MySelf.m_nShiftY + MAPSURFACEHEIGHT),
m_MapSurface,
FALSE);

=======================================================
默认的起始像素坐标
为了保证主角在屏幕中间,需要减去其移动中产生的偏移
AAX 为16 ,不知道代表什么
14 不知道代表什么
UNITX地图坐标一格的宽度 48像素
UNITY地图坐标一格的高度 32像素
1个地图坐标表示1格,
1格表示1个地砖贴图。

这里是挖过来的地图背景已经偏移过了,所以要将偏移补偿回去
原来地图背景坐标是从AAX + 14开始,所以得同步加上去


defx := -UNITX * 2 - g_MySelf.m_nShiftX + AAX + 14;
defy := -UNITY * 2 - g_MySelf.m_nShiftY
赋值给全局变量。
m_nDefXX := defx;
m_nDefYY := defy;


开始了,前景的贴图
但实际是当背景的小地砖块
m := defy - UNITY
j := (Map.m_ClientRect.Top - Map.m_nBlockTop) to (Map.m_ClientRect.Bottom
- Map.m_nBlockTop + LONGHEIGHT_IMAGE

开始像素-3格 - g_MySelf.m_nShiftY (对照m_ObjSurface坐标)
换算对照(m_MapSurface)

开始格-9 8+35

n := defx - UNITX * 2
i := (Map.m_ClientRect.Left - Map.m_nBlockLeft - 2) to
(Map.m_ClientRect.Right - Map.m_nBlockLeft + 2)

开始像素 -4格 - g_MySelf.m_nShiftX + AAX + 14
开始格 -11 到 11

 

(m_MapSurface)UNITX * 3 + g_MySelf.m_nShiftX

(m_MapSurface)UNITY * 2 + g_MySelf.m_nShiftY

标签:CLIENT8,Map,MySelf,12,翎风,地图,像素,UNITX,坐标
From: https://www.cnblogs.com/D7mir/p/18178588

相关文章

  • 原始翎风CLIENT8位 (10) tscenc的学习
    IntroScn.pas嗟夫DELPHI输入法相关知识凡是窗口类都有TImeMode这是个集合其中包含有:TImeMode=(imDisable,imClose,imOpen,imDontCare,imSAlpha,imAlpha,imHira,imSKata,imKata,imChinese,imSHanguel,imHanguel);指定imDisable的话IME变得无效。既无法作使......
  • 原始翎风CLIENT8位 (13) actor的学习
    functionGetOffset(appr:integer):integer偏移大于1000退出nrace:=apprdiv10nrace0-90npos:=apprmod10npos0-9这个找的是怪物图片在文件中图片索引偏移量分为很多种,有偏移280,280是一个怪物的一组图片,例如MON1有偏移230,例如MON2有偏移360的,例如MON3appr应该......
  • 原始翎风CLIENT8位 (14) mapunit的学习
    8.MaxInt格式:constMaxInt=High(integer);说明:MaxInt常量代表Integer类型的最大可能值.MaxInt的真正的值会随着Delphi的版本不同而改变,目前它的值是21474836472g?地图好像是分块?40*40个地图坐标分为一个广场块一次读取是当前块的-1X/Y+2合计4*4块合计160*160个......
  • 原始翎风CLIENT8位 (8) CLUNIT的学习
    这个里面是绘图,有汇编,那个绘画效果的汇编看明白了,实际是先建立了一个颜色的转换索引表,颜色对应下标,数据是转换后的颜色在绘画效果中用函数功能找到混合表面的的指针,锁定它用汇编语言,将混合表面的每一个像素查找转换索引表,转换过去。因为用了MM0寄存器,这是个MMX的指令里面的,它是64......
  • 原始翎风CLIENT8位 (9) magieff的学习
    定义类型这里的魔法效果,是扔出去的魔法效果,魔法释放后的效果在施咒的动作的,如火球术的施咒效果图样是在自身的,却不在这里,由Actor单元里面实现有个m_nCurEffFrame,但是奇怪的是空间移动,是图样是在于自身这些效果,又是由本单元里面实现的。 TMagicType枚举开头mtmtReady准备?mt......
  • debian12源
     修改源  vim/etc/apt/sources.list阿里云源debhttps://mirrors.aliyun.com/debian/bookwormmainnon-freenon-free-firmwarecontribdeb-srchttps://mirrors.aliyun.com/debian/bookwormmainnon-freenon-free-firmwarecontribdebhttps://mirrors.aliyun.com/d......
  • 九龙城寨之围城下载/迅雷BT[HD-1280P/2.21GB/MP4中字]4k中字已更新
    《九龙城寨之围城》是一部以真实历史事件为背景的电影,讲述了1967年香港发生的九龙城寨事件。该片通过精彩的剧情、真实的场景和生动的角色,再现了当时发生的种种困境与挑战。影片不仅展示了九龙城寨的社会环境和居民生活,更呈现了人性的复杂与光辉。 电影以九龙城寨......
  • 一种车载蓝牙显示终端(QCC3040 QCC5125 OLED RX 显示蓝牙歌曲名)
    作为车载多媒体一种延伸,车载蓝牙终端通常作为手机与车机中转站,可以作为点烟器扩展产品。 通过播放暂停音乐、接打挂断电话、媒体音量加减、上下一曲功能来进行人机交互。 产品通常还有3.5mm输入接口。  通过车载IDB-CIDB-MIDB-Wireless等多媒体协议解析出车载媒体控......
  • 基于1500/1200 PLC的webserver---用户自定义页面
    1.创建html页面页面需要包含字符集信息:<metahttp-equiv="content-type"content="text/html;charset=utf-8">包含AWP命令的html文件,大小限制为64KB最简单的页面自动刷新:<metahttp-equiv="Refresh"content="10">2.AWP指令AWP命令公式中""之......
  • CF 1268B
    题目大意给一张杨氏图给出的图是一个直方图满足a1>=a2>=a3.....>=an(1<=a<=300000)(1<=n<=300000)要求找到最大不重叠多骨诺骨牌(1X2和2x1矩阵)正文部分先讲一下做法:对图进行黑白颜色,设黑色格子有a个,白色格子有b个,答案为min(a,b)证明先证明答案上限为min(a,b)因为......