rgss3_default_scripts 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (117) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +9 -0
  3. data/Gemfile +4 -0
  4. data/README.md +9 -0
  5. data/Rakefile +2 -0
  6. data/lib/rgss3_default_scripts.rb +109 -0
  7. data/lib/rgss3_default_scripts/BattleManager.rb +392 -0
  8. data/lib/rgss3_default_scripts/Cache.rb +134 -0
  9. data/lib/rgss3_default_scripts/DataManager.rb +267 -0
  10. data/lib/rgss3_default_scripts/Game_Action.rb +262 -0
  11. data/lib/rgss3_default_scripts/Game_ActionResult.rb +159 -0
  12. data/lib/rgss3_default_scripts/Game_Actor.rb +696 -0
  13. data/lib/rgss3_default_scripts/Game_Actors.rb +22 -0
  14. data/lib/rgss3_default_scripts/Game_BaseItem.rb +51 -0
  15. data/lib/rgss3_default_scripts/Game_Battler.rb +824 -0
  16. data/lib/rgss3_default_scripts/Game_BattlerBase.rb +731 -0
  17. data/lib/rgss3_default_scripts/Game_Character.rb +396 -0
  18. data/lib/rgss3_default_scripts/Game_CharacterBase.rb +443 -0
  19. data/lib/rgss3_default_scripts/Game_CommonEvent.rb +41 -0
  20. data/lib/rgss3_default_scripts/Game_Enemy.rb +264 -0
  21. data/lib/rgss3_default_scripts/Game_Event.rb +308 -0
  22. data/lib/rgss3_default_scripts/Game_Follower.rb +74 -0
  23. data/lib/rgss3_default_scripts/Game_Followers.rb +112 -0
  24. data/lib/rgss3_default_scripts/Game_Interpreter.rb +1413 -0
  25. data/lib/rgss3_default_scripts/Game_Map.rb +704 -0
  26. data/lib/rgss3_default_scripts/Game_Message.rb +101 -0
  27. data/lib/rgss3_default_scripts/Game_Party.rb +418 -0
  28. data/lib/rgss3_default_scripts/Game_Picture.rb +161 -0
  29. data/lib/rgss3_default_scripts/Game_Pictures.rb +28 -0
  30. data/lib/rgss3_default_scripts/Game_Player.rb +488 -0
  31. data/lib/rgss3_default_scripts/Game_Screen.rb +234 -0
  32. data/lib/rgss3_default_scripts/Game_SelfSwitches.rb +35 -0
  33. data/lib/rgss3_default_scripts/Game_Switches.rb +35 -0
  34. data/lib/rgss3_default_scripts/Game_System.rb +122 -0
  35. data/lib/rgss3_default_scripts/Game_Temp.rb +45 -0
  36. data/lib/rgss3_default_scripts/Game_Timer.rb +56 -0
  37. data/lib/rgss3_default_scripts/Game_Troop.rb +205 -0
  38. data/lib/rgss3_default_scripts/Game_Unit.rb +131 -0
  39. data/lib/rgss3_default_scripts/Game_Variables.rb +34 -0
  40. data/lib/rgss3_default_scripts/Game_Vehicle.rb +193 -0
  41. data/lib/rgss3_default_scripts/SceneManager.rb +94 -0
  42. data/lib/rgss3_default_scripts/Scene_Base.rb +132 -0
  43. data/lib/rgss3_default_scripts/Scene_Battle.rb +693 -0
  44. data/lib/rgss3_default_scripts/Scene_Debug.rb +87 -0
  45. data/lib/rgss3_default_scripts/Scene_End.rb +61 -0
  46. data/lib/rgss3_default_scripts/Scene_Equip.rb +144 -0
  47. data/lib/rgss3_default_scripts/Scene_File.rb +203 -0
  48. data/lib/rgss3_default_scripts/Scene_Gameover.rb +85 -0
  49. data/lib/rgss3_default_scripts/Scene_Item.rb +75 -0
  50. data/lib/rgss3_default_scripts/Scene_ItemBase.rb +147 -0
  51. data/lib/rgss3_default_scripts/Scene_Load.rb +40 -0
  52. data/lib/rgss3_default_scripts/Scene_Map.rb +276 -0
  53. data/lib/rgss3_default_scripts/Scene_Menu.rb +127 -0
  54. data/lib/rgss3_default_scripts/Scene_MenuBase.rb +63 -0
  55. data/lib/rgss3_default_scripts/Scene_Name.rb +32 -0
  56. data/lib/rgss3_default_scripts/Scene_Save.rb +38 -0
  57. data/lib/rgss3_default_scripts/Scene_Shop.rb +299 -0
  58. data/lib/rgss3_default_scripts/Scene_Skill.rb +108 -0
  59. data/lib/rgss3_default_scripts/Scene_Status.rb +25 -0
  60. data/lib/rgss3_default_scripts/Scene_Title.rb +137 -0
  61. data/lib/rgss3_default_scripts/Sound.rb +135 -0
  62. data/lib/rgss3_default_scripts/Sprite_Base.rb +232 -0
  63. data/lib/rgss3_default_scripts/Sprite_Battler.rb +231 -0
  64. data/lib/rgss3_default_scripts/Sprite_Character.rb +226 -0
  65. data/lib/rgss3_default_scripts/Sprite_Picture.rb +82 -0
  66. data/lib/rgss3_default_scripts/Sprite_Timer.rb +77 -0
  67. data/lib/rgss3_default_scripts/Spriteset_Battle.rb +389 -0
  68. data/lib/rgss3_default_scripts/Spriteset_Map.rb +273 -0
  69. data/lib/rgss3_default_scripts/Spriteset_Weather.rb +184 -0
  70. data/lib/rgss3_default_scripts/Vocab.rb +145 -0
  71. data/lib/rgss3_default_scripts/Window_ActorCommand.rb +78 -0
  72. data/lib/rgss3_default_scripts/Window_Base.rb +571 -0
  73. data/lib/rgss3_default_scripts/Window_BattleActor.rb +38 -0
  74. data/lib/rgss3_default_scripts/Window_BattleEnemy.rb +70 -0
  75. data/lib/rgss3_default_scripts/Window_BattleItem.rb +40 -0
  76. data/lib/rgss3_default_scripts/Window_BattleLog.rb +425 -0
  77. data/lib/rgss3_default_scripts/Window_BattleSkill.rb +34 -0
  78. data/lib/rgss3_default_scripts/Window_BattleStatus.rb +111 -0
  79. data/lib/rgss3_default_scripts/Window_ChoiceList.rb +88 -0
  80. data/lib/rgss3_default_scripts/Window_Command.rb +152 -0
  81. data/lib/rgss3_default_scripts/Window_DebugLeft.rb +104 -0
  82. data/lib/rgss3_default_scripts/Window_DebugRight.rb +119 -0
  83. data/lib/rgss3_default_scripts/Window_EquipCommand.rb +36 -0
  84. data/lib/rgss3_default_scripts/Window_EquipItem.rb +78 -0
  85. data/lib/rgss3_default_scripts/Window_EquipSlot.rb +111 -0
  86. data/lib/rgss3_default_scripts/Window_EquipStatus.rb +97 -0
  87. data/lib/rgss3_default_scripts/Window_GameEnd.rb +38 -0
  88. data/lib/rgss3_default_scripts/Window_Gold.rb +47 -0
  89. data/lib/rgss3_default_scripts/Window_Help.rb +43 -0
  90. data/lib/rgss3_default_scripts/Window_HorzCommand.rb +106 -0
  91. data/lib/rgss3_default_scripts/Window_ItemCategory.rb +54 -0
  92. data/lib/rgss3_default_scripts/Window_ItemList.rb +117 -0
  93. data/lib/rgss3_default_scripts/Window_KeyItem.rb +55 -0
  94. data/lib/rgss3_default_scripts/Window_MapName.rb +96 -0
  95. data/lib/rgss3_default_scripts/Window_MenuActor.rb +43 -0
  96. data/lib/rgss3_default_scripts/Window_MenuCommand.rb +106 -0
  97. data/lib/rgss3_default_scripts/Window_MenuStatus.rb +85 -0
  98. data/lib/rgss3_default_scripts/Window_Message.rb +397 -0
  99. data/lib/rgss3_default_scripts/Window_NameEdit.rb +129 -0
  100. data/lib/rgss3_default_scripts/Window_NameInput.rb +253 -0
  101. data/lib/rgss3_default_scripts/Window_NumberInput.rb +148 -0
  102. data/lib/rgss3_default_scripts/Window_PartyCommand.rb +47 -0
  103. data/lib/rgss3_default_scripts/Window_SaveFile.rb +69 -0
  104. data/lib/rgss3_default_scripts/Window_ScrollText.rb +90 -0
  105. data/lib/rgss3_default_scripts/Window_Selectable.rb +442 -0
  106. data/lib/rgss3_default_scripts/Window_ShopBuy.rb +115 -0
  107. data/lib/rgss3_default_scripts/Window_ShopCommand.rb +36 -0
  108. data/lib/rgss3_default_scripts/Window_ShopNumber.rb +137 -0
  109. data/lib/rgss3_default_scripts/Window_ShopSell.rb +27 -0
  110. data/lib/rgss3_default_scripts/Window_ShopStatus.rb +124 -0
  111. data/lib/rgss3_default_scripts/Window_SkillCommand.rb +76 -0
  112. data/lib/rgss3_default_scripts/Window_SkillList.rb +121 -0
  113. data/lib/rgss3_default_scripts/Window_SkillStatus.rb +38 -0
  114. data/lib/rgss3_default_scripts/Window_Status.rb +125 -0
  115. data/lib/rgss3_default_scripts/Window_TitleCommand.rb +45 -0
  116. data/rgss3_default_scripts.gemspec +23 -0
  117. metadata +186 -0
@@ -0,0 +1,108 @@
1
+ #==============================================================================
2
+ # ** Scene_Skill
3
+ #------------------------------------------------------------------------------
4
+ # This class performs skill screen processing. Skills are handled as items for
5
+ # the sake of process sharing.
6
+ #==============================================================================
7
+
8
+ class Scene_Skill < Scene_ItemBase
9
+ #--------------------------------------------------------------------------
10
+ # * Start Processing
11
+ #--------------------------------------------------------------------------
12
+ def start
13
+ super
14
+ create_help_window
15
+ create_command_window
16
+ create_status_window
17
+ create_item_window
18
+ end
19
+ #--------------------------------------------------------------------------
20
+ # * Create Command Window
21
+ #--------------------------------------------------------------------------
22
+ def create_command_window
23
+ wy = @help_window.height
24
+ @command_window = Window_SkillCommand.new(0, wy)
25
+ @command_window.viewport = @viewport
26
+ @command_window.help_window = @help_window
27
+ @command_window.actor = @actor
28
+ @command_window.set_handler(:skill, method(:command_skill))
29
+ @command_window.set_handler(:cancel, method(:return_scene))
30
+ @command_window.set_handler(:pagedown, method(:next_actor))
31
+ @command_window.set_handler(:pageup, method(:prev_actor))
32
+ end
33
+ #--------------------------------------------------------------------------
34
+ # * Create Status Window
35
+ #--------------------------------------------------------------------------
36
+ def create_status_window
37
+ y = @help_window.height
38
+ @status_window = Window_SkillStatus.new(@command_window.width, y)
39
+ @status_window.viewport = @viewport
40
+ @status_window.actor = @actor
41
+ end
42
+ #--------------------------------------------------------------------------
43
+ # * Create Item Window
44
+ #--------------------------------------------------------------------------
45
+ def create_item_window
46
+ wx = 0
47
+ wy = @status_window.y + @status_window.height
48
+ ww = Graphics.width
49
+ wh = Graphics.height - wy
50
+ @item_window = Window_SkillList.new(wx, wy, ww, wh)
51
+ @item_window.actor = @actor
52
+ @item_window.viewport = @viewport
53
+ @item_window.help_window = @help_window
54
+ @item_window.set_handler(:ok, method(:on_item_ok))
55
+ @item_window.set_handler(:cancel, method(:on_item_cancel))
56
+ @command_window.skill_window = @item_window
57
+ end
58
+ #--------------------------------------------------------------------------
59
+ # * Get Skill's User
60
+ #--------------------------------------------------------------------------
61
+ def user
62
+ @actor
63
+ end
64
+ #--------------------------------------------------------------------------
65
+ # * [Skill] Command
66
+ #--------------------------------------------------------------------------
67
+ def command_skill
68
+ @item_window.activate
69
+ @item_window.select_last
70
+ end
71
+ #--------------------------------------------------------------------------
72
+ # * Item [OK]
73
+ #--------------------------------------------------------------------------
74
+ def on_item_ok
75
+ @actor.last_skill.object = item
76
+ determine_item
77
+ end
78
+ #--------------------------------------------------------------------------
79
+ # * Item [Cancel]
80
+ #--------------------------------------------------------------------------
81
+ def on_item_cancel
82
+ @item_window.unselect
83
+ @command_window.activate
84
+ end
85
+ #--------------------------------------------------------------------------
86
+ # * Play SE When Using Item
87
+ #--------------------------------------------------------------------------
88
+ def play_se_for_item
89
+ Sound.play_use_skill
90
+ end
91
+ #--------------------------------------------------------------------------
92
+ # * Use Item
93
+ #--------------------------------------------------------------------------
94
+ def use_item
95
+ super
96
+ @status_window.refresh
97
+ @item_window.refresh
98
+ end
99
+ #--------------------------------------------------------------------------
100
+ # * Change Actors
101
+ #--------------------------------------------------------------------------
102
+ def on_actor_change
103
+ @command_window.actor = @actor
104
+ @status_window.actor = @actor
105
+ @item_window.actor = @actor
106
+ @command_window.activate
107
+ end
108
+ end
@@ -0,0 +1,25 @@
1
+ #==============================================================================
2
+ # ** Scene_Status
3
+ #------------------------------------------------------------------------------
4
+ # This class performs the status screen processing.
5
+ #==============================================================================
6
+
7
+ class Scene_Status < Scene_MenuBase
8
+ #--------------------------------------------------------------------------
9
+ # * Start Processing
10
+ #--------------------------------------------------------------------------
11
+ def start
12
+ super
13
+ @status_window = Window_Status.new(@actor)
14
+ @status_window.set_handler(:cancel, method(:return_scene))
15
+ @status_window.set_handler(:pagedown, method(:next_actor))
16
+ @status_window.set_handler(:pageup, method(:prev_actor))
17
+ end
18
+ #--------------------------------------------------------------------------
19
+ # * Change Actors
20
+ #--------------------------------------------------------------------------
21
+ def on_actor_change
22
+ @status_window.actor = @actor
23
+ @status_window.activate
24
+ end
25
+ end
@@ -0,0 +1,137 @@
1
+ #==============================================================================
2
+ # ** Scene_Title
3
+ #------------------------------------------------------------------------------
4
+ # This class performs the title screen processing.
5
+ #==============================================================================
6
+
7
+ class Scene_Title < Scene_Base
8
+ #--------------------------------------------------------------------------
9
+ # * Start Processing
10
+ #--------------------------------------------------------------------------
11
+ def start
12
+ super
13
+ SceneManager.clear
14
+ Graphics.freeze
15
+ create_background
16
+ create_foreground
17
+ create_command_window
18
+ play_title_music
19
+ end
20
+ #--------------------------------------------------------------------------
21
+ # * Get Transition Speed
22
+ #--------------------------------------------------------------------------
23
+ def transition_speed
24
+ return 20
25
+ end
26
+ #--------------------------------------------------------------------------
27
+ # * Termination Processing
28
+ #--------------------------------------------------------------------------
29
+ def terminate
30
+ super
31
+ SceneManager.snapshot_for_background
32
+ dispose_background
33
+ dispose_foreground
34
+ end
35
+ #--------------------------------------------------------------------------
36
+ # * Create Background
37
+ #--------------------------------------------------------------------------
38
+ def create_background
39
+ @sprite1 = Sprite.new
40
+ @sprite1.bitmap = Cache.title1($data_system.title1_name)
41
+ @sprite2 = Sprite.new
42
+ @sprite2.bitmap = Cache.title2($data_system.title2_name)
43
+ center_sprite(@sprite1)
44
+ center_sprite(@sprite2)
45
+ end
46
+ #--------------------------------------------------------------------------
47
+ # * Create Foreground
48
+ #--------------------------------------------------------------------------
49
+ def create_foreground
50
+ @foreground_sprite = Sprite.new
51
+ @foreground_sprite.bitmap = Bitmap.new(Graphics.width, Graphics.height)
52
+ @foreground_sprite.z = 100
53
+ draw_game_title if $data_system.opt_draw_title
54
+ end
55
+ #--------------------------------------------------------------------------
56
+ # * Draw Game Title
57
+ #--------------------------------------------------------------------------
58
+ def draw_game_title
59
+ @foreground_sprite.bitmap.font.size = 48
60
+ rect = Rect.new(0, 0, Graphics.width, Graphics.height / 2)
61
+ @foreground_sprite.bitmap.draw_text(rect, $data_system.game_title, 1)
62
+ end
63
+ #--------------------------------------------------------------------------
64
+ # * Free Background
65
+ #--------------------------------------------------------------------------
66
+ def dispose_background
67
+ @sprite1.bitmap.dispose
68
+ @sprite1.dispose
69
+ @sprite2.bitmap.dispose
70
+ @sprite2.dispose
71
+ end
72
+ #--------------------------------------------------------------------------
73
+ # * Free Foreground
74
+ #--------------------------------------------------------------------------
75
+ def dispose_foreground
76
+ @foreground_sprite.bitmap.dispose
77
+ @foreground_sprite.dispose
78
+ end
79
+ #--------------------------------------------------------------------------
80
+ # * Move Sprite to Screen Center
81
+ #--------------------------------------------------------------------------
82
+ def center_sprite(sprite)
83
+ sprite.ox = sprite.bitmap.width / 2
84
+ sprite.oy = sprite.bitmap.height / 2
85
+ sprite.x = Graphics.width / 2
86
+ sprite.y = Graphics.height / 2
87
+ end
88
+ #--------------------------------------------------------------------------
89
+ # * Create Command Window
90
+ #--------------------------------------------------------------------------
91
+ def create_command_window
92
+ @command_window = Window_TitleCommand.new
93
+ @command_window.set_handler(:new_game, method(:command_new_game))
94
+ @command_window.set_handler(:continue, method(:command_continue))
95
+ @command_window.set_handler(:shutdown, method(:command_shutdown))
96
+ end
97
+ #--------------------------------------------------------------------------
98
+ # * Close Command Window
99
+ #--------------------------------------------------------------------------
100
+ def close_command_window
101
+ @command_window.close
102
+ update until @command_window.close?
103
+ end
104
+ #--------------------------------------------------------------------------
105
+ # * [New Game] Command
106
+ #--------------------------------------------------------------------------
107
+ def command_new_game
108
+ DataManager.setup_new_game
109
+ close_command_window
110
+ fadeout_all
111
+ $game_map.autoplay
112
+ SceneManager.goto(Scene_Map)
113
+ end
114
+ #--------------------------------------------------------------------------
115
+ # * [Continue] Command
116
+ #--------------------------------------------------------------------------
117
+ def command_continue
118
+ close_command_window
119
+ SceneManager.call(Scene_Load)
120
+ end
121
+ #--------------------------------------------------------------------------
122
+ # * [Shut Down] Command
123
+ #--------------------------------------------------------------------------
124
+ def command_shutdown
125
+ close_command_window
126
+ fadeout_all
127
+ SceneManager.exit
128
+ end
129
+ #--------------------------------------------------------------------------
130
+ # * Play Title Screen Music
131
+ #--------------------------------------------------------------------------
132
+ def play_title_music
133
+ $data_system.title_bgm.play
134
+ RPG::BGS.stop
135
+ RPG::ME.stop
136
+ end
137
+ end
@@ -0,0 +1,135 @@
1
+ #==============================================================================
2
+ # ** Sound
3
+ #------------------------------------------------------------------------------
4
+ # This module plays sound effects. It obtains sound effects specified in the
5
+ # database from the global variable $data_system, and plays them.
6
+ #==============================================================================
7
+
8
+ module Sound
9
+
10
+ # System Sound Effect
11
+ def self.play_system_sound(n)
12
+ $data_system.sounds[n].play
13
+ end
14
+
15
+ # Cursor Movement
16
+ def self.play_cursor
17
+ play_system_sound(0)
18
+ end
19
+
20
+ # Decision
21
+ def self.play_ok
22
+ play_system_sound(1)
23
+ end
24
+
25
+ # Cancel
26
+ def self.play_cancel
27
+ play_system_sound(2)
28
+ end
29
+
30
+ # Buzzer
31
+ def self.play_buzzer
32
+ play_system_sound(3)
33
+ end
34
+
35
+ # Equip
36
+ def self.play_equip
37
+ play_system_sound(4)
38
+ end
39
+
40
+ # Save
41
+ def self.play_save
42
+ play_system_sound(5)
43
+ end
44
+
45
+ # Load
46
+ def self.play_load
47
+ play_system_sound(6)
48
+ end
49
+
50
+ # Battle Start
51
+ def self.play_battle_start
52
+ play_system_sound(7)
53
+ end
54
+
55
+ # Escape
56
+ def self.play_escape
57
+ play_system_sound(8)
58
+ end
59
+
60
+ # Enemy Attack
61
+ def self.play_enemy_attack
62
+ play_system_sound(9)
63
+ end
64
+
65
+ # Enemy Damage
66
+ def self.play_enemy_damage
67
+ play_system_sound(10)
68
+ end
69
+
70
+ # Enemy Collapse
71
+ def self.play_enemy_collapse
72
+ play_system_sound(11)
73
+ end
74
+
75
+ # Boss Collapse 1
76
+ def self.play_boss_collapse1
77
+ play_system_sound(12)
78
+ end
79
+
80
+ # Boss Collapse 2
81
+ def self.play_boss_collapse2
82
+ play_system_sound(13)
83
+ end
84
+
85
+ # Actor Damage
86
+ def self.play_actor_damage
87
+ play_system_sound(14)
88
+ end
89
+
90
+ # Actor Collapse
91
+ def self.play_actor_collapse
92
+ play_system_sound(15)
93
+ end
94
+
95
+ # Recovery
96
+ def self.play_recovery
97
+ play_system_sound(16)
98
+ end
99
+
100
+ # Miss
101
+ def self.play_miss
102
+ play_system_sound(17)
103
+ end
104
+
105
+ # Evasion
106
+ def self.play_evasion
107
+ play_system_sound(18)
108
+ end
109
+
110
+ # Magic Evasion
111
+ def self.play_magic_evasion
112
+ play_system_sound(19)
113
+ end
114
+
115
+ # Magic Reflection
116
+ def self.play_reflection
117
+ play_system_sound(20)
118
+ end
119
+
120
+ # Shop
121
+ def self.play_shop
122
+ play_system_sound(21)
123
+ end
124
+
125
+ # Use Item
126
+ def self.play_use_item
127
+ play_system_sound(22)
128
+ end
129
+
130
+ # Use Skill
131
+ def self.play_use_skill
132
+ play_system_sound(23)
133
+ end
134
+
135
+ end
@@ -0,0 +1,232 @@
1
+ #==============================================================================
2
+ # ** Sprite_Base
3
+ #------------------------------------------------------------------------------
4
+ # A sprite class with animation display processing added.
5
+ #==============================================================================
6
+
7
+ class Sprite_Base < Sprite
8
+ #--------------------------------------------------------------------------
9
+ # * Class Variable
10
+ #--------------------------------------------------------------------------
11
+ @@ani_checker = []
12
+ @@ani_spr_checker = []
13
+ @@_reference_count = {}
14
+ #--------------------------------------------------------------------------
15
+ # * Object Initialization
16
+ #--------------------------------------------------------------------------
17
+ def initialize(viewport = nil)
18
+ super(viewport)
19
+ @use_sprite = true # Sprite use flag
20
+ @ani_duration = 0 # Remaining time of animation
21
+ end
22
+ #--------------------------------------------------------------------------
23
+ # * Free
24
+ #--------------------------------------------------------------------------
25
+ def dispose
26
+ super
27
+ dispose_animation
28
+ end
29
+ #--------------------------------------------------------------------------
30
+ # * Frame Update
31
+ #--------------------------------------------------------------------------
32
+ def update
33
+ super
34
+ update_animation
35
+ @@ani_checker.clear
36
+ @@ani_spr_checker.clear
37
+ end
38
+ #--------------------------------------------------------------------------
39
+ # * Determine if animation is being displayed
40
+ #--------------------------------------------------------------------------
41
+ def animation?
42
+ @animation != nil
43
+ end
44
+ #--------------------------------------------------------------------------
45
+ # * Start Animation
46
+ #--------------------------------------------------------------------------
47
+ def start_animation(animation, mirror = false)
48
+ dispose_animation
49
+ @animation = animation
50
+ if @animation
51
+ @ani_mirror = mirror
52
+ set_animation_rate
53
+ @ani_duration = @animation.frame_max * @ani_rate + 1
54
+ load_animation_bitmap
55
+ make_animation_sprites
56
+ set_animation_origin
57
+ end
58
+ end
59
+ #--------------------------------------------------------------------------
60
+ # * Set Animation Speed
61
+ #--------------------------------------------------------------------------
62
+ def set_animation_rate
63
+ @ani_rate = 4 # Fixed value by default
64
+ end
65
+ #--------------------------------------------------------------------------
66
+ # * Read (Load) Animation Graphics
67
+ #--------------------------------------------------------------------------
68
+ def load_animation_bitmap
69
+ animation1_name = @animation.animation1_name
70
+ animation1_hue = @animation.animation1_hue
71
+ animation2_name = @animation.animation2_name
72
+ animation2_hue = @animation.animation2_hue
73
+ @ani_bitmap1 = Cache.animation(animation1_name, animation1_hue)
74
+ @ani_bitmap2 = Cache.animation(animation2_name, animation2_hue)
75
+ if @@_reference_count.include?(@ani_bitmap1)
76
+ @@_reference_count[@ani_bitmap1] += 1
77
+ else
78
+ @@_reference_count[@ani_bitmap1] = 1
79
+ end
80
+ if @@_reference_count.include?(@ani_bitmap2)
81
+ @@_reference_count[@ani_bitmap2] += 1
82
+ else
83
+ @@_reference_count[@ani_bitmap2] = 1
84
+ end
85
+ Graphics.frame_reset
86
+ end
87
+ #--------------------------------------------------------------------------
88
+ # * Create Animation Spirtes
89
+ #--------------------------------------------------------------------------
90
+ def make_animation_sprites
91
+ @ani_sprites = []
92
+ if @use_sprite && !@@ani_spr_checker.include?(@animation)
93
+ 16.times do
94
+ sprite = ::Sprite.new(viewport)
95
+ sprite.visible = false
96
+ @ani_sprites.push(sprite)
97
+ end
98
+ if @animation.position == 3
99
+ @@ani_spr_checker.push(@animation)
100
+ end
101
+ end
102
+ @ani_duplicated = @@ani_checker.include?(@animation)
103
+ if !@ani_duplicated && @animation.position == 3
104
+ @@ani_checker.push(@animation)
105
+ end
106
+ end
107
+ #--------------------------------------------------------------------------
108
+ # * Set Animation Origin
109
+ #--------------------------------------------------------------------------
110
+ def set_animation_origin
111
+ if @animation.position == 3
112
+ if viewport == nil
113
+ @ani_ox = Graphics.width / 2
114
+ @ani_oy = Graphics.height / 2
115
+ else
116
+ @ani_ox = viewport.rect.width / 2
117
+ @ani_oy = viewport.rect.height / 2
118
+ end
119
+ else
120
+ @ani_ox = x - ox + width / 2
121
+ @ani_oy = y - oy + height / 2
122
+ if @animation.position == 0
123
+ @ani_oy -= height / 2
124
+ elsif @animation.position == 2
125
+ @ani_oy += height / 2
126
+ end
127
+ end
128
+ end
129
+ #--------------------------------------------------------------------------
130
+ # * Free Animation
131
+ #--------------------------------------------------------------------------
132
+ def dispose_animation
133
+ if @ani_bitmap1
134
+ @@_reference_count[@ani_bitmap1] -= 1
135
+ if @@_reference_count[@ani_bitmap1] == 0
136
+ @ani_bitmap1.dispose
137
+ end
138
+ end
139
+ if @ani_bitmap2
140
+ @@_reference_count[@ani_bitmap2] -= 1
141
+ if @@_reference_count[@ani_bitmap2] == 0
142
+ @ani_bitmap2.dispose
143
+ end
144
+ end
145
+ if @ani_sprites
146
+ @ani_sprites.each {|sprite| sprite.dispose }
147
+ @ani_sprites = nil
148
+ @animation = nil
149
+ end
150
+ @ani_bitmap1 = nil
151
+ @ani_bitmap2 = nil
152
+ end
153
+ #--------------------------------------------------------------------------
154
+ # * Update Animation
155
+ #--------------------------------------------------------------------------
156
+ def update_animation
157
+ return unless animation?
158
+ @ani_duration -= 1
159
+ if @ani_duration % @ani_rate == 0
160
+ if @ani_duration > 0
161
+ frame_index = @animation.frame_max
162
+ frame_index -= (@ani_duration + @ani_rate - 1) / @ani_rate
163
+ animation_set_sprites(@animation.frames[frame_index])
164
+ @animation.timings.each do |timing|
165
+ animation_process_timing(timing) if timing.frame == frame_index
166
+ end
167
+ else
168
+ end_animation
169
+ end
170
+ end
171
+ end
172
+ #--------------------------------------------------------------------------
173
+ # * End Animation
174
+ #--------------------------------------------------------------------------
175
+ def end_animation
176
+ dispose_animation
177
+ end
178
+ #--------------------------------------------------------------------------
179
+ # * Set Animation Sprite
180
+ # frame : Frame data (RPG::Animation::Frame)
181
+ #--------------------------------------------------------------------------
182
+ def animation_set_sprites(frame)
183
+ cell_data = frame.cell_data
184
+ @ani_sprites.each_with_index do |sprite, i|
185
+ next unless sprite
186
+ pattern = cell_data[i, 0]
187
+ if !pattern || pattern < 0
188
+ sprite.visible = false
189
+ next
190
+ end
191
+ sprite.bitmap = pattern < 100 ? @ani_bitmap1 : @ani_bitmap2
192
+ sprite.visible = true
193
+ sprite.src_rect.set(pattern % 5 * 192,
194
+ pattern % 100 / 5 * 192, 192, 192)
195
+ if @ani_mirror
196
+ sprite.x = @ani_ox - cell_data[i, 1]
197
+ sprite.y = @ani_oy + cell_data[i, 2]
198
+ sprite.angle = (360 - cell_data[i, 4])
199
+ sprite.mirror = (cell_data[i, 5] == 0)
200
+ else
201
+ sprite.x = @ani_ox + cell_data[i, 1]
202
+ sprite.y = @ani_oy + cell_data[i, 2]
203
+ sprite.angle = cell_data[i, 4]
204
+ sprite.mirror = (cell_data[i, 5] == 1)
205
+ end
206
+ sprite.z = self.z + 300 + i
207
+ sprite.ox = 96
208
+ sprite.oy = 96
209
+ sprite.zoom_x = cell_data[i, 3] / 100.0
210
+ sprite.zoom_y = cell_data[i, 3] / 100.0
211
+ sprite.opacity = cell_data[i, 6] * self.opacity / 255.0
212
+ sprite.blend_type = cell_data[i, 7]
213
+ end
214
+ end
215
+ #--------------------------------------------------------------------------
216
+ # * SE and Flash Timing Processing
217
+ # timing : Timing data (RPG::Animation::Timing)
218
+ #--------------------------------------------------------------------------
219
+ def animation_process_timing(timing)
220
+ timing.se.play unless @ani_duplicated
221
+ case timing.flash_scope
222
+ when 1
223
+ self.flash(timing.flash_color, timing.flash_duration * @ani_rate)
224
+ when 2
225
+ if viewport && !@ani_duplicated
226
+ viewport.flash(timing.flash_color, timing.flash_duration * @ani_rate)
227
+ end
228
+ when 3
229
+ self.flash(nil, timing.flash_duration * @ani_rate)
230
+ end
231
+ end
232
+ end