blob: 3e0f1c1b8e591249b570f5f4d816f481b857b012 (
plain)
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
|
#include <random>
#include "CreateArtistTileBehavior.h"
#include "StepTileBehavior.h"
#include "Tile.h"
#include "Museum.h"
using std::uniform_int_distribution;
using std::uniform_real_distribution;
using std::random_device;
using std::mt19937;
using namespace std;
random_device dev{};
mt19937 rng(dev());
uniform_int_distribution<int> random_bool(0, 1);
uniform_real_distribution<float> random_float(-1, 1);
void CreateArtistTileBehavior::update(Tile & tile) {
unsigned int new_artists = this->interactions - this->last_interactions;
this->last_interactions = this->interactions;
for (unsigned int i = 0; i < new_artists; i++) {
if (i >= 2) break;
ArtistData new_data = {
.x = static_cast<float>(tile.data.x),
.y = static_cast<float>(tile.data.y),
};
float velocity = random_float(rng);
random_bool(rng) ? new_data.vx = velocity : new_data.vy = velocity;
this->museum.people.add_artist(new_data);
}
if (this->interactions < 2) return;
tile.set_type(StepTileBehavior::type);
}
|