mirror of
https://github.com/zenorogue/hyperrogue.git
synced 2026-04-15 06:21:23 +00:00
Merge branch 'master' of https://github.com/zenorogue/hyperrogue
This commit is contained in:
@@ -51,7 +51,7 @@ not the data, which is available on [itch.io](https://zenorogue.itch.io/rogueviz
|
||||
|
||||
On Linux with apt-get:
|
||||
|
||||
```sudo apt-get install make g++ libsdl1.2-dev libsdl-ttf2.0-dev libsdl-gfx1.2-dev libsdl-mixer1.2-dev libglew-dev```
|
||||
```sudo apt-get install make g++ libsdl1.2-dev libsdl-ttf2.0-dev libsdl-gfx1.2-dev libsdl-mixer1.2-dev libglew-dev libpng-dev```
|
||||
|
||||
On macOS with Homebrew:
|
||||
|
||||
|
||||
22
config.cpp
22
config.cpp
@@ -1075,8 +1075,18 @@ EX vector<int> get_display_modes(char which) {
|
||||
|
||||
#if SDLVER >= 2
|
||||
SDL_DisplayMode mode;
|
||||
for(int m=0; m<SDL_GetNumVideoDisplays(); m++) {
|
||||
for(int i=0; i<SDL_GetNumDisplayModes(m); i++) {
|
||||
int num_video_displays = SDL_GetNumVideoDisplays();
|
||||
if(num_video_displays < 0)
|
||||
println(hlog, "SDL_GetNumVideoDisplays error: ", SDL_GetError());
|
||||
else if(num_video_displays == 0)
|
||||
println(hlog, "SDL_GetNumVideoDisplays returned 0");
|
||||
for(int m=0; m<num_video_displays; m++) {
|
||||
int num_display_modes = SDL_GetNumDisplayModes(m);
|
||||
if(num_display_modes < 0)
|
||||
println(hlog, "SDL_GetNumDisplayModes(", m, ") error: ", SDL_GetError());
|
||||
else if(num_display_modes == 0)
|
||||
println(hlog, "SDL_GetNumDisplayModes(", m, ") returned 0");
|
||||
for(int i=0; i<num_display_modes; i++) {
|
||||
SDL_GetDisplayMode(m, i, &mode);
|
||||
if(which == 'x') seen.insert(mode.w);
|
||||
if(which == 'y') seen.insert(mode.h);
|
||||
@@ -1085,7 +1095,13 @@ EX vector<int> get_display_modes(char which) {
|
||||
|
||||
#else
|
||||
SDL_Rect **modes = SDL_ListModes(nullptr, 0);
|
||||
if(modes && modes != (SDL_Rect**)-1) for(int i=0; modes[i]; i++) {
|
||||
if(!modes)
|
||||
println(hlog, "SDL_ListModes: No modes available!");
|
||||
else if(modes == (SDL_Rect**)-1)
|
||||
println(hlog, "SDL_ListModes: All resolutions available.");
|
||||
else if(!*modes)
|
||||
println(hlog, "SDL_ListModes returned an empty array");
|
||||
else for(int i=0; modes[i]; i++) {
|
||||
if(which == 'x') seen.insert(modes[i]->w);
|
||||
if(which == 'y') seen.insert(modes[i]->h);
|
||||
}
|
||||
|
||||
@@ -164,7 +164,7 @@ struct dmercator_embedding : abstract_embedding {
|
||||
virtual string name() override { return "dmercator"; }
|
||||
eGeometryClass get_geometry() override { return gcHyperbolic; }
|
||||
int get_dimension() override { return 3; }
|
||||
hyperpoint as_hyperpoint(int id) {
|
||||
hyperpoint as_hyperpoint(int id) override {
|
||||
auto& mc = mcs[id];
|
||||
hyperpoint h;
|
||||
for(int i=0; i<3; i++)
|
||||
@@ -175,7 +175,7 @@ struct dmercator_embedding : abstract_embedding {
|
||||
|
||||
ld zero_distance(int id) override { return mcs[id].distance; }
|
||||
|
||||
ld distance(int a, int b) {
|
||||
ld distance(int a, int b) override {
|
||||
if(a == b) return ld(0);
|
||||
ld da = mcs[a].distance;
|
||||
ld db = mcs[b].distance;
|
||||
|
||||
18
shmup.cpp
18
shmup.cpp
@@ -83,15 +83,10 @@ struct monster {
|
||||
|
||||
void rebasePat(const shiftmatrix& new_pat, cell *tgt);
|
||||
|
||||
void remove_reference() {
|
||||
refs--;
|
||||
if(!refs) {
|
||||
if(parent) parent->remove_reference();
|
||||
delete this;
|
||||
}
|
||||
}
|
||||
void remove_reference();
|
||||
|
||||
void set_parent(monster *par) {
|
||||
if(parent == par) return;
|
||||
if(parent) parent->remove_reference();
|
||||
parent = par;
|
||||
parent->refs++;
|
||||
@@ -128,6 +123,15 @@ typedef multimap<cell*, monster*>::iterator mit;
|
||||
|
||||
EX vector<monster*> active, nonvirtual, additional;
|
||||
|
||||
void monster::remove_reference() {
|
||||
refs--;
|
||||
if(!refs) {
|
||||
if(parent) parent->remove_reference();
|
||||
nonvirtual.erase(std::remove(nonvirtual.begin(), nonvirtual.end(), this), nonvirtual.end());
|
||||
delete this;
|
||||
}
|
||||
}
|
||||
|
||||
cell *findbaseAround(shiftpoint p, cell *around, int maxsteps) {
|
||||
|
||||
if(quotient || fake::split()) {
|
||||
|
||||
Reference in New Issue
Block a user