home *** CD-ROM | disk | FTP | other *** search
/ Roboty / ROBOTS_CD.iso / CD / assembly.dxr / Internal_21_bodyparts.ls < prev    next >
Encoding:
Text File  |  2005-05-13  |  2.2 KB  |  73 lines

  1. property spriteNum, locs, pos, targetLoc, myID, startLoc, myState, displayOrder, MypartType, partID
  2. global BodyHaxis, BodyVaxis, BodyParts, robotConstruction, CorrectAnswers, robotMaterials, sectionIDs, gMaterialDisplay
  3.  
  4. on beginSprite me
  5.   myState = "locked"
  6.   pos = myID
  7.   partID = getPos(BodyParts, MypartType)
  8.   locs = [point(BodyHaxis[1], BodyVaxis[partID]), point(BodyHaxis[2], BodyVaxis[partID]), point(BodyHaxis[3], BodyVaxis[partID])]
  9.   startLoc = sprite(spriteNum).loc
  10.   targetLoc = sprite(spriteNum).loc
  11.   sprite(spriteNum).member = MypartType & sectionIDs[partID][myID]
  12. end
  13.  
  14. on resetDefault me
  15.   sprite(spriteNum).member = MypartType & sectionIDs[partID][myID]
  16. end
  17.  
  18. on exitFrame me
  19.   if myState = "switch" then
  20.     incx = (sprite(spriteNum).loc[1] - targetLoc[1]) / 1.5
  21.     incy = (sprite(spriteNum).loc[2] - targetLoc[2]) / 1.5
  22.     sprite(spriteNum).loc = targetLoc + point(incx, incy)
  23.     if me.distanceCheck(targetLoc, sprite(spriteNum).loc) < 2 then
  24.       myState = "locked"
  25.       if myID = 2 then
  26.         robotConstruction[partID] = robotMaterials[displayOrder[myID]]
  27.         sendSprite(13, #updateMaterialFeild, robotConstruction[partID])
  28.       end if
  29.       sprite(spriteNum).member = MypartType & displayOrder[myID]
  30.       sprite(spriteNum).loc = startLoc
  31.       pos = myID
  32.     end if
  33.   end if
  34.   blendV = 100 - me.distanceCheck(locs[2], sprite(spriteNum).loc)
  35.   if blendV > 100 then
  36.     blendV = 100
  37.   end if
  38.   if blendV < 0 then
  39.     blendV = 0
  40.   end if
  41.   sprite(spriteNum).blend = blendV
  42. end
  43.  
  44. on changeMe me, Dir, bobyPart, newOrder
  45.   if bobyPart = MypartType then
  46.     if (Dir = "right") and (pos > 1) then
  47.       pos = myID - 1
  48.     end if
  49.     if (Dir = "left") and (pos < 3) then
  50.       pos = myID + 1
  51.     end if
  52.     sendSprite(13, #updateMaterialFeild, EMPTY)
  53.     displayOrder = newOrder
  54.     targetLoc = locs[pos]
  55.     myState = "switch"
  56.   end if
  57. end
  58.  
  59. on distanceCheck me, obj1, obj2
  60.   return sqrt(power(obj1[1] - obj2[1], 2) + power(obj1[2] - obj2[2], 2))
  61. end
  62.  
  63. on isOKToAttach me, aSpriteType, aSpriteNum
  64.   return 1
  65. end
  66.  
  67. on getPropertyDescriptionList me
  68.   props = [:]
  69.   props[#myID] = [#comment: "ID number", #format: #integer, #default: 1]
  70.   props[#MypartType] = [#comment: "BODY PART", #format: #string, #default: "HEAD"]
  71.   return props
  72. end
  73.