1
0
mirror of https://github.com/zenorogue/hyperrogue.git synced 2024-10-31 19:36:16 +00:00

parser/texture:: txp function

This commit is contained in:
Zeno Rogue 2019-11-15 13:37:57 +01:00
parent 388ac890bf
commit 4dfa168ce4
2 changed files with 24 additions and 0 deletions

View File

@ -1676,6 +1676,16 @@ void texture_config::remap() {
} }
} }
#if CAP_TEXTURE
texture_data txp;
EX double get_txp(ld x, ld y, int p) {
if(txp.texture_pixels.empty()) return 0.5;
color_t col = txp.get_texture_pixel(txp.twidth * x, txp.twidth * y);
return part(col, p) / 255.;
}
#endif
int textureArgs() { int textureArgs() {
using namespace arg; using namespace arg;
@ -1696,6 +1706,14 @@ int textureArgs() {
shift(); config.configname = args(); shift(); config.configname = args();
} }
else if(argis("-txpsize")) {
shift(); txp.twidth = argi();
}
else if(argis("-txpf")) {
shift(); txp.readtexture(args());
}
else if(argis("-txcl")) { else if(argis("-txcl")) {
PHASE(3); drawscreen(); PHASE(3); drawscreen();
config.load(); config.load();

View File

@ -219,6 +219,12 @@ cld exp_parser::parse(int prio) {
dynamicval<cld> d(extra_params[name], val); dynamicval<cld> d(extra_params[name], val);
return parsepar(); return parsepar();
} }
#if CAP_TEXTURE
else if(eat("txp(")) {
cld val = parsepar();
return texture::get_txp(real(val), imag(val), int(real(extra_params["p"]) + .5)-1);
}
#endif
else if(next() == '(') at++, res = parsepar(); else if(next() == '(') at++, res = parsepar();
else { else {
string number; string number;