少年修仙传客户端代码仓库
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
 
/** 重复发包控制 */
public class NetRepeatSender : MonoBehaviour {
 
    /** Socket控制器引用 */
    public ClientSocketController father;
    /** 需要重复发送的包 */
    List<SingleRepeatPack> packs = new List<SingleRepeatPack>();
    /** 当前应用真实运行时长 */
    float curRealTime;
 
    void Update () {
        if (packs.Count > 0 && father.Connected) {
            curRealTime = Time.realtimeSinceStartup;
            foreach (SingleRepeatPack vSingle in packs)
            {
                if ((curRealTime - vSingle.stepTime) > vSingle.lastSendTime)
                {
                    vSingle.lastSendTime = curRealTime;
                    father.SendInfo (vSingle.CreatePack ());
                }
            }
        }
    }
 
    /** 添加定时发包 */
    public void AddRepeatSend (int vCmds, float vStepTime) {
        packs.Add (new SingleRepeatPack (vCmds, vStepTime));
    }
 
    /** 添加定时发包 */
    public void AddRepeatSend (GameNetPackBasic vPack, float vStepTime) {
        packs.Add (new SingleRepeatPack (vPack, vStepTime));
    }
 
    /** 单个重复包的结构 */
    class SingleRepeatPack {
        /** 协议 */
        public int cmds;
        /** 发包时间间隔 */
        public float stepTime = 1f;
        /** 记录最近一次发包的真实运行时长值 */
        public float lastSendTime = 0;
 
        public GameNetPackBasic pack;
        
        public SingleRepeatPack (int vCmds, float vStepTime) {
            cmds = vCmds;
            stepTime = vStepTime;
        }
 
        public SingleRepeatPack (GameNetPackBasic vPack, float vStepTime) {
            pack = vPack;
            stepTime = vStepTime;
        }
 
        public GameNetPackBasic CreatePack () {
            if (pack == null)
            {
                if (cmds == 0x0104)
                {
                    //C0104_tagCOnlineReturn vSend_0104 = new C0104_tagCOnlineReturn ();
                    //vSend_0104.Type = 0;
                    //pack = vSend_0104;
                }
            }
            return pack;
        }
 
    }
 
}