Alright, well first I'll say that you're doing mostly everything right, there's just a few issues which I think can be improved.
First of all, Ruby lets you open classes at will and when you do that, you only need to change the parts of the class that you want to change. So, it's not actually necessary to replace methods that you aren't changing. In other words, since you aren't modifying anything in the #make_command_list and #continue_enabled methods, you can just delete them from the script altogether and it will still work.
Secondly, you overwrite the #initialize method in Window_TitleCommand, so when you later alias it in order to change the opacity, that is a strange choice. IN other words, instead of this at the end of the script:
#-------------------------------------------------------------------------
# * Transparent menu window
#-------------------------------------------------------------------------
class Window_TitleCommand < Window_Command
alias initialize_opacity_original initialize
def initialize
initialize_opacity_original
self.opacity = 0
end
end
You could just change your first #initialize method so that it is:
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize
super(((Graphics.width - window_width) / 80), Graphics.height)
@final_x, @final_y, self.active = self.x, ((Graphics.height * 2.05 - window_height) / 2).to_i, false
select_symbol :continue if continue_enabled
self.openness = 1
self.opacity = 0
open
end
However, the preferable option would just be to alias the initialize method in the first place, because that improves compatibility. See:
Aliasing in RGSS/2In this case, most of the initialize method is the same as what you have. The original #initialize method is:
def initialize
super(0, 0)
update_placement
select_symbol(:continue) if continue_enabled
self.openness = 0
open
end
The only thing that you change is that you provide different arguments to super, you don't update_placement, and you set values for @final_x, @final_y, self.active, and self.opacity. The same effect could be achieved by replacing it with a method like this:
alias wyre_mm_initilz_original initialize
def initialize(*args, &block)
@final_x = (Graphics.width - window_width) / 80,
@final_y = (Graphics.height * 2.05 - window_height) / 2).to_i
wyre_mm_initilz_original(*args, &block) # Call Original Method
self.x, self.y = @final_x, Graphics.height
self.active = true
self.opacity = 0
end
That will function identically to the method you have, and your script might also be compatible with some other Title Screen scripts that modify that method. You could also alias some of your other methods, but I don't want to take over your script, so I will just mention that it is possible to do it.
The other thing that I wanted to mention was that your formulas are very particular. You set x to:
(Graphics.width - window_width) / 80
which will almost always be between 0 and 2, even if the resolution is widened or the window width is changed; I mean, you divide it by 80! Why not set it directly to 0 instead of have a convoluted formula for the possible difference of 1 or 2 pixels?
Your y formula is just as strange:
(Graphics.height * 2.05 - window_height) / 2).to_i
I think what you're trying to do is in someway accomodate for the fact that the height of the window is actually unnecessarily large, but the way you ought to be accomodating for that is different. You should just make the @final_y:
Graphics.height - self.height
and you should redefine the visible_line_number method to something like this:
def visible_line_number
1 + ((item_max - 1) / col_max)
end
Your window_width method is also strange. You have it as:
(240 - standard_padding) * 2
It doesn't seem to be particularly related to anything relevant to its size like column max, and it seems odd to tie it to standard_padding.
Anyway, there's nothing inherently wrong about having weird formulas - it's not making a big difference either way. It's just weird.
And after all that is said, I don't mean to detract from the script in any way. Like I said, you're doing most things right and it works the way you want it to, but I think if you think about the script a little more you can make it that much better.