赞 | 0 |
VIP | 136 |
好人卡 | 4 |
积分 | 1 |
经验 | 2058 |
最后登录 | 2013-1-17 |
在线时间 | 142 小时 |
Lv1.梦旅人 辉瑞中国首席研究员<
- 梦石
- 0
- 星屑
- 50
- 在线时间
- 142 小时
- 注册时间
- 2008-1-18
- 帖子
- 2129
|
- module RPG
- class Sprite < ::Sprite
- @@_animations = []
- @@_reference_count = {}
- def damage(value, critical)
- dispose_damage
- a = ""
- if value.is_a?(Numeric)
- damage_string = value.abs.to_s
-
- if value > 0
- a = "-"
- else
- a = "+"
- end
- else
- damage_string = value.to_s
- end
-
-
- bitmap = Bitmap.new(160, 48)
- bitmap.font.name = "黑体"
- bitmap.font.size = 20
- bitmap.font.color.set(0, 0, 0)
- bitmap.draw_text(-1, 12-1, 160, 36, a+damage_string, 1)
- bitmap.draw_text(+1, 12-1, 160, 36, a+damage_string, 1)
- bitmap.draw_text(-1, 12+1, 160, 36, a+damage_string, 1)
- bitmap.draw_text(+1, 12+1, 160, 36, a+damage_string, 1)
- if value.is_a?(Numeric) and value < 0
- bitmap.font.color.set(255, 0, 0)
- else
- bitmap.font.color.set(255, 0, 0)
- end
- bitmap.draw_text(0, 12, 160, 36, a+damage_string, 1)
- if critical
- bitmap.font.size = 20
- bitmap.font.color.set(0, 0, 0)
- bitmap.draw_text(-1, -1, 160, 20, "CRITICAL", 1)
- bitmap.draw_text(+1, -1, 160, 20, "CRITICAL", 1)
- bitmap.draw_text(-1, +1, 160, 20, "CRITICAL", 1)
- bitmap.draw_text(+1, +1, 160, 20, "CRITICAL", 1)
- bitmap.font.color.set(255, 255, 255)
- bitmap.draw_text(0, 0, 160, 20, "CRITICAL", 1)
- end
- @_damage_sprite = ::Sprite.new(self.viewport)
- @_damage_sprite.bitmap = bitmap
- @_damage_sprite.ox = 100
- @_damage_sprite.oy = 40
- @_damage_sprite.x = self.x
- @_damage_sprite.y = self.y - self.oy / 2
- @_damage_sprite.z = 3000
-
- @_damage_duration = 40
- end
- def update
- super
- if @_whiten_duration > 0
- @_whiten_duration -= 1
- self.color.alpha = 128 - (16 - @_whiten_duration) * 10
- end
- if @_appear_duration > 0
- @_appear_duration -= 1
- self.opacity = (16 - @_appear_duration) * 16
- end
- if @_escape_duration > 0
- @_escape_duration -= 1
- self.opacity = 256 - (32 - @_escape_duration) * 10
- end
- if @_collapse_duration > 0
- @_collapse_duration -= 1
- self.opacity = 256 - (48 - @_collapse_duration) * 6
- end
- if @_damage_duration > 0
- @_damage_duration -= 1
- case @_damage_duration
- when 38..39
- @_damage_sprite.y -= 10
- when 36..37
- @_damage_sprite.y -= 5
- when 34..35
- @_damage_sprite.y += 0
- when 28..33
- @_damage_sprite.y += 0
- end
- @_damage_sprite.opacity = 256 - (12 - @_damage_duration) * 32
- if @_damage_duration == 0
- dispose_damage
- end
- end
- if @_animation != nil and (Graphics.frame_count % 2 == 0)
- @_animation_duration -= 1
- update_animation
- end
- if @_loop_animation != nil and (Graphics.frame_count % 2 == 0)
- update_loop_animation
- @_loop_animation_index += 1
- @_loop_animation_index %= @_loop_animation.frame_max
- end
- if @_blink
- @_blink_count = (@_blink_count + 1) % 32
- if @_blink_count < 16
- alpha = (16 - @_blink_count) * 6
- else
- alpha = (@_blink_count - 16) * 6
- end
- self.color.set(255, 255, 255, alpha)
- end
- @@_animations.clear
- end
- end
- end
复制代码 系统信息:本贴获得楼主认可,66RPG感谢您的热情解答~ |
|