/[cuyo]/cuyo/src/blop.cpp
ViewVC logotype

Diff of /cuyo/src/blop.cpp

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.58 by caeles, Sun Nov 27 02:57:04 2005 UTC revision 1.59 by caeles, Sun Nov 27 18:59:27 2005 UTC
# Line 299  void Blop::animiere() { Line 299  void Blop::animiere() {
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    
# Line 561  int Blop::getSpezConst(int vnr) const { Line 561  int Blop::getSpezConst(int vnr) const {
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    
# Line 614  void Blop::setVariable(const Variable & Line 595  void Blop::setVariable(const Variable &
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    
# Line 767  void Blop::speichereBild() { Line 732  void Blop::speichereBild() {
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]);
# Line 784  void Blop::speichereBildFremd(Ort & ort, Line 749  void Blop::speichereBildFremd(Ort & ort,
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

Legend:
Removed from v.1.58  
changed lines
  Added in v.1.59

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26