TheoAllen

Theo - Object Circular Movement

May 4th, 2013
251
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 18.49 KB | None | 0 0
  1. # =============================================================================
  2. # THEOALLEN - WINDOW AND SPRITE CIRCULAR MOVEMENT
  3. # VERSION : 1.0
  4. # CONTACT : www.rpgmakerid.com
  5. # (This script documentation is written in informal indonesian language)
  6. # =============================================================================
  7. $imported = {} if $imported.nil?
  8. $imported[:Theo_Circular] = true
  9. # =============================================================================
  10. # CHANGE LOGS :
  11. # -----------------------------------------------------------------------------
  12. # 2013.05.04 - Bux fixed before release
  13. # 2013.04.30 - Finished script
  14. # 2013.04.29 - Started script
  15. # =============================================================================
  16. =begin
  17.  
  18.   PENGENALAN:
  19.   Script ini ngebikin suatu object sprite atau window bisa bikin gerakan muter
  20.   (circular) dengan pusat yg dah ditentuin. Pusat bisa berupa koordinat atau
  21.   sebuah object window atau sprite yang lain. Tentunya ini cuman buat sebagai
  22.   dasaran buat scripter aja. Bukan buat plug n play tanpa realisasi
  23.   ----------------------------------------------------------------------------
  24.   CARA PENGGUNAAN:
  25.   Movements:
  26.   - object.circle_move(degree[,dur])  >> muter object sekian derajat
  27.   - object.endless_circle(degree)     >> muter object tanpa henti
  28.  
  29.   Center point modifiers:
  30.   - object.center_coordinate(ox,oy)   >> Ngeset pusatnya ke koordinat tertentu
  31.   - object.center_distance(ox,oy)     >> Ngeset pusat berdasar jarak dari object
  32.   - object.center_obj(obj)            >> Ngeset object lain sebagai pusat
  33.  
  34.   Stop states :
  35.   - object.circle_freeze              >> ngefreeze object
  36.   - object.circle_unfreeze            >> ngeunfreeze object
  37.   - object.circle_frozen?             >> true kalo freeze
  38.   - object.stop                       >> ngestop endless rotate
  39.   - object.continue                   >> lanjutin endless rotate
  40.   - object.endless?                   >> true kalo state endless true
  41.   ----------------------------------------------------------------------------
  42.   TERMS OF USE:
  43.   Karena ini emang cuman buat tool para scripter, silahkan2 aja kalo mo dipake.
  44.   Mau komersil juga boleh. Btw, kalo ada ide trus mo ngembangil ni modul
  45.   monggo terserah. Gw mah dmen banget kalo ada yg mo ngembangin script gw yg
  46.   satu ini. Tapi tetep kredit ya? \=w=/
  47.  
  48. =end
  49. # =============================================================================
  50. # REDEFINE MATH MODULE (jangan dihapus modul ini!) :
  51. # -----------------------------------------------------------------------------
  52. # Well, karena gw kesusahan kalo perhitungan pake radian, jadinya gw bikin
  53. # fungsi konvert dari derajat ke radian dan sebaliknya :P
  54. # -----------------------------------------------------------------------------
  55. # - Math.radian(degree) >> konvert derajat ke radian
  56. # - Math.degree(radian) >> konvert radian ke derajat
  57. # =============================================================================
  58. module Math
  59.   # ---------------------------------------------------------------------------
  60.   # Derajat >> Radian
  61.   # ---------------------------------------------------------------------------
  62.   def self.radian(degree)
  63.     return (degree.to_f/180) * Math::PI
  64.   end
  65.   # ---------------------------------------------------------------------------
  66.   # Radian >> Derajat
  67.   # ---------------------------------------------------------------------------
  68.   def self.degree(radian)
  69.     return (radian.to_f/Math::PI) * 180
  70.   end
  71. end
  72. # =============================================================================
  73. # Module THEO::Circular (diimplement ke window ama sprite)
  74. # =============================================================================
  75. module THEO
  76.   module Circular
  77.     # =========================================================================
  78.     # Class Circular Object ~
  79.     # -------------------------------------------------------------------------
  80.     # Class untuk ngehandle perputaran object.
  81.     # Beberapa instance variablenya :
  82.     # - obj             >> refers ke object yg mo digerakin
  83.     # - center_obj      >> object yg jadi referensi pusat (default : nil)
  84.     # - ox              >> koordinat x dari pusat perputaran
  85.     # - oy              >> koordinat y dari pusar perputaran
  86.     # - degree_dest     >> derajat yg jadi tujuan
  87.     # - current_degree  >> derajat saat itu
  88.     # - speed           >> nilai perubahan derajat per frame
  89.     # - radius          >> jarak dari pusat ke object (diitung otomatis)
  90.     # - endless         >> akan update terus kale bernilai true
  91.     # - freeze          >> akan berhenti berputar kalo true
  92.     # -------------------------------------------------------------------------
  93.     # freeze lebih superior daripada endless. freeze akan menghentikan
  94.     # pergerakan object apapun yang terjadi
  95.     # =========================================================================
  96.     class Circular_Obj
  97.       attr_reader :ox
  98.       attr_reader :oy
  99.       attr_reader :center_obj
  100.       attr_reader :obj
  101.       # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  102.       # inisialisasi object
  103.       # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  104.       def initialize(obj,ox,oy,center_obj)
  105.         @obj = obj
  106.         @center_obj = center_obj if can_move?(center_obj)
  107.         @ox = ox
  108.         @oy = oy
  109.         @speed = 0
  110.         @endless = false
  111.         @freeze = false
  112.         refresh_info
  113.       end
  114.       # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  115.       # Ngerefresh info derajat ama radius
  116.       # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  117.       def refresh_info
  118.         @radius = radius
  119.         @degree_dest = @current_degree = get_degree
  120.       end
  121.       # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  122.       # Ngeset object sebagai pusat
  123.       # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  124.       def center_obj=(center)
  125.         return unless can_move?(center)
  126.         @center_obj = center
  127.         refresh_info
  128.       end
  129.       # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  130.       # Ngeset koordinat x titik pusat
  131.       # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  132.       def ox=(ox)
  133.         @ox = ox
  134.         refresh_info
  135.       end
  136.       # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  137.       # Ngeset koordinat y titik pusat
  138.       # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  139.       def oy=(oy)
  140.         @oy = oy
  141.         refresh_info
  142.       end
  143.       # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  144.       # Ngecek kemampuan object untuk bergerak
  145.       # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  146.       def can_move?(obj)
  147.         obj.is_a?(Window) || obj.is_a?(Sprite)
  148.       end
  149.       # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  150.       # Muter object beberapa derajat
  151.       # -----------------------------------------------------------------------
  152.       # - degree    >> derajat perputaran
  153.       # - duration  >> waktu yg dibutuhkan untuk berputar (frame)
  154.       # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  155.       def circle_move(degree,duration)
  156.         return if endless?
  157.         @degree_dest = (@current_degree + degree)
  158.         @speed = (@degree_dest - @current_degree) / duration.to_f
  159.       end
  160.       # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  161.       # Perputaran tanpa batas, ampe dihentiin
  162.       # -----------------------------------------------------------------------
  163.       # - speed >> perubahan derajat tiap framenya
  164.       # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  165.       def endless_circle(speed)
  166.         @speed = speed
  167.         @endless = true
  168.       end
  169.       # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  170.       # Menghitung derajat dari titik pusat
  171.       # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  172.       def get_degree
  173.         Math.degree(Math.atan2(range_y,range_x)) rescue 0
  174.       end
  175.       # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  176.       # Jarak dari koordinat x object ke koordinat x pusat
  177.       # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  178.       def range_x
  179.         @obj.x - center_x
  180.       end
  181.       # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  182.       # Jarak dari koordinat y object ke koordinat y pusat
  183.       # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  184.       def range_y
  185.         @obj.y - center_y
  186.       end
  187.       # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  188.       # Ngambil koordinat x pusat
  189.       # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  190.       def center_x
  191.         @center_obj.nil? ? @ox : @center_obj.x
  192.       end
  193.       # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  194.       # Ngambil koordinat y pusat
  195.       # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  196.       def center_y
  197.         @center_obj.nil? ? @oy : @center_obj.y
  198.       end
  199.       # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  200.       # Menghitung radius / jari2 dari titik pusat
  201.       # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  202.       def radius
  203.         Math.sqrt((range_x**2) + (range_y**2))
  204.       end
  205.       # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  206.       # Update pergerakan circle (dipangggil tiap frame)
  207.       # -----------------------------------------------------------------------
  208.       # - Kalo freeze >> ga ngelakuin apa2
  209.       # - Kalo endless >> terus
  210.       # - Kalo muter >> terus
  211.       # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  212.       def update_circle
  213.         return if circle_frozen?
  214.         return unless rotate? || @endless
  215.         @current_degree += @speed
  216.         update_x
  217.         update_y
  218.         @degree_dest = @current_degree if @endless
  219.       end
  220.       # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  221.       # Ngecek perputaran
  222.       # -----------------------------------------------------------------------
  223.       # - True  >> Derajat tujuan tidak sama dengan derajat saat itu
  224.       # - False >> Derajat tujuan sama dengan derajat saat itu
  225.       # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  226.       def rotate?
  227.         return @current_degree != @degree_dest
  228.       end
  229.       # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  230.       # Update posisi koordinat x object
  231.       # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  232.       def update_x
  233.         @obj.x = center_x + (@radius * Math.cos(Math.radian(@current_degree))).round
  234.       end
  235.       # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  236.       # Update posisi koordinat y object
  237.       # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  238.       def update_y
  239.         @obj.y = center_y + (@radius * Math.sin(Math.radian(@current_degree))).round
  240.       end
  241.       # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  242.       # Ngefreeze object buat muter
  243.       # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  244.       def circle_freeze
  245.         @freeze = true
  246.       end
  247.       # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  248.       # Ngeunfreeze object buat buat muter
  249.       # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  250.       def circle_unfreeze
  251.         @freeze = false
  252.       end
  253.       # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  254.       # Ngecek freeze state
  255.       # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  256.       def circle_frozen?
  257.         @freeze
  258.       end
  259.       # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  260.       # Ngestop pergerakan endless
  261.       # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  262.       def stop
  263.         @endless = false
  264.       end
  265.       # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  266.       # Ngelanjutin pergerakan endless
  267.       # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  268.       def continue
  269.         @endless = true
  270.       end
  271.       # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  272.       # Ngecek endless state
  273.       # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  274.       def endless?
  275.         @endless
  276.       end
  277.       # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  278.       # Akhir dari Class Circular object ~
  279.       # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  280.     end
  281.     # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  282.     # Ngeset object circle ~
  283.     # -------------------------------------------------------------------------
  284.     # - obj         >> object asli
  285.     # - ox          >> koordinat x pusat putaran
  286.     # - oy          >> koordinat y pusat putaran
  287.     # - center_obj  >> object yg jadi pusat (lebih superior dari ox,oy)
  288.     # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  289.     def set_circle(obj,ox = 0,oy = 0,center_obj = nil)
  290.       @circle = Circular_Obj.new(obj,ox,oy,center_obj)
  291.     end
  292.     # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  293.     # Stop
  294.     # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  295.     def stop
  296.       @circle.stop
  297.     end
  298.     # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  299.     # Ngelanjut
  300.     # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  301.     def continue
  302.       @circle.continue
  303.     end
  304.     # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  305.     # Apakah gerakannya tanpa henti?
  306.     # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  307.     def endless?
  308.       @circle.endless?
  309.     end
  310.     # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  311.     # Muter object dengan masukan derajat (misal nambah 30 derajat)
  312.     # -------------------------------------------------------------------------
  313.     # - degree  >> tambahan derajat
  314.     # - dur     >> durasi (dalam frame)
  315.     # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  316.     def circle_move(degree, dur = Graphics.frame_rate)
  317.       @circle.circle_move(degree,dur)
  318.     end
  319.     # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  320.     # Muter object tanpa henti
  321.     # -------------------------------------------------------------------------
  322.     # - speed >> kecepatan muter dalam derajat
  323.     # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  324.     def endless_circle(speed)
  325.       @circle.endless_circle(speed)
  326.     end
  327.     # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  328.     # Ngefreeze object buat diputer
  329.     # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  330.     def circle_freeze
  331.       @circle.circle_freeze
  332.     end
  333.     # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  334.     # Ngeunfreeze object
  335.     # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  336.     def circle_unfreeze
  337.       @circle.circle_unfreeze
  338.     end
  339.     # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  340.     # Apakah lagi difreeze?
  341.     # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  342.     def circle_frozed?
  343.       @circle.circle_frozen?
  344.     end
  345.     # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  346.     # Update perputaran (dipanggil tiap frame)
  347.     # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  348.     def update_circle
  349.       @circle.update_circle
  350.     end
  351.     # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  352.     # Lagi muterkah?
  353.     # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  354.     def rotating?
  355.       @circle.rotate?
  356.     end
  357.     # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  358.     # Ngeset koordinat center
  359.     # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  360.     def center_coordinate(ox,oy)
  361.       @circle.ox = ox
  362.       @circle.oy = oy
  363.     end
  364.     # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  365.     # Ngeser koordinat center dengan jarak dari object
  366.     # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  367.     def center_distance(ox,oy)
  368.       @circle.ox = @circle.obj.x + ox
  369.       @circle.oy = @circle.obj.y + oy
  370.     end
  371.     # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  372.     # Ngeset object sebagai pusat utama
  373.     # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  374.     def center_obj(obj)
  375.       @circle.center_obj = obj
  376.     end
  377.     # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  378.     def refresh_info
  379.       @circle.refresh_info
  380.     end
  381.    
  382.   end
  383. end
  384. # =============================================================================
  385. # Akhir dari Module THEO::Movement
  386. # -----------------------------------------------------------------------------
  387. # Class Window
  388. # =============================================================================
  389. class Window
  390.  
  391.   include THEO::Circular
  392.  
  393.   alias theolized_circle_window_init initialize
  394.   def initialize(x,y,width,height)
  395.     theolized_circle_window_init(x,y,width,height)
  396.     set_circle(self,x,y)
  397.   end
  398.  
  399.   alias window_circle_update update
  400.   def update
  401.     window_circle_update
  402.     update_circle
  403.   end
  404.  
  405. end
  406. # =============================================================================
  407. # Class Sprite
  408. # =============================================================================
  409. class Sprite
  410.  
  411.   include THEO::Circular
  412.  
  413.   alias theolized_circle_init initialize
  414.   def initialize(viewport = nil)
  415.     theolized_circle_init(viewport)
  416.     set_circle(self,x,y)
  417.   end
  418.  
  419.   alias sprite_circle_update update
  420.   def update
  421.     sprite_circle_update
  422.     update_circle
  423.   end
  424.  
  425.  
  426. end
Advertisement
Add Comment
Please, Sign In to add comment