Share Pastebin
Guest
Public paste!

Untitled

By: a guest | Feb 9th, 2010 | Syntax: None | Size: 7.68 KB | Hits: 15 | Expires: Never
Copy text to clipboard
  1. -- GLOBAL VARIABLE DEFINITIONS
  2. global gMap
  3. global gCharacterManager
  4.  
  5.  
  6. -- PROPERTY DEFINITIONS
  7. property pUsername
  8. property spriteNum
  9. property pSprite
  10. property pMovementQueue
  11. property pWalking
  12. property pSteps
  13.  
  14.  
  15. -- Creates a new parent/child object.
  16. on new(me, username)
  17.   me.pUsername = username
  18.   me.pMovementQueue = []
  19.   me.pWalking = FALSE
  20.   return(me)
  21. end new
  22.  
  23.  
  24. -- Finds a blank sprite channel on the score.
  25. on findSpriteChannel(me)
  26.   position = 500
  27.   i = 0
  28.   repeat while true
  29.     if (sprite(position + i).member.type = #empty) then
  30.       emptySprite = position + i
  31.       exit repeat
  32.     end if
  33.     i = i + 1
  34.   end repeat
  35.   channel(emptySprite).makeScriptedSprite(member("BlankSprite", "Characters"), point(-100, -100))
  36.   me.spriteNum = emptySprite
  37.   me.pSprite = sprite(me.spriteNum)
  38.   me.pSprite.bgColor = color(5)
  39.   me.pSprite.ink = 36
  40.   me.pSprite.scriptInstanceList.add(me)
  41. end findSpriteChannel
  42.  
  43.  
  44. -- Removes the sprite from the score.
  45. on deleteSprite(me)
  46.   me.pSprite.scriptInstanceList = []
  47.   me.pSprite.visible = FALSE
  48.   channel(me.SpriteNum).removeScriptedSprite()
  49. end deleteSprite
  50.  
  51.  
  52. -- Removes the bitmaps from the "Characters" cast library.
  53. on deleteBitmaps(me)
  54.   position = me.spriteNum - 500
  55.   position = position * 12
  56.   position = position + 2
  57.   repeat with i = 1 to 12
  58.     member(position + (i - 1), "Characters").erase()
  59.   end repeat
  60. end deleteBitmaps
  61.  
  62.  
  63. -- Resets the bitmaps in the "Characters" cast library.
  64. on resetBitmaps(me)
  65.   directions = ["N", "S", "E", "W"]
  66.   position = me.spriteNum - 500
  67.   position = position * 12
  68.   position = position + 2  
  69.   repeat with frame = 1 to 3
  70.     repeat with direction = 1 to 4
  71.       member(position, "Characters").erase()
  72.       new(#bitmap, member(position, "Characters"))
  73.       member(position, "Characters").name = me.pUsername & "-" & directions[direction] & "-" & frame
  74.       member(position, "Characters").image = member("BlankSprite", "Characters").image
  75.       position = position + 1
  76.     end repeat
  77.   end repeat
  78. end resetBitmaps
  79.  
  80.  
  81. -- Draws the character's bitmaps.
  82. -- The appearance is based on the drawList passed.
  83. on renderBitmaps(me, drawList)
  84.   directions = ["N", "S", "E", "W"]
  85.   hair = drawList[1]
  86.   gender = drawList[2]
  87.   me.resetBitmaps()
  88.   repeat with frame = 1 to 3
  89.     repeat with direction = 1 to 4
  90.       characterMember = me.pUsername & "-" & directions[direction] & "-" & frame
  91.       hairMember = "Hair-" & hair & "-" & directions[direction] & "-" & frame
  92.       bodyMember = gender & "-Default-" & directions[direction] & "-" & frame
  93.       case (directions[direction]) of
  94.         "N":
  95.           member(characterMember, "Characters").image.copyPixels(member(bodyMember, "Character Angles").image, member(bodyMember, "Character Angles").rect, member(bodyMember, "Character Angles").rect, [#ink: 36, #blendLevel: 255, #bgcolor: 5, #color: 255])
  96.           member(characterMember, "Characters").image.copyPixels(member(hairMember, "Character Angles").image, member(hairMember, "Character Angles").rect, member(hairMember, "Character Angles").rect, [#ink: 36, #blendLevel: 255, #bgcolor: 5, #color: 255])
  97.         "S":
  98.           member(characterMember, "Characters").image.copyPixels(member(bodyMember, "Character Angles").image, member(bodyMember, "Character Angles").rect, member(bodyMember, "Character Angles").rect, [#ink: 36, #blendLevel: 255, #bgcolor: 5, #color: 255])
  99.           member(characterMember, "Characters").image.copyPixels(member(hairMember, "Character Angles").image, member(hairMember, "Character Angles").rect, member(hairMember, "Character Angles").rect, [#ink: 36, #blendLevel: 255, #bgcolor: 5, #color: 255])
  100.         "E":
  101.           member(characterMember, "Characters").image.copyPixels(member(bodyMember, "Character Angles").image, member(bodyMember, "Character Angles").rect, member(bodyMember, "Character Angles").rect, [#ink: 36, #blendLevel: 255, #bgcolor: 5, #color: 255])
  102.           member(characterMember, "Characters").image.copyPixels(member(hairMember, "Character Angles").image, member(hairMember, "Character Angles").rect, member(hairMember, "Character Angles").rect, [#ink: 36, #blendLevel: 255, #bgcolor: 5, #color: 255])
  103.         "W":
  104.           member(characterMember, "Characters").image.copyPixels(member(bodyMember, "Character Angles").image, member(bodyMember, "Character Angles").rect, member(bodyMember, "Character Angles").rect, [#ink: 36, #blendLevel: 255, #bgcolor: 5, #color: 255])
  105.           member(characterMember, "Characters").image.copyPixels(member(hairMember, "Character Angles").image, member(hairMember, "Character Angles").rect, member(hairMember, "Character Angles").rect, [#ink: 36, #blendLevel: 255, #bgcolor: 5, #color: 255])
  106.       end case
  107.     end repeat
  108.   end repeat
  109. end renderBitmaps
  110.  
  111.  
  112. -- Draws the character onto the stage.
  113. on drawCharacter(me, drawList)
  114.   me.renderBitmaps(drawList)
  115.   facing = drawList[4]
  116.   location = drawList[5]
  117.   position = convertPos(#XYToLoc, location[1], location[2])
  118.   case (facing) of:
  119.     #north: me.pSprite.member = member(me.pUsername & "-N-2", "Characters")
  120.     #south: me.pSprite.member = member(me.pUsername & "-S-2", "Characters")
  121.     #east: me.pSprite.member = member(me.pUsername & "-E-2", "Characters")
  122.     #west: me.pSprite.member = member(me.pUsername & "-W-2", "Characters")
  123.   end case
  124.   me.pSprite.locH = (position.locH - 16)
  125.   me.pSprite.locV = (position.locV - 32)
  126.   me.pSprite.visible = true
  127. end drawCharacter
  128.  
  129.  
  130. -- Moves the sprite.
  131. -- Direction is based on the current facing
  132. on walkSprite(me)
  133.   if (me.pSteps = 0) then me.pSteps = 8
  134.   me.pWalking = true
  135.   dontDraw = false
  136.   case (me.pSteps) of
  137.     8: form = 1
  138.     7: form = 1
  139.     6: form = 2
  140.     5: form = 2
  141.     4: form = 3
  142.     3: form = 3
  143.     2: form = 2
  144.     1: form = 2
  145.     otherwise: dontDraw = true
  146.   end case
  147.   case (me.pMovementQueue[1]) of
  148.     #north:
  149.       if not(dontDraw) then
  150.         me.pSprite.member = member(me.pUsername & "-N-" & form, "Characters")
  151.       end if
  152.       me.pSprite.locV = me.pSprite.locV - 4
  153.     #south:
  154.       if not(dontDraw) then
  155.         me.pSprite.member = member(me.pUsername & "-S-" & form, "Characters")
  156.       end if
  157.       me.pSprite.locV = me.pSprite.locV + 4
  158.     #east:
  159.       if not(dontDraw) then
  160.         me.pSprite.member = member(me.pUsername & "-E-" & form, "Characters")
  161.       end if
  162.       me.pSprite.locH = me.pSprite.locH + 4
  163.     #west:
  164.       if not(dontDraw) then
  165.         me.pSprite.member = member(me.pUsername & "-W-" & form, "Characters")
  166.       end if
  167.       me.pSprite.locH = me.pSprite.locH - 4
  168.   end case
  169.   me.pSteps = me.pSteps - 1
  170.   if (me.pSteps = 0) then
  171.     -- Removes movement from the movement queue.
  172.     me.pMovementQueue.deleteAt(1)
  173.     if (me.pUsername = gCharacterManager.getUsername()) then
  174.       position = convertPos(#LocToXY, me.pSprite.locH, me.pSprite.locV)
  175.       gCharacterManager.setMapLocation([position.x, position.y])
  176.     end if
  177.     me.pWalking = FALSE
  178.   end if
  179. end walkSprite
  180.  
  181.  
  182. -- Moves the sprite directly to a location on the stage.
  183. on moveSprite(me, x, y)
  184.   position = convertPos(#XYToLoc, x, y)
  185.   me.pSprite.locH = position.locH
  186.   me.pSprite.locV = position.locV
  187. end moveSprite
  188.  
  189.  
  190. -- Adds a movement command to the movement queue.
  191. -- The movement queue is stored as a linear list.
  192. on addMovement(me, movement)
  193.   me.pMovementQueue.add(movement)
  194. end addMovement
  195.  
  196.  
  197. -- Repeats itself if the movement queue is not completed.
  198. -- This ensures that all movement is completed correctly.
  199. on exitFrame(me)
  200.   count = me.pMovementQueue.count
  201.   if (count > 0) then
  202.     me.pWalking = TRUE
  203.     me.walkSprite()
  204.   end if
  205. end exitFrame
  206.  
  207.  
  208. -- A function used for left mouse clicks on the character sprite.
  209. on mouseUp(me)
  210.  _player.alert(me.pUsername)
  211. end mouseUp