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

  1. -- Quest multiplexor
  2. --
  3.  
  4. function enterQuest( questIdentifier )
  5.     local runningQuests = retrieveData("quests");
  6.     if (not runningQuests) then
  7.         runningQuests = {};
  8.     end
  9.     
  10.     -- dont add if the quest had been entered already 
  11.     if (not this[questIdentifier]) then
  12.         print ("creating MissionStateObject...");
  13.         local newQuest = QuestStateObject();
  14.         
  15.         print ("setting StateMachine to "..questIdentifier );
  16.         newQuest.setStateMachine( questIdentifier );
  17.         
  18.         if (newQuest.getStateMachine()) then
  19.             -- store that (registers StateObject)
  20.             addAttribute( questIdentifier, newQuest );    
  21.             
  22.             --runningQuests += questIdentifiert;
  23.             tinsert( runningQuests, questIdentifier );
  24.             
  25.             --stores names to running quests for easy iteration
  26.             storeData("quests", runningQuests );
  27.         end
  28.     else
  29.         print( "quest "..questIdentifier.."already entered" );
  30.     end
  31.         
  32. end
  33.  
  34. beginStateMachine()
  35.  
  36.     onEnter(function(msg)
  37.         sendMsgThis("enterQuests");
  38.         -- initialize polling loop
  39.         sendDelayedMsgThis("checkQuestConditions", 5000);
  40.     end )
  41.     
  42.     onMsg("enterQuests", function(msg)
  43.         --enterQuest("questTest");
  44.         enterQuest("questMoveIn");
  45.         enterQuest("questGottaWork");
  46.     
  47.     ----
  48.         enterQuest("questFriendship1");
  49.         enterQuest("questFriendship2");
  50.         enterQuest("questFriendship3");
  51.         enterQuest("questFriendship4");
  52.         enterQuest("questFriendship5");
  53.         enterQuest("questFriendship6");
  54.         enterQuest("questFriendship7");
  55.         enterQuest("questFriendship8");
  56.         enterQuest("questFriendship9");
  57.         enterQuest("questFriendship10");
  58.     
  59.     ----
  60.         enterQuest("questRomance1");
  61.         enterQuest("questRomance2");
  62.         enterQuest("questRomance3");
  63.         enterQuest("questRomance4");
  64.         enterQuest("questRomance5");
  65.         enterQuest("questRomance6");
  66.         enterQuest("questRomance7");
  67.         enterQuest("questRomance8");
  68.         enterQuest("questRomance9");
  69.         enterQuest("questRomance10");
  70.     
  71.     ----
  72.         enterQuest("questErotic1");
  73.         enterQuest("questErotic2");
  74.         enterQuest("questErotic3");
  75.         enterQuest("questErotic4");
  76.         enterQuest("questErotic5");
  77.         enterQuest("questErotic6");
  78.         enterQuest("questErotic7");
  79.         enterQuest("questErotic8");
  80.         enterQuest("questErotic9");
  81.         enterQuest("questErotic10");
  82.             
  83.     ----
  84.         enterQuest("questMarriage");
  85.         enterQuest("questHoneymoon");
  86.     ----
  87.         -- die hier machen beides
  88.         enterQuest("questTrouble1a");
  89.         enterQuest("questTrouble3a");
  90.         enterQuest("questTrouble5a");
  91.         enterQuest("questTrouble8a");
  92.         enterQuest("questTroubleTheEnda");
  93.         
  94.         --enterQuest("questTrouble1b");
  95.         --enterQuest("questTrouble3b");
  96.         --enterQuest("questTrouble5b");
  97.         --enterQuest("questTrouble8b");
  98.         --enterQuest("questTroubleTheEndb");
  99.     end )
  100.     
  101.     
  102.     --- conveniance
  103.     onMsg("enterTrigger", function(msg)
  104.         sendMsgThis("questreset");
  105.         sendMsgThis("enterQuests");
  106.     end )
  107.     
  108.     
  109.     
  110.     
  111.     
  112.     onMsg("checkQuestConditions", function(msg) 
  113.         --print("does not refire this");
  114.         sendDelayedMsgThis("checkQuestConditions", 10000);    
  115.         sendMsgThis("checkCondition"); -- <-- will be forwarded to each running quest
  116.     end )
  117.     
  118.     -- Forwards incoming unhandled messages to currently running quests
  119.     -- these might be messages such as "enterTrigger" or GameObject 
  120.     -- actions that have been rerouted to the current mission StateObject
  121.     onDefault( function(msg)        
  122.     
  123.         local skipStory = (readConfig("Debug", "skipStory", "") == "true");
  124.         
  125.         if (not skipStory) then
  126.         
  127.         print(" Forwarding unhandled method: " .. msg.name .. " data:" .. msg.data);
  128.         
  129.             local runningQuests = retrieveData("quests");
  130.             
  131.             if ( runningQuests ) then
  132.                 for index, questIdentifier in runningQuests do
  133.                     local questStateObject = this[questIdentifier];
  134.                     
  135.                     if ( questStateObject ) then
  136.                         --print( "\t" .. questStateObject.getStateMachine().getName() 
  137.                         --        .. "(" .. 
  138.                         --        questStateObject.getUniqueID() 
  139.                         --        .. ":" ..
  140.                         --        questStateObject.getState()
  141.                         --        .. ")" );
  142.                         
  143.                         if (getStateObjectFromID(msg.sender)) then
  144.                             getStateObjectFromID(msg.sender).sendMsg( 
  145.                                 msg.name, questStateObject , msg.data );
  146.                         end
  147.                     end
  148.                 end
  149.             end    
  150.         end
  151.     end )
  152.  
  153. ---------------------------------------------------------------------------------------------------------------------------------------    
  154.  
  155.     state("done")
  156.         
  157.     -- sackgasse hier
  158.  
  159. endStateMachine()
  160.