Standalone "Curses! Styled Again" — freeware mouse pointer customizer for PC (and maybe Mac?)

Bethany

Empress of Light
@Diablodoc 's post on changing your mouse pointer for better visibility is great. After being pleased with the immense improvement, I got to thinking. Converting back and forth from packed decimal to RGBA values is tedious for humans, simple for computers. Even a mistake while editing the config.json file could lead to problems. Might as well let the computer do the work and eliminate risk of trouble.

So I've begun a simple stand-alone mouse pointer customization program called "Curses! Styled Again". It will display two color pickers, one for the body of the mouse pointer and one for the wide border. It will let you switch the wide border on or off by checking or unchecking a checkbox. And it will let you revert to previous settings if you don't like the changes you made.

I'd like to show a few screenshot snippets you can mouse over to see the pointer in action. I assume this would require permission from the developers, so I'll contact them to ask. Likewise it would be nice if I could copy the actual Terraria mouse pointer image and mask bitmaps.

I'm writing it using a system (Delphi with FireMonkey) that allows developing for both Windows and Mac. Whether custom cursors will work the same on Macintosh I couldn't say; never tried. Only way to know is to try, and that's easy enough.

So far I've got JSON read, write, and numbered backup and a basic, non-pulsating pointer that looks similar to the one used in the game. If it's not too much bother I'll try to make it pulsate like the real thing.

I'll post the executable when there's something worth looking at, some time this week if I can spare the time from working and playing Terraria. If anyone else is interested I'll consider open-sourcing the thing and tossing it onto Github or some such.

P.S.: Suggestions are welcome, though I can't promise to implement them.
 
Glad to see someone else with the knowledge of Delphi w/ Firemonkey and its versatility. I was actually considering doing this myself a few days ago, guess that's not needed.

Your customization tool may also be made to work with Linux once that support is in Delphi, though I have a feeling they're not gonna keep up on that promise for quite some time considering how they keep just releasing XE versions as bugfixes to rip people off.

Let us know how progress goes :) I might promote this on my Let's Play stream if it's worth a look.
 
One more platform and I'd be soooo content! As it is, Delphi is pretty much my go-to tool for heavy-duty coding but that would make it the bee's knees. Ah well.
 
i'm interested in this because having made my border thicker i've seen a massive improvement of my ability to aim stars wrath projectiles, and phantasm among other weapons in the more intense fights like the moon lord where there's tons of lasers, and beams on screen at any given time an the standard cursor could be hard to find.
 
You speak naught but truth! I barely beat Skeletron Prime in 1.2.4 because I kept losing track of where the heck I was aiming. This would've made a huge difference! My 1.3 character is having an easier time on that account, at least.

Preliminary screenshot time. No live preview or mouse-over snippets yet, waiting for permission to use game assets.

The numeric displays update live as I drag the color controls around. I've abstracted ARGB and AHSV colors into two classes for reuse. Helps keep the code nice and clean.

VBIusP5.jpg
 
Last edited:
Even though it's unrelated. Maybe you could include controls for turning the other JSON-only options on and off as well.
 
Interesting. I see you do, like me, try to incorporate all sorts of information and precision.

Might I suggest a different approach though? As for anyone using this app, most of that information is useless and will end up confusing them. Showing users more stuff leads to them being confused about what to do where and what is what. Getting a simple overview and having the option to toggle more crap on is a better alternative imo;).

Here's what I suggest:


  • Add an Advanced Mode checkbox modestly in a corner that nobody accidentally clicks, but everyone sees. It will enable all sorts of information, but in such a way that you can copypaste it in a proper format, and not formatted just for viewing.
    To make that work, maybe you could let it be "readable" when not selected, and when you click in the box, it immediately reverts the format to copypasta-compatible. That way they can still double-click and CTRL+C.
  • Remove all information in the bars below except for "RGB (Hexadecimal)", "Alpha+RGB" and "Decimal Code" and limit the rest to "Advanced Mode" below.
    This is so users can copy those values and use your app as a general color picker. In addition, they can pick an Alpha.
    This will let them use the Decimal Code themselves incase they also don't trust your app, there's a bug, or they prefer to edit the file themselves, or make backup files manually etc with the right colors, like I do.
  • Insert "Alpha" in front of the Alpha bar, and give it indicator lines below akin to those on a ruler, so people can see how many "lines" approximately are optimal to recommend
    Also make sure to use percentage on that. If they turn on Advanced Mode, you show it as 0-255.
  • I don't understand what "Use Wide Border" is for. You adjust the width with the Alpha, no?
  • Have the pointer preview be in the middle of the two color palettes. Let there be a background that alternates and animates into the main menu in Terraria's colors, as well as some ingame. Just record some video and crop out the parts you want, otherwise just ask someone for a small gif of the main menu, etc.
  • I would rename the app to "Terraria Pointer Customizer" or something that doesn't confuse people :) Maybe have the other title as a titlebar thing
  • Make sure to add mouseover tooltips
  • Read and Write buttons are to load data and save it? In that case I'd prefer they were called "Save" and "Load", as is what people understand
  • The original pointers/files should be backed up by default before the file is saved, if there is not already a backup-file, which remains untouched. "Restore Defaults" should be a thing, both for the pointer body, and for the pointer border separately.
    Additionally, the default values should be shown under Advanced Mode, so people can compare to the default values. Default values should be modeled after the game's default settings, not what the user set by themselves before using the program. If you wanna feature a user's default in addition, go ahead :)

RGB (Hexadecimal) would show FF00FF for example, and ARGB would be 55FF00FF. Decimal Code would just be what you shove into the game file.
If the format is different for the main body of the cursor (aka it doesn't use Decimal Code), just simply place the appropriate fields under the main palette.

Also, if you wanna feature other options from the JSON files, I suggest adding a tab to the top of your program, the cursor one being "Cursor Colors" and the other being "Game Options". Though you should change the app name as well.
 
Last edited:
One player contacted me about the incomplete version of Curses! so I've put a 32-bit Windows release build (with debugging code removed) up on Google Drive.

[removed link to obsolete version; see below for working link to new version]

This version does NOT save your choices to config.json. It does read your settings from config.json at startup, and again if you click the "Read" button.

Curses! provides instant conversion into packed decimal, as well as several other color formats. You can copy the packed decimal number and paste it into your config.json using Notepad or any plain text editor (not a word processor).

Now, I'm the nicest person you'd ever want to meet. But you don't know that. So treat this the way you would any file downloaded from Teh Intarwebz. Subject it to a malware scan and if you find anything suspicious-looking, use it to summon a Terraria boss don't run it and let me know!

Enjoy. I'll add file-save functionality with numbered backups later this week.

P.S.: If you're on Win8 you'll get a message saying Windows won't run it because it's not from a big corporation with a certificate from a CA. Click "More info" and you will be able to tell Windows to run it anyway. If you've done your malware scan.


@ManaUser and @Diablodoc : I'll take your ideas into consideration. Maybe a "simple" and an "everything" mode would be good.

Alpha is the transparency channel. If Alpha is set to zero for one or more pixels, those pixels will be completely transparent no matter what color is specified. If Alpha is one, or 100%, that means opaque. Values in between give varying levels of opacity.
 
Last edited:
But they're probably going to enable this in-game in a future update.. Why would it be in otherwise?
 
That would be wonderful. In the meantime, this can fill a temporary need. It was quick and easy to make (she said, knowing the job wasn't finished yet). :dryadsmile:
 
I tried using this, and copied the result to config.json but I didn't get the right color. I looks to me like ThickMouseEdgesPackedColor is using ABGR instead of ARGB.
 
Beg pardon! I'll fix that and upload a new version.

[edit] Here 'tis. https://drive.google.com/file/d/0B6SeleThkUPcUmROVE1GaDdpWlE/view?usp=sharing

Still somewhat hackerly — it requires manual copying and pasting of the "Packed decimal" number into config.json. I'll remedy the lack of file save capability later today and upload that version.

One caveat: if your border alpha is other than 100% the body and border colors will blend along the shared edge, possibly producing unexpected colors.
 
Last edited:
Well, this is annoying. The JSON objects supplied with Delphi have no facility for mutating or writing to output, just reading. I'd assumed the ability was there and I'd just not read the documentation deeply enough.

Guess I'll rip out the JSON parser and use SuperObject instead. I'd hoped to do this without external dependencies but the prospect of writing raw JSON to a file as plain text is distasteful and inflexible. So.

Should be a new download later today/this evening, regardless.
 
Curses! now requires no hand-editing, no Notepad, no copying or pasting. Adjust the colors, click the Save button, start Terraria, Bob's your (customized) uncle.

https://drive.google.com/file/d/0B6SeleThkUPccVluZVM2RFdkT3c/view?usp=sharing

I've hidden the hex and decimal numeric color readouts, but will make them visible again when I get around to adding an Advanced mode.

Safety notes

Curses! makes numbered backups with filenames like config.1.json, config.2.json, and so forth. I doubt the program will mess up, but if it does (or if you don't like your changes), you can undo any changes by copying the backup of your choice over the config.json file. The worst that could happen is you'd have to delete config.json and let Terraria recreate it; in that case you'd need to reapply any other settings you've changed from their defaults (FrameSkip, AutoPause, hot key bindings, et cetera). If too many old backups accumulate, you can delete them as long as you're satisfied with the settings you have.

Despite all my precautions, if you're the type of person who wears both a belt and braces, I recommend making a copy of your original config.json and storing it in a safe place.

Note: Terraria reads config.json only when it starts running, so any changes you make in Curses! will not be visible until you leave Terraria and restart it.

Also, if you load config.json into Curses!, then use Terraria's in-game facilities for changing options, then use Curses! to save mouse pointer customizations, Curses! will overwrite any settings you changed inside Terraria. If you plan to use Terraria's in-game option settings, get that done before using Curses! to modify your mouse pointer. Alternatively, when you're done making changes in Terraria, click the "Reload" button in Curses! to load config.json with the changes you just made using Terraria. Curses! loads and writes all settings, not just the ones it alters.

Curses! Styled Again is BETA SOFTWARE, meaning I'd be glad to get reports of incorrect behavior or suggestions. It also means you take the risk that it might do something unexpected, such as deleting a file. I can't see any way this could happen, but bugs do occur. To really play it safe, it couldn't hurt to back up your whole game folder.
 
Last edited:
Works great now. I did notice one very minor thing though, on my screen the label under the Alpha slider is cut off at "opaq..."
 
Hm, must be some auto-sizing thing. I'll look at that now. Thanks for mentioning it.

[eta] Done! Link above now goes to the updated program. Let me know how this one does for you.
 
Yay! I'll probably not bother with enhancements until there's some word on whether these functions will be added to Terraria itself.

@Bethany please do make a cursor preview though, this is the most important feature for me. Having to reload the game and the app all the time to get the desired result is troublesome.

I notice that the area where I lose sight of the cursor the most, is in the jungle when fighting Plantera.
 
I'd love to, but haven't heard back from the developers on permission to include graphics derived from their game assets. I'm very picky about even fine points of legality.
 
Back
Top Bottom