/[enigma]/enigma/src/items.cc
ViewVC logotype

Diff of /enigma/src/items.cc

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

revision 1.29 by reallysoft, Sat May 10 17:40:39 2003 UTC revision 1.30 by dheck, Sat May 10 23:39:20 2003 UTC
# Line 1438  namespace Line 1438  namespace
1438          CLONEOBJ(Blocker);          CLONEOBJ(Blocker);
1439      public:      public:
1440          Blocker(bool shrinked_recently)          Blocker(bool shrinked_recently)
1441              : Item("it-blocker")          : Item("it-blocker"),
1442              , state(shrinked_recently ? SHRINKED : IDLE)            state(shrinked_recently ? SHRINKED : IDLE)
1443          {}          {}
1444    
1445      private:      private:
# Line 1477  namespace Line 1477  namespace
1477              Item::on_removal();              Item::on_removal();
1478          }          }
1479    
1480            void message(const string &msg, const Value &) {
1481                if (msg == "signal") {
1482                    grow();
1483                }
1484            }
1485    
1486    
1487          void stone_change(Stone *st) {          void stone_change(Stone *st) {
1488              if (st) {              if (st) {
1489                  if (0 == strcmp(st->get_kind(), "st-bolder")) { // bolder arrived                  if (0 == strcmp(st->get_kind(), "st-bolder")) { // bolder arrived
1490  //                     log("bolder arrived");  //                     log("bolder arrived");
1491                      switch (state) {                      switch (state) {
1492                          case IDLE:                      case IDLE:
1493                              change_state(COVERED);                          change_state(COVERED);
1494                              break;                          break;
1495                          case SHRINKED:                      case SHRINKED:
1496                              change_state(BOLDERED);                          change_state(BOLDERED);
1497                              break;                          break;
1498                          case COVERED:                      case COVERED:
1499                          case BOLDERED:                      case BOLDERED:
1500                              // two BolderStones running directly next to each other                          // two BolderStones running directly next to each other
1501                              // let second pass as well (correct?)                          // let second pass as well (correct?)
1502                              break;                          break;
1503                      }                      }
1504                  }                  }
1505                  else {          // other stone arrived                  else {          // other stone arrived
# Line 1502  namespace Line 1509  namespace
1509              else {              // stone disappeared              else {              // stone disappeared
1510  //                 log("stone disappeared");  //                 log("stone disappeared");
1511                  switch (state) {                  switch (state) {
1512                      case BOLDERED:                  case BOLDERED:
1513                          change_state(IDLE);                      change_state(IDLE);
1514                          break;                      break;
1515                      case COVERED:                  case COVERED:
1516                          Stone *st = world::MakeStone("st-blocker-growing");                      grow();
1517                          world::SetStone(get_pos(), st);                      break;
                         world::KillItem(get_pos());  
                         break;  
1518                  }                  }
1519              }              }
1520          }          }
1521    
1522            void grow() {
1523                Stone *st = world::MakeStone("st-blocker-growing");
1524                world::SetStone(get_pos(), st);
1525                world::KillItem(get_pos());
1526            }
1527    
1528          void alarm() {          void alarm() {
1529  //             log("got alarm");  //             log("got alarm");
1530              if (state == SHRINKED) { // BolderStone did not arrive in time              if (state == SHRINKED) { // BolderStone did not arrive in time

Legend:
Removed from v.1.29  
changed lines
  Added in v.1.30

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