Refactor weapon system: update BladeOfRecursion and QuantumBow classes with improved attack mechanics, damage handling, and drawing logic; enhance WeaponHandler for better weapon management.
This commit is contained in:
+26
-20
@@ -1,39 +1,45 @@
|
||||
require_relative 'lorentz_field'
|
||||
require_relative 'occams_razor'
|
||||
#require_relative 'quantum_bow'
|
||||
#require_relative 'blade_of_recursion'
|
||||
require_relative 'quantum_bow'
|
||||
require_relative 'blade_of_recursion'
|
||||
|
||||
class WeaponHandler
|
||||
def initialize
|
||||
@weapons = {
|
||||
lorentz_field: LorentzField.new,
|
||||
occams_razor: OccamsRazor.new,
|
||||
#quantum_bow: QuantumBow.new,
|
||||
#blade_of_recursion: BladeOfRecursion.new
|
||||
quantum_bow: QuantumBow.new,
|
||||
blade_of_recursion: BladeOfRecursion.new
|
||||
}
|
||||
end
|
||||
|
||||
def update(dt)
|
||||
@weapons.each_value { |weapon| weapon.update(dt) }
|
||||
|
||||
selected_item = $bus.get(:selected_item)
|
||||
return unless @weapons.key?(selected_item)
|
||||
|
||||
weapon = @weapons[selected_item]
|
||||
if $bus.get(:count, selected_item) > 0
|
||||
if Gosu.button_down?(Gosu::KB_SPACE)
|
||||
direction = $bus.get(:player_direction)
|
||||
weapon.attack(direction)
|
||||
elsif Gosu.button_down?(Gosu::MS_LEFT)
|
||||
player_x, player_y = $bus.get(:player_position)
|
||||
mouse_x, mouse_y = $bus.get(:mouse_pos)
|
||||
direction = Math.atan2(mouse_y - player_y, mouse_x - player_x)
|
||||
weapon.attack(direction)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def draw
|
||||
@weapons.each_value(&:draw)
|
||||
end
|
||||
|
||||
def button_down(id, pos)
|
||||
selected_item = $bus.get(:selected_item)
|
||||
return unless @weapons.key?(selected_item)
|
||||
|
||||
weapon = @weapons[selected_item]
|
||||
if $bus.get(:count, selected_item) > 0
|
||||
if id == Gosu::KB_SPACE
|
||||
player_x, player_y = $bus.get(:player_position)
|
||||
cam_x, cam_y = $bus.get(:camera_pos) || [0, 0]
|
||||
mouse_x, mouse_y = $bus.get(:mouse_pos) || [0, 0]
|
||||
direction = Math.atan2((mouse_y + cam_y - player_y), (mouse_x + cam_x - player_x))
|
||||
weapon.attack(direction)
|
||||
elsif id == Gosu::MS_LEFT
|
||||
player_x, player_y = $bus.get(:player_position)
|
||||
cam_x, cam_y = $bus.get(:camera_pos) || [0, 0]
|
||||
mouse_x, mouse_y = pos
|
||||
direction = Math.atan2((mouse_y + cam_y - player_y), (mouse_x + cam_x - player_x))
|
||||
weapon.attack(direction)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user