Code: Alles auswählen
; example by ts-soft
EnableExplicit
dhToggleExceptions(#True)
Define.l oAgent, oMerlin
Define.s item
oAgent = dhCreateObject("Agent.Control.2")
If oAgent = 0
  Debug "error: can't create object"
  End
EndIf
dhPutValue(oAgent, "Connected = %b", #True)
dhCallMethod(oAgent, "Characters.Load(%s,%s)", @"Merlin", @"Merlin.acs")
dhGetValue("%o", @oMerlin, oAgent, "Characters(%s)", @"Merlin")
If oMerlin = 0
  Debug "error: can't create object"
  End
EndIf
dhCallMethod(oMerlin, "Show")
If OpenWindow(0, 0, 0, 200, 200, "Merlin - Demo", #PB_Window_ScreenCentered|#PB_Window_SystemMenu) And CreateGadgetList(WindowID(0))
 
  ListViewGadget(0, 5, 5, 190, 165)
  ButtonGadget(1, 70, 177, 60, 20, "Play")
 
  Restore Merlin
 
  Repeat
    Read item
    If item <> ""
      AddGadgetItem(0, #PB_Any, item)
    EndIf
  Until item = ""
 
  dhCallMethod(oMerlin, "MoveTo(%d,%d)", WindowX(0) + 40, WindowY(0) - 120)
  dhCallMethod(oMerlin, "Play(%s)", @"GetAttention")
  dhCallMethod(oMerlin, "Play(%s)", @"GetAttentionContinued")
  dhCallMethod(oMerlin, "Speak(%s)", @"Can I do something for you?")
  dhCallMethod(oMerlin, "Play(%s)", @"GetAttentionReturn")
  SetGadgetState(0, 0)
   
  Repeat
 
    Select WaitWindowEvent()
      Case #PB_Event_CloseWindow
        CloseWindow(0)
        dhCallMethod(oMerlin, "Stop")
        dhCallMethod(oMerlin, "Play(%s)", @"Hide")
        Delay(3000)
        Break
   
      Case #PB_Event_MoveWindow
        dhCallMethod(oMerlin, "MoveTo(%d,%d)", WindowX(0) + 40, WindowY(0) - 120)
         
      Case #PB_Event_Gadget
     
        Select EventGadget()
          Case 1
            item = GetGadgetText(0)
            If Item = "Speak"
              Item = InputRequester("Merlin", "What should i say?", "")
              If Item <> ""
                dhCallMethod(oMerlin, "Speak(%s)", @Item)
              EndIf
            Else
              dhCallMethod(oMerlin, "Stop")
              dhCallMethod(oMerlin, "Play(%s)", @item)
            EndIf
        EndSelect
    EndSelect
   
  ForEver
EndIf
dhReleaseObject(oMerlin)
dhReleaseObject(oAgent)
DataSection
  Merlin:
  Data.s "Acknowledge", "Alert", "Announce", "Blink", "Confused", "Congratulate"
  Data.s "Congratulate_2", "Decline", "DoMagic1", "DoMagic2", "DontRecognize"
  Data.s "Explain", "GestureDown", "GestureLeft", "GestureRight", "GestureUp"
  Data.s "GetAttention", "GetAttentionContinued", "GetAttentionReturn", "Greet"
  Data.s "Hearing_1", "Hearing_2", "Hearing_3", "Hearing_4", "Hide", "Idle1_1"
  Data.s "Idle1_2", "Idle1_3", "Idle1_4", "Idle2_1", "Idle2_2", "Idle3_1", "Idle3_2"
  Data.s "LookDown", "LookDownBlink", "LookDownReturn", "LookLeft", "LookLeftBlink"
  Data.s "LookLeftReturn", "LookRight", "LookRightBlink", "LookRightReturn"
  Data.s "LookUp", "LookUpBlink", "LookUpReturn", "MoveDown", "MoveLeft", "MoveRight"
  Data.s "MoveUp", "Pleased", "Process", "Processing", "Read", "ReadContinued"
  Data.s "Reading", "ReadReturn", "Sad", "Search", "Searching", "Show", "Speak"
  Data.s "StartListening", "StopListening", "Suggest", "Surprised", "Think", "Thinking"
  Data.s "Uncertain", "Wave", "Write", "WriteContinued", "WriteReturn", "Writing"
  Data.s ""
EndDataSection