299 |
if (mc) { |
if (mc) { |
300 |
/* Bei diesem eval werden die Bildchen neu in mBild eingefügt... |
/* Bei diesem eval werden die Bildchen neu in mBild eingefügt... |
301 |
Das ist beim Global-Blop aber nicht erlaubt. */ |
Das ist beim Global-Blop aber nicht erlaubt. */ |
302 |
mMalenErlaubt = mDaten[spezvar_kind] != blopart_global; |
mMalenErlaubt = true; |
303 |
mc->eval(*this); |
mc->eval(*this); |
304 |
} |
} |
305 |
|
|
561 |
|
|
562 |
/** High-Level: Wird benutzt, wenn eine Variable im cual-Programm steht. |
/** High-Level: Wird benutzt, wenn eine Variable im cual-Programm steht. |
563 |
Kümmert sich auch um all das @()-Zeug und die Zeitverzögerung. */ |
Kümmert sich auch um all das @()-Zeug und die Zeitverzögerung. */ |
564 |
int Blop::getVariable(const Variable & v) const { |
int Blop::getVariable(const Variable & v) { |
565 |
switch (v.getOrt()) { |
if (v.Ort_hier()) |
|
case variable_lokal: |
|
566 |
return getVariable(v.getNummer()); |
return getVariable(v.getNummer()); |
567 |
|
else { |
568 |
case variable_global: |
ort_absolut ziel = v.getOrt(mOrt, *this); |
569 |
return gGlobalBlop.getVariableVergangenheit(v.getNummer()); |
if (ziel.korrekt()) |
570 |
|
return ziel.finde().getVariableVergangenheit(v.getNummer()); |
571 |
case variable_relativ: { |
else |
|
int xx = v.getX(mOrt.x, mOrt.y); |
|
|
int yy = v.getY(mOrt.x, mOrt.y); |
|
|
|
|
|
if (mBesitzer && mBesitzer->koordOK(xx, yy)) |
|
|
return mBesitzer->getFeld(xx, yy). |
|
|
getVariableVergangenheit(v.getNummer()); |
|
|
else { |
|
|
/* An den angegebenen Koordinaten relativ zu diesem Blop |
|
|
gibt's grad nix. Dann default zurückliefern. */ |
|
572 |
return v.getDefaultWert(); |
return v.getDefaultWert(); |
573 |
} |
}; |
|
} |
|
|
|
|
|
case variable_fall: |
|
|
return mBesitzer->getFall(v.getWelcherFall())->getVariable(v.getNummer()); |
|
|
|
|
|
default: |
|
|
CASSERT(false); |
|
|
} |
|
|
return 0; // nur, um keine Warnung zu kriegen. |
|
574 |
} |
} |
575 |
|
|
576 |
|
|
595 |
break; |
break; |
596 |
} |
} |
597 |
|
|
598 |
|
|
599 |
switch (v.getOrt()) { |
if (v.Ort_hier()) |
|
case variable_lokal: |
|
600 |
setVariable(v.getNummer(), wert, op); |
setVariable(v.getNummer(), wert, op); |
601 |
break; |
else { |
602 |
case variable_global: |
ort_absolut ziel = v.getOrt(mOrt, *this); |
603 |
gGlobalBlop.setVariableZukunft(v.getNummer(), wert, op); |
if (ziel.korrekt()) |
604 |
break; |
ziel.finde().setVariableZukunft(v.getNummer(), wert, op); |
605 |
case variable_relativ: { |
}; |
|
int xx = v.getX(mOrt.x, mOrt.y); |
|
|
int yy = v.getY(mOrt.x, mOrt.y); |
|
|
if (mBesitzer && mBesitzer->koordOK(xx, yy)) { |
|
|
mBesitzer->getFeld(xx, yy). |
|
|
setVariableZukunft(v.getNummer(), wert, op); |
|
|
} |
|
|
break; |
|
|
} |
|
|
case variable_fall: |
|
|
mBesitzer->getFall(v.getWelcherFall()) |
|
|
->setVariable(v.getNummer(), wert, op); |
|
|
break; |
|
|
default: |
|
|
CASSERT(false); |
|
|
} |
|
606 |
} |
} |
607 |
|
|
608 |
|
|
732 |
fühl' mich aber wohler. */ |
fühl' mich aber wohler. */ |
733 |
braucheInitStapel(); |
braucheInitStapel(); |
734 |
|
|
735 |
if (!mMalenErlaubt) |
if ((!mMalenErlaubt) || (!mOrt.bemalbar())) |
736 |
throw Fehler(_("Drawing is not allowed at the moment.")); |
throw Fehler(_("Drawing is not allowed at the moment.")); |
737 |
mBild.speichereBild(getSorte(), mDaten[spezvar_file], mDaten[spezvar_pos], |
mBild.speichereBild(getSorte(), mDaten[spezvar_file], mDaten[spezvar_pos], |
738 |
mDaten[spezvar_quarter]); |
mDaten[spezvar_quarter]); |
749 |
if (ziel.korrekt()) { |
if (ziel.korrekt()) { |
750 |
Blop & b = ziel.finde(); |
Blop & b = ziel.finde(); |
751 |
|
|
752 |
if (!b.mMalenErlaubt) |
if ((!mMalenErlaubt) || (!b.mOrt.bemalbar())) |
753 |
throw Fehler(_("Drawing is not allowed at the moment.")); |
throw Fehler(_("Drawing is not allowed at the moment.")); |
754 |
|
|
755 |
/* Ggf. gelazyten initStapel()-Aufruf nachholen. An dieser Stelle |
/* Ggf. gelazyten initStapel()-Aufruf nachholen. An dieser Stelle |