This repository was archived by the owner on Apr 24, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 68
Expand file tree
/
Copy pathClient.cpp
More file actions
151 lines (115 loc) · 3.34 KB
/
Copy pathClient.cpp
File metadata and controls
151 lines (115 loc) · 3.34 KB
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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
#pragma once
#include"Client.h"
#include"Class/Hack.hpp"
#include "Class/DebugConsole.h"
#include "Class/HttpDataUpdater.h"
extern Hack hack;
extern HackSettings hackSettings;
extern DebugConsole debugConsole;
extern HttpDataUpdater httpDataUpdater;
Client::Client()
{
for (int i = 0; i < n_players; i++) {
playerControllers.push_back(new PlayerController());
}
}
Client::~Client() {
for (auto ptr_playerController : playerControllers) {
delete ptr_playerController;
}
if (playerControllers.size() > 0)
playerControllers.clear();
}
/// <summary>
/// 重置GUI设置
/// </summary>
void Client::resetGuiSettings() {
GuiSettings* guiSettings = &hackSettings.guiSettings;
//reset player's target speed
guiSettings->f_movementSpeed = hackSettings.gameOriginalData.f_baseMovementSpeed;
guiSettings->b_alwaysEnableNoclip = false;
guiSettings->b_disableFogOfWar = false;
}
/// <summary>
/// 重置所有玩家的数据
/// </summary>
void Client::resetAllPlayersData() {
debugConsole.log(DebugType::FUNCTION, "ResetAllPlayersData");
for (auto playerController : this->playerControllers) {
playerController->resetMemberFields();
}
}
void Client::onLocalPlayerQuitGame() {
//TODO: bug
//debugConsole.log(DebugType::EVENT, "OnLocalPlayerQuitGame");
Client::onGameEnded();
}
void Client::onEnteringRoom()
{
//TODO: 不知道干啥
debugConsole.log(DebugType::EVENT, "OnEnteringRoom");
}
/// <summary>
/// 游戏开始
/// </summary>
void Client::onGameStarted() {
debugConsole.log(DebugType::EVENT, "OnGameStarted");
//更新游戏内初始数据
//updateGameOriginalData();
//更新游戏开始时间
time(&this->time_gameStart);
{
if (localPlayer.address != NULL) {
//上传用户信息
debugConsole.log(DebugType::NORMAL, "UploadUserInfo");
UserInfo userInfo = localPlayer.getUserInfo();
httpDataUpdater.addHttpTask(std::bind(HttpTask::uploadUserInfo, userInfo));
}
}
}
/// <summary>
/// 游戏结束
/// </summary>
void Client::onGameEnded() {
debugConsole.log(DebugType::EVENT, "OnGameEnded");
//TODO: 重置玩家数据,例如死亡时附近的玩家
resetAllPlayersData();
//TODO: 重置hack中的激活状态
hack.resetActivationStates();
//重置Gui设置
resetGuiSettings();
this->time_gameStart = NULL;
}
/// <summary>
/// 有玩家死亡
/// </summary>
/// <param name="playerController"></param>
void Client::onPlayerDeath(IN PlayerController* playerController) {
//TODO: 统计死亡位置附近的玩家
}
bool Client::gameHasStarted()
{
return this->time_gameStart != NULL;
}
bool Client::inGameScene()
{
return lobbySceneHandler.b_InGameScene;
}
bool Client::localPlayerReadied()
{
return this->localPlayer.playerController.hasReadied();
}
bool Client::teleportTo(IN const Vector2& to) {
if (this->localPlayer.address == NULL) {
return false;
}
PlayerController* playerController = &this->localPlayer.playerController;
if (playerController == NULL || playerController->address == NULL) {
return false;
}
return playerController->teleportTo(to);
}
void Client::updateGameOriginalData() {
//hackSettings.gameOriginalData.f_baseMovementSpeed = localPlayer.getBaseMovementSpeed();
}
//Private