Tank Battle原始碼分析

2021-10-05 14:10:11 字數 2383 閱讀 4724

serverproxy 繼承 netpeer

netbuffer 封裝後的佇列,元素為byte(8位無符號整形)

netpeer 使用socket進行程序間通訊,connect, update, send, close。

將socket中的資料讀入buffer中,之後提取每個包資料,頭兩個位元組為包的長度,接收到後,讀入到記憶體中,進行進一步的處理,onreceive函式。第二個雙位元組為訊息型別(netmessage)

localtanker updateplayeroperation

處理使用者所有的滑鼠鍵盤輸入

tankcontroller updategunfollowtarget 處理射擊目標

updatetankgunratation 取消地形導致的槍口位置改變

注釋原始碼

vector = quaternion.inverse(this.mtank.getderivedorientation()) * vector;

vector3 = quaternion.inverse(rotation) * vector3;

在battle類中新增靜態成員函式

[dllimport("tank_data\\managed\\sendgamemessage.dll")]

public static extern void insertmessage(byte s);

對reportmessageplus進行修改

public static void reportmessageplus(string s)

對battleserverproxy中的handleshellhittank函式進行修改,新增**

if (tanker2 != null)

string str = string.concat(array);

if (num != 0)

關係對映

tankdata類 mkind坦克的索引(int型別)、mgrade(坦克級別ushort)、mclass(坦克類別ushort)

damageflags類

damageflag(int)19

5170傷害型別

擊穿暴擊

未擊穿(誤傷或復活模式免疫)

none

傳送資料格式

攻擊坦克(kind)、攻擊坦克名稱(string)、被攻擊坦克(kind)、被攻擊坦克名稱(string)、傷害值(int)、傷害型別(int)、戰鬥模式(int)、戰鬥id(int)、是否隊友誤傷(int 0否1是)

對handleshelldestroytank進行修改

if (tanker2 != null)

string str = string.concat(array);

if (num != 0u)

訊息細節同上

battlereport 記錄所有資訊

tankerbattlereport() 1.tank info 2. playerbattlescore 記錄對局中某一玩家成績

比賽開始時記錄玩家資訊:

stagebattle --> handlebaattleprepared --> battlereport.recordtanker() -->record tank info

比賽結束後記錄伺服器傳回結果:

worldserverproxy -->handlebattleresult --> recordtankerscore() --> record score info

最後修改:

tankbattlereport類中新增成員

public string mtankname;
battlereport.recordtanker函式中新增

tankerbattlereport.mtankname = tanker.gettank().getvisual().gettankvisualdata().mname;
在battlereport中新增函式

public void reportbattleresultout()

}} }

在worldserverproxy.handlebattleresult函式中新增

if (report != null)

戰鬥結果資料 坦克種類(int)、坦克名稱(string)、是否存活(bool)、擊毀數量(int)、傷害(int)、潛在傷害(int)、射擊數量(int)、命中數(int)、穿透數(int)、被擊中數量(int)、戰鬥模式(string)。

spring原始碼分析 spring原始碼分析

1.spring 執行原理 spring 啟動時讀取應用程式提供的 bean 配置資訊,並在 spring 容器中生成乙份相應的 bean 配置登錄檔,然後根據這張登錄檔例項化 bean,裝配好 bean 之間的依賴關係,為上 層應用提供準備就緒的執行環境。二 spring 原始碼分析 1.1spr...

思科VPP原始碼分析(dpo機制原始碼分析)

vpp的dpo機制跟路由緊密結合在一起。路由表查詢 ip4 lookup 的最後結果是乙個load balance t結構。該結構可以看做是乙個hash表,裡面包含了很多dpo,指向為下一步處理動作。每個dpo都是新增路由時的乙個path的結果。dpo標準型別有 dpo drop,dpo ip nu...

redux原始碼分析(三) 原始碼部分

下面是每個部分的一些解讀 createstore apicreatestore reducer,initialstate enhancer 曾經非常好奇這個函式的第二個引數到底是initialstate還是enhancer,因為見過兩種寫法都有的,以為是版本問題。看了原始碼才發現,都可以的。如果你不...