# sampleclientscripting.py
#print "sampleclientscripting.................................."

import rxactor
import sys
import clr

asm = clr.LoadAssemblyByName('OpenSim.Region.ScriptEngine.Common')
Vector3 = asm.OpenSim.Region.ScriptEngine.Common.LSL_Types.Vector3

import random
import math

# Commands available on client-hud:
#  ShowInventoryMessage(vMessage)
#  ShowScrollMessage(vMessage,vTime)
#  ShowTutorialBox(vText,vTime):
#  DoFadeInOut(vInTime, vBetweenTime,vOutTime)
    
# Commands available on client-client:
#  mousebtns, 0=off, 1=on


# All effects in one class.
class ClientScripting(rxactor.Actor):
    def GetScriptClassName():
        return "sampleclientscripting.ClientScripting"

    def EventCreated(self):
        super(self.__class__,self).EventCreated()
        print "ClientScripting EventCreated"
        self.SendItem = 0

    def EventTouch(self,vAvatar):
        if(self.SendItem == 0):
            vAvatar.ShowInventoryMessage("This is a message from server")
            str = self.llGetObjectName() +  " sent ShowInventoryMessage command to client " + vAvatar.GetFullName()
            self.llShout(0,str)
        elif (self.SendItem == 1):
            vAvatar.ShowScrollMessage("This is a scrolling message from server lasting 10 seconds",10)
            str = self.llGetObjectName() +  " sent ShowScrollMessage command to client " + vAvatar.GetFullName()
            self.llShout(0,str)
        elif (self.SendItem == 2):
            vAvatar.ShowTutorialBox("This is a tutorial message box from server lasting 10 seconds",10)
            str = self.llGetObjectName() +  " sent ShowTutorialBox command to client " + vAvatar.GetFullName()
            self.llShout(0,str)
        elif (self.SendItem == 3):
            vAvatar.DoFadeInOut(3,3,3)
            str = self.llGetObjectName() +  " sent DoFadeInOut command to client " + vAvatar.GetFullName()
            self.llShout(0,str)
        elif (self.SendItem == 4):
            self.MyWorld.MyEventManager.SubsribeToEvent('lmb',self)
            self.MyWorld.MyEventManager.SubsribeToEvent('rmb',self)
            vAvatar.SetSendMouseClickEvents(True)
            str = self.llGetObjectName() +  " sent client-enablesendmousebtns " + vAvatar.GetFullName()
            self.llShout(0,str)
        elif (self.SendItem == 5):
            self.MyWorld.MyEventManager.UnSubsribeToEvent('lmb',self)
            self.MyWorld.MyEventManager.UnSubsribeToEvent('rmb',self)
            vAvatar.SetSendMouseClickEvents(False)
            str = self.llGetObjectName() +  " sent client-disablesendmousebtns " + vAvatar.GetFullName()
            self.llShout(0,str)
        elif (self.SendItem == 6):
            self.MyWorld.MyEventManager.SubsribeToEvent('mw',self)
            vAvatar.SetSendMouseWheelEvents(True)
            str = self.llGetObjectName() +  " sent client-enablesendmousewheel " + vAvatar.GetFullName()
            self.llShout(0,str)
        elif (self.SendItem == 7):
            self.MyWorld.MyEventManager.UnSubsribeToEvent('mw',self)
            vAvatar.SetSendMouseWheelEvents(False)
            str = self.llGetObjectName() +  " sent client-disablesendmousewheel " + vAvatar.GetFullName()
            self.llShout(0,str)
        
        self.SendItem = self.SendItem+1
        if(self.SendItem > 7):
            self.SendItem = 0


    def EventLeftMouseButtonPressed(self,vAgent):
        str = "Left mouse button was pressed by " + vAgent.GetFullName()
        self.llShout(0,str)

    def EventRightMouseButtonPressed(self,vAgent):
        str = "Right mouse button was pressed by " + vAgent.GetFullName()
        self.llShout(0,str)

    def EventMouseWheel(self,vAgent,vAction):
        if(vAction == "-1"):
            str = "Mouse wheel up by" + vAgent.GetFullName()
        else:
            str = "Mouse wheel down by" + vAgent.GetFullName()
        self.llShout(0,str)
        
        
        
# More info about an object by touching it.
class ArmChair(rxactor.Actor):
    def GetScriptClassName():
        return "sampleclientscripting.ArmChair"
    
    def EventCreated(self):
        super(self.__class__,self).EventCreated()
        print "ClientScripting.ArmChair EventCreated"
        self.Status = 0

    def EventTouch(self,vAvatar):
        if(self.Status == 0):
            self.CommandToClient(vAvatar.AgentId,'hud','ShowTutorialBox("RXR armchair for sale by rexuser, click again for more info)",6)','')
        else:
            self.CommandToClient(vAvatar.AgentId,'hud','ShowScrollMessage("RXR chair is very comfy to sit on. It features ultra modern fibers making sitting in it a comfortable experience. You will never sit in another chair again.",30)','')

        self.Status = self.Status+1
        if(self.Status > 1):
            self.Status = 0