Changeset ca44f82 in network-game for common/Player.cpp
- Timestamp:
- Feb 24, 2013, 1:28:32 AM (12 years ago)
- Branches:
- master
- Children:
- 7b43385
- Parents:
- 3a79253 (diff), 8f85180 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)
links above to see all the changes relative to each parent. - File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
common/Player.cpp
r3a79253 rca44f82 4 4 #include <sstream> 5 5 #include <cstring> 6 #include <cmath> 6 7 7 8 using namespace std; … … 12 13 this->name = ""; 13 14 this->password = ""; 14 this->pos.x = 0; 15 this->pos.y = 0; 15 this->pos.x = this->target.x = 0; 16 this->pos.y = this->target.y = 0; 17 this->timeLastUpdated = 0; 16 18 } 17 19 … … 23 25 this->pos.x = p.pos.x; 24 26 this->pos.y = p.pos.y; 27 this->target.x = p.target.x; 28 this->target.y = p.target.y; 25 29 this->addr = p.addr; 26 30 } … … 31 35 this->name = name; 32 36 this->password = password; 33 this->pos.x = 200;34 this->pos.y = 200;37 this->pos.x = this->target.x = 200; 38 this->pos.y = this->target.y = 200; 35 39 } 36 40 … … 40 44 this->name = name; 41 45 this->password = ""; 42 this->pos.x = 200;43 this->pos.y = 200;46 this->pos.x = this->target.x = 200; 47 this->pos.y = this->target.y = 200; 44 48 this->addr = addr; 45 49 } … … 51 55 void Player::serialize(char* buffer) 52 56 { 53 ostringstream oss; 54 55 oss.write((char*)&(this->id), sizeof(int)); 56 oss << this->name; 57 oss.write("\0", 1); 58 oss.write((char*)&(this->pos.x), sizeof(int)); 59 oss.write((char*)&(this->pos.y), sizeof(int)); 60 61 memcpy(buffer, oss.str().c_str(), this->name.length()+1+2*sizeof(int)); 57 memcpy(buffer, &this->id, 4); 58 memcpy(buffer+4, &this->pos.x, 4); 59 memcpy(buffer+8, &this->pos.y, 4); 60 memcpy(buffer+12, &this->target.x, 4); 61 memcpy(buffer+16, &this->target.y, 4); 62 strcpy(buffer+20, this->name.c_str()); 62 63 } 63 64 64 65 void Player::deserialize(char* buffer) 65 66 { 66 istringstream iss; 67 iss.str(buffer); 67 memcpy(&this->id, buffer, 4); 68 memcpy(&this->pos.x, buffer+4, 4); 69 memcpy(&this->pos.y, buffer+8, 4); 70 memcpy(&this->target.x, buffer+12, 4); 71 memcpy(&this->target.y, buffer+16, 4); 72 this->name.assign(buffer+20); 68 73 69 iss.read((char*)&(this->id), sizeof(int)); 70 iss >> this->name; 71 iss.read((char*)&(this->pos.x), sizeof(int)); 72 iss.read((char*)&(this->pos.y), sizeof(int)); 74 cout << "id: " << this->id << endl; 75 cout << "pos x: " << this->pos.x << endl; 76 cout << "pos y: " << this->pos.y << endl; 77 cout << "target x: " << this->target.x << endl; 78 cout << "target y: " << this->target.y << endl; 79 cout << "name: " << this->name << endl; 73 80 } 74 81 … … 82 89 this->addr = addr; 83 90 } 91 92 void Player::move(void) { 93 int speed = 100; // pixels per second 94 unsigned long long curTime = getCurrentMillis(); 95 96 // if we're at our target, don't move 97 if (pos.x == target.x && pos.y == target.y) 98 cout << "We're already at our target" << endl; 99 else { 100 float pixels = speed * (curTime-timeLastUpdated) / 1000.0; 101 cout << "We need to move " << pixels << " pixels" << endl; 102 103 double angle = atan2(target.y-pos.y, target.x-pos.x); 104 105 float dist = sqrt(pow(target.x-pos.x, 2) + pow(target.y-pos.y, 2)); 106 if (dist <= pixels) { 107 pos.x = target.x; 108 pos.y = target.y; 109 }else { 110 pos.x += cos(angle)*pixels; 111 pos.y += sin(angle)*pixels; 112 } 113 } 114 115 timeLastUpdated = curTime; 116 }
Note:
See TracChangeset
for help on using the changeset viewer.