home *** CD-ROM | disk | FTP | other *** search
/ Singles (French) / Singles-FrenchVersion-Win95.iso / data1.cab / Statemachine / tableChar.lua < prev    next >
Text File  |  2004-03-05  |  3KB  |  106 lines

  1. -- table character state machine
  2. beginStateMachine()
  3.     
  4.     onEnter(function(msg)
  5.     
  6.         print("table character state machine onEnter");
  7.         local table = getStateObjectFromID(msg.sender);
  8.         storeStateObject("table", table);
  9.         
  10.         if (table) then
  11.             --table does exist
  12.             
  13.             if (getParent().isOneActionPointLocked(table)) then
  14.                 -- action point is locked
  15.                 getParent().setEmoticon(EMOTICON_CANNOT, EMOTICON_DELAY);
  16.                 sendMsg("emoThink", getParent().walkSO);
  17.                 exitStateMachine();
  18.             else
  19.                 getParent().lockActionPoints(table);                
  20.             end
  21.         else
  22.             -- chair does not exist anymore
  23.             getParent().setEmoticon(EMOTICON_CANNOT, EMOTICON_DELAY);
  24.             sendMsg("emoThink", getParent().walkSO);
  25.             exitStateMachine();
  26.         end
  27.         
  28.         freeHands(getParent());
  29.                 
  30.     end )
  31.     
  32.     onExit(function(msg)
  33.         local table = retrieveStateObject("table");
  34.         getParent().unlockActionPoints(table);
  35.         removeStateObject("table");
  36.     end )
  37.     
  38.         
  39.         
  40.     -- clean up  table
  41.     state("clean")
  42.     
  43.         onEnter(function(msg)
  44.             -- grab sponge
  45.             local sponge = getParent().loadGameObject("StandardGO","sponge");
  46.             getParent().attachRightObjectHolder(sponge);
  47.             storeStateObject("sponge", sponge);
  48.             
  49.             local table = retrieveStateObject("table");
  50.             local clean = getParent().startActivity("clean", table);
  51.             local length, scale = getActivityLength(clean);
  52.             storeData("scale", scale);
  53.                         
  54.             startAnimation("cleanTableLoop", false, scale);    
  55.             table.playSound("cleanSink", 0.25);
  56.                     
  57.             --sendDelayedMsgThis("complete", length);
  58.             --this.actionComplete();
  59.         end )
  60.         
  61.         onExit(function(msg)
  62.             local table = retrieveStateObject("table");
  63.             table.stopSound("cleanSink", 0.25);
  64.         end )
  65.  
  66. --        onMsg("cancel", function(msg)
  67. --            -- remove sponge
  68. --            local sponge = getParent().getRightHeldObject()
  69. --            getParent().detachRightObjectHolder();
  70. --            if (sponge) then sponge.deleteGameObject(); end
  71. --            
  72. --            getParent().stopActivity("clean", retrieveStateObject("table"));
  73. --            exitStateMachine();
  74. --        end )    
  75. --    
  76. --        onMsg("gueue", function(msg)
  77. --            sendMsgThis("complete");
  78. --        end )    
  79.  
  80.         onMsg("complete", function(msg)
  81.             -- remove sponge
  82.             local sponge = getParent().getRightHeldObject()
  83.             getParent().detachRightObjectHolder();
  84.             if (sponge) then sponge.deleteGameObject(); end
  85.             
  86.             getParent().stopActivity("clean", retrieveStateObject("table"));
  87.             if (not testCancel()) then queueNextClean(getParent()) end;
  88.             exitStateMachine();
  89.         end )    
  90.     
  91.         onMsg("end", function(msg)
  92.             local table = retrieveStateObject("table");
  93.             local dirt = table.getDirtiness();
  94.             if (testCancel() or dirt<0.01) then
  95.                 sendMsgThis("complete");
  96.             else
  97.                 local scale = retrieveData("scale");
  98.                 startAnimation("cleanTableLoop", false, scale);            
  99.                 table.playSound("cleanSink", 0.25);
  100.                 clean(table, CLEAN_PER_LOOP);            
  101.             end
  102.         end )    
  103.         
  104.         
  105.     
  106. endStateMachine()