data.rb 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  1. $game_objects = [
  2. ["angrystone", "images/creatures/angrystone/angrystone.sprite", :sprite,
  3. proc{|data, sexpr| BadGuy.new("angrystone")}],
  4. ["jumpy", "images/creatures/jumpy/left-middle.png", :sprite,
  5. proc{|data, sexpr| BadGuy.new("jumpy")}],
  6. ["snowball", "images/creatures/snowball/left-0.png", :sprite,
  7. proc{|data, sexpr| BadGuy.new("snowball")}],
  8. ["mriceblock", "images/creatures/mr_iceblock/left-0.png", :sprite,
  9. proc{|data, sexpr| BadGuy.new("mriceblock")}],
  10. ["mrbomb", "images/creatures/mr_bomb/left-0.png", :sprite,
  11. proc{|data, sexpr| BadGuy.new("mrbomb")}],
  12. ["flame", "images/creatures/flame/flame-0.png", :sprite,
  13. proc{|data, sexpr| BadGuy.new("flame")}],
  14. ["stalactite", "images/creatures/stalactite/falling.png", :sprite,
  15. proc{|data, sexpr| BadGuy.new("stalactite")}],
  16. ["fish", "images/creatures/fish/left-0.png", :sprite,
  17. proc{|data, sexpr| BadGuy.new("fish")}],
  18. ["flyingsnowball", "images/creatures/flying_snowball/left-0.png", :sprite,
  19. proc{|data, sexpr| BadGuy.new("flyingsnowball")}],
  20. ["bouncingsnowball", "images/creatures/bouncing_snowball/left-0.png", :sprite,
  21. proc{|data, sexpr| BadGuy.new("bouncingsnowball")}],
  22. ["spiky", "images/creatures/spiky/left-0.png", :sprite,
  23. proc{|data, sexpr| BadGuy.new("spiky")}],
  24. ["mrtree", "images/creatures/mr_tree/walk-left-1.png", :sprite,
  25. proc{|data, sexpr| BadGuy.new("mrtree")}],
  26. ["poisonivy", "images/creatures/poison_ivy/left-0.png", :sprite,
  27. proc{|data, sexpr| BadGuy.new("poisonivy")}],
  28. ["zeekling", "images/creatures/zeekling/left-0.png", :sprite,
  29. proc{|data, sexpr| BadGuy.new("zeekling")}],
  30. ["kugelblitz", "images/creatures/kugelblitz/flying-0.png", :sprite,
  31. proc{|data, sexpr| BadGuy.new("kugelblitz")}],
  32. ["dispenser", "images/creatures/dispenser/working.png", :sprite,
  33. proc{|data, sexpr| Dispenser.new(data, sexpr)}],
  34. ["yeti", "images/creatures/yeti/yeti.png", :sprite,
  35. proc{|data, sexpr| BadGuy.new("yeti")}],
  36. ["stalactite_yeti", "images/engine/editor/stalactite_yeti.png", :sprite,
  37. proc{|data, sexpr| BadGuy.new("yeti_stalactite")}],
  38. ["spawnpoint", "images/engine/editor/spawnpoint.png", :sprite,
  39. proc{|data, sexpr| SpawnPoint.new(data, sexpr)}],
  40. ["ambient_sound", "images/engine/editor/ambientsound.png", :rect,
  41. proc{|data, sexpr| AmbientSound.new(data, sexpr)}],
  42. ["door", "images/objects/door/door-0.png", :sprite,
  43. proc{|data, sexpr| Door.new("door", data, sexpr)}],
  44. # ["hatch", "images/objects/hatch/hatch-0.png", :sprite,
  45. # proc{|data, sexpr| Door.new("hatch", data, sexpr)}],
  46. ["trampoline", "images/objects/trampoline/trampoline1-0.png", :sprite,
  47. proc{|data, sexpr| BadGuy.new("trampoline")}],
  48. # ["bell", "images/objects/bell/bell.sprite", :sprite,
  49. # proc{|data, sexpr| SimpleObject.new("bell")}],
  50. ["rock", "images/tiles/blocks/block11.png", :sprite,
  51. proc{|data, sexpr| SimpleObject.new("rock")}],
  52. ["unstable_tile", "images/objects/unstable_tile/crumbling-1.png", :sprite,
  53. proc{|data, sexpr| SimpleTileObject.new(data, "unstable_tile")}],
  54. ["infoblock", "images/engine/editor/infoblock.png", :sprite,
  55. proc{|data, sexpr| InfoBlock.new(data, sexpr)}],
  56. ["powerup", "images/engine/editor/powerup.png", :sprite,
  57. proc{|data, sexpr| Powerup.new(data, sexpr)}],
  58. ["secretarea", "images/engine/editor/secretarea.png", :rect,
  59. proc{|data, sexpr| SecretArea.new(data, sexpr)}],
  60. ["sequencetrigger", "images/engine/editor/sequencetrigger.png", :rect,
  61. proc{|data, sexpr| SequenceTrigger.new(data, sexpr)}],
  62. ["background", "images/engine/editor/background.png", :sprite,
  63. proc{|data, sexpr| Background.new(data, sexpr)}],
  64. ["gradient", "images/engine/editor/gradient.png", :sprite,
  65. proc{|data, sexpr| Gradient.new(data, sexpr)}],
  66. ["particles-snow", "images/engine/editor/snow.png", :sprite,
  67. proc{|data, sexpr| ParticleSystem.new("snow", sexpr)}],
  68. ["particles-clouds", "images/engine/editor/clouds.png", :sprite,
  69. proc{|data, sexpr| ParticleSystem.new("clouds", sexpr)}],
  70. ["particles-rain", "images/engine/editor/rain.png", :sprite,
  71. proc{|data, sexpr| ParticleSystem.new("rain", sexpr)}],
  72. ["leveltime", "images/engine/editor/clock.png", :sprite,
  73. proc{|data, sexpr| LevelTime.new(sexpr)}],
  74. ["point", "images/engine/editor/point.png", :sprite,
  75. proc{|data, sexpr| SimpleObject.new("point")}],
  76. ["platform", "images/objects/flying_platform/flying_platform-0.png", :sprite,
  77. proc{|data, sexpr| Platform.new(data, sexpr)}],
  78. ["scriptedobject", "images/engine/editor/scriptedobject.png", :sprite,
  79. proc{|data, sexpr| ScriptedObject.new(data, sexpr)}]
  80. ]
  81. def create_gameobject_from_data(editormap, objmap, name, sexpr)
  82. # Creates a gameobject from the given sexpr: "snowball", ((x 5) (y 5))
  83. object = $game_objects.find {|x| x[0].to_sym == name}
  84. if object != nil then
  85. (name, image, type, func) = object
  86. x = get_value_from_tree(["x", "_"], sexpr, 0)
  87. y = get_value_from_tree(["y", "_"], sexpr, 0)
  88. create_gameobject(editormap, objmap, object, CL_Pointf.new(x, y), sexpr)
  89. else
  90. print "Error: Couldn't resolve object type: ", name, "\n"
  91. print "Sector: Unhandled tag: ", name, "\n"
  92. end
  93. end
  94. def create_gameobject(editormap, objmap, data, pos, sexpr = [])
  95. (name, spritefile, type, func) = data
  96. # Creates a gameobject the given position, data is the entry in the $game_objects table
  97. case type
  98. when :sprite
  99. sprite = load_cl_sprite($datadir + spritefile)
  100. obj = ObjMapSpriteObject.new(sprite, pos, make_metadata(nil))
  101. gobj = func.call(obj, sexpr)
  102. obj.to_object.set_metadata(make_metadata(gobj))
  103. gobj.set_obj(obj)
  104. when :rect
  105. print "NewRect", pos.x, " -", pos.y, "\n"
  106. obj = ObjMapRectObject.new(CL_Rect.new(CL_Point.new(pos.x.to_i, pos.y.to_i), CL_Size.new(64, 64)),
  107. CL_Color.new(0, 0, 255, 128),
  108. make_metadata(nil))
  109. gobj = data[3].call(obj, sexpr)
  110. obj.to_object.set_metadata(make_metadata(gobj))
  111. else
  112. raise "Error: Unknown object type dropped: '#{data.inspect}'"
  113. end
  114. cmd = ObjectAddCommand.new(objmap)
  115. cmd.add_object(obj.to_object);
  116. editormap.execute(cmd.to_command());
  117. return obj
  118. end
  119. $solid_itiles = [10, 11, 12, 13, 14, 15, 20, 21, 22, 23, 30, 31, 113, 114]
  120. $itile_conditions = [
  121. [0, 0, 0, 0, 0, 1, 0, 1, 1, 7],
  122. [0, 0, 1, 0, 0, 1, 0, 1, 1, 7],
  123. [0, 0, 0, 0, 0, 0, 0, 1, 1, 7],
  124. [0, 0, 0, 0, 0, 0, 1, 1, 1, 8],
  125. [0, 0, 0, 0, 0, 0, 1, 1, 0, 9],
  126. [0, 1, 1, 0, 0, 0, 0, 0, 0, 16],
  127. [1, 1, 1, 0, 0, 0, 0, 0, 0, 17],
  128. [1, 1, 1, 1, 0, 0, 0, 0, 0, 17],
  129. [1, 1, 1, 0, 0, 1, 0, 0, 0, 17],
  130. [1, 1, 1, 1, 0, 0, 1, 0, 0, 17],
  131. [1, 1, 1, 0, 0, 1, 0, 0, 1, 17],
  132. [1, 1, 0, 0, 0, 0, 0, 0, 0, 18],
  133. [0, 1, 1, 0, 1, 1, 0, 0, 0, 10],
  134. [1, 1, 1, 0, 1, 1, 0, 0, 0, 11],
  135. [1, 1, 0, 1, 1, 0, 0, 0, 0, 12],
  136. [0, 1, 1, 0, 1, 1, 0, 1, 1, 10],
  137. [1, 1, 1, 1, 1, 1, 1, 1, 1, 11],
  138. [1, 1, 0, 1, 1, 0, 1, 1, 0, 12],
  139. [0, 0, 0, 0, 1, 1, 0, 1, 1, 13],
  140. [0, 0, 0, 1, 1, 1, 1, 1, 1, 14],
  141. [0, 0, 0, 1, 1, 0, 1, 1, 0, 15],
  142. [1, 0, 0, 1, 1, 1, 1, 1, 1, 20],
  143. [1, 1, 0, 1, 1, 0, 1, 1, 1, 21],
  144. [0, 1, 1, 0, 1, 1, 1, 1, 1, 22],
  145. [0, 0, 1, 1, 1, 1, 1, 1, 1, 23],
  146. [1, 1, 1, 1, 1, 0, 1, 1, 0, 30],
  147. [1, 1, 1, 0, 1, 1, 0, 1, 1, 31],
  148. [0, 0, 0, 1, 1, 0, 1, 1, 1, 113],
  149. [0, 0, 0, 0, 1, 1, 1, 1, 1, 114],
  150. ]
  151. # EOF #