Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Messages - Corey Cooper

Pages: [1] 2 3 ... 379
General Discussion / Re: prize receipts
« on: May 02, 2019, 09:53:33 PM »
You are correct.  Currently there is no feature to print prize receipts, but it is something I would like to add once the next version is complete.

Beta Testing / Re: 3.5 Progress
« on: April 29, 2019, 11:47:56 PM »
- More cleanup of Game window (built-in screens and tournament screen)
- Fixed a few dialogs that didn't render quite correctly (Font dialog, Cell dialog, Screen Properties dialog)
- Fixed the status icons.  Using new icons and some animations now, it looks good.
- Fixed a handful of the remaining dialogs: Game Player dialog, Player Details dialog, Stats Player dialog, Stats Tournaments Information dialog, Stats Profiles dialog (and sub dialogs), Name Format dialog, Config Files dialog, Sort Order dialog, Chop dialog
- Finished up the Database and Stats tabs
- Added new options to player images to make images round, add background color and borders
- Fixed AutoSave
- Finished Status Messages
- Fixed a few rendering issues in the Settings window
- Updated to the latest version of Electron and in doing so completely broke drag-and-drop (Tables, Layout, and Dashboard)!  I have since refactored Tables tab drag-and-drop so it works again.  Still need to complete Layout and Dashboard.
- And finally, came up with a preliminary list of what is left (see below)

What's left to do?  In a semi-ordered list of the most important things:

Must complete before beta
- Refactor licensing
- Package the software for download and installation
- Complete drag-and-drop on Layout tab and Dashboard configuration
- Display Management
- Re-re-factor dialog code (still a few issues that need to be ironed out)
- Loading/saving of files that are not ANSI (UTF-8/UTF-16/etc).  This is still an issue unfortunately.

May need to complete before beta
- Various FIXMEs throughout the code
- A few bugs I am currently aware of

Can wait until beta
- Software patch feature
- Hand Timer
- Hotkeys dialog should be "modeless", but isn't
- Color selection dialog
- Font selection input/dialog (this is still a complete unknown, since Electron still doesn't provide this service)
- Update built-in layouts
- Other various tweaks and changes

Help Me / Re: Batch file and TD3
« on: April 23, 2019, 05:48:20 PM »
Nothing like that currently exists in the software.  But there are settings to easily send the Game window to your secondary display.  You can set up a hotkey to do this.

Help Me / Re: Can't change font color
« on: April 22, 2019, 05:36:38 PM »
You can change the colors using the tableBodyFont and tableEdgeFont attributes of the seatingChart token.  I would advise using the Token Builder dialog, because it's a lot easier and those attributes are somewhat complicated.  For example:

<seatingChart tableEdgeFont='{"Name":"Segoe UI","Size":18,"Bold":false,"Italic":false,"Color":"#fff","BGColor":"#048","Underline":false,"Grad":{"ColorFrom":"#048","ColorTo":"#000","Type":0}}' tableBodyFont='{"Name":"Segoe UI","Size":18,"Bold":false,"Italic":false,"Color":"white","BGColor":"#080","Underline":false,"Grad":{"ColorFrom":"#080","ColorTo":"#000","Type":0}}'>

To use the Token Builder, just use the mouse to highlight part of the text and the "Edit Token" button should become green.  Click Edit Token and it will open the Token Builder dialog to easily edit the token.  When you're done changing options, press OK and the proper text will be re-inserted back into the cell contents.

FYI, the reason the cell font/colors don't extend to the seating chart is because the seating chart is built using HTML tables, and IE (and other browsers a long time ago) had a bug which didn't allow the table to inherit font characteristics.  So the attributes had to be added to the <seatingChart> token.

Help Me / Re: TD Re-Export to StatsGenie Issue
« on: April 15, 2019, 06:13:19 PM »
Not to pass the buck, but I think it's probably on SG's end.  The reason is that the TD has no concept of exporting vs re-exporting.  It has no idea if the tournament you're sending to SG has ever been sent before.  It has no idea if it already exists on SG.  It just sends it, and lets SG do the rest.

The data does have a unique identifier, so SG should be able to tell if the tournament you're sending already exists.  So I would think it should update the existing tournament accordingly (and I'm pretty certain when I tested this that's the behavior I saw).  But that's pretty much the extent of my knowledge.  I would ping Martin at SG.  He's always been pretty responsive.

Suggestions / Re: Average Play Time Stat Sort not working
« on: April 07, 2019, 10:56:26 AM »
Looks like a bug.  I think it was never added as a valid sort column, so this has probably always been a bug.

You're right, it's sorting on player name.  All sorts of players fall back on using the name in case of ties.  That way you get deterministic results when multiple players have the same values.

Thanks for pointing this out.

Help Me / Re: Filtering Unqualified League Points
« on: April 01, 2019, 01:17:35 PM »
There's no way to display what listPoints (or any of the other list* variables) consists of, because it's all within the formula context and the output of the formula is a single value.  But you can access a single value of a list variable by using bracket notation:  listPoints[0] for the first item or listPoints[1] for the second, etc.  The formula dialog will complain if you try to access a value beyond the size of the variable.  For example, if listPoints has a value of "12 15 23" (a total of 3 values) and your formula has "listPoints[3]", it will error since index 3 would be the 4th entry.

Theoretically renaming your tournaments could yield the variables in the proper order, but it would be hard to make this generic - it might have to be specific to your tournaments (which is all you care about).  But it seems iffy no matter how you approach it.

While you can access the list variables contents using a single index, getting a range of values out will prove more difficult.  There are no dot notation range operators, like "listPoints(1..5)", which presumably would return a new list of points at indexes 1, 2, 3, 4, and 5.  JS uses .slice and .splice methods, which aren't exposed in TD formulas.

Help Me / Re: Error occured in Script, 'Bootstrap'. Cannot start TD3
« on: April 01, 2019, 01:04:41 PM »
terrytaxi, what version of the TD are you using?

Help Me / Re: Filtering Unqualified League Points
« on: March 29, 2019, 02:08:36 PM »
Unfortunately not. Ultimately you have a filter which filters out certain tournaments and certain players.

When you run stats, you get a set of tournaments, minus any tournaments filtered out by the selected filter.  From those tournaments you get a set of players that participated in them.  The filter can further filter out some of those players.

What you have left is a set of tournaments and a set of players.  The stats for each player are generated from the entire set of tournaments.  There's no way to filter out specific tournaments for specific players.

For variables like "listPoints", for example, you'll get a list (array) of points: [12, 8, 14].  But there's no way to know which of those points is from which tournament.  They are not necessarily in any kind of order.  So, using your example:

if (zip>1, sum(last "x" number of tournaments from that string), sum(top(numberOfTournaments-1,listpoints)))

While you could overload a field to use it as a flag (zip > 1), and you could remove from the list of points one of the values, there's no way to know which one to remove.

Help Me / Re: Filtering Unqualified League Points
« on: March 28, 2019, 12:39:04 PM »
This is an interesting issue. Unfortunately there's no concept of when a player joins a league.  The player is simply either part of a league or not.

There's also no consideration given (on a per-player basis) to when a tournament was played.  So you could filter out tournaments prior to a specific date and time, but it will be filtered out for all players.  You can't filter out a tournament [by date] just for some.  You can filter out a tournament by league just for some, but that brings us back to the problem.

One way you could do it I think is to create a separate player for each of your players that played in tournaments before they were part of the league.  For example, my database would have in it player Corey, who is not part of my league.  Corey plays in the first tournament.  Before the second tournament Corey joins the league.  I rename player Corey in the database to "Corey (pre-league)" and create a new player Corey.  Now "Corey (pre-league)" played in the first tournament while the new "Corey" plays in the second and future tournaments.

Not ideal I suppose but would serve to separate statistics.

To implement this for players who participated before they were part of the league:
- Rename the player in the database (and also remove them from the league)
- Create the new player in the database (and add them to the league)
- For each tournament that they participated in AS A LEAGUE MEMBER:
  - Load the tournament
  - On the Players tab, double-click the player to edit
  - Where it says "This player is in your player database." click the "Change" button
  - Select the new player in the database (the one that is a league member)
  - Save the tournament

If you don't care about their stats for tournaments pre-league, you could just delete the "old" player from the database.

Suggestions / Re: Tracking progressive knockouts
« on: March 28, 2019, 12:05:33 PM »
It has been requested before, and now that it's getting more popular I will likely consider adding it after 3.5 is complete.

Help Me / Re: Data Backups/Restores HELP
« on: March 25, 2019, 02:34:15 PM »
Unfortunately you can only restore a database that you've made a backup of.  So if you didn't make a backup of your most recent database, there's no way to simply restore it.

All hope is not lost, however.  You can rebuild your database from your tournaments.  But it's a somewhat manual process.  Here is what you do:

First, you should decide if you want to keep the "restored" DB you already have.  If not, you might want to delete it first.  To delete it, follow these steps:
- Select the Preferences tab
- Press the Data Stores button
- Right-click on the "Active" row and select "Explore folder".  This will open Windows Explorer to that folder.  You should see the folders "db", "images", "receipts", "saves", "sounds", and "templates".
- Select the folder named "db" and just rename it (right-click and select "Rename" or just press F2).  Rename it anything you want.
- Exit and restart the TD.  You should now have an empty database.

To rebuild your database, follow these steps:
- Load one of your tournaments.  I would load the latest (most recently run) tournament you have.
- On the Players tab, press the "Database" button
- Press the first button "Add to the database players in your current tournament"
- Select all players by clicking the checkbox in the title row
- Press OK
- Load the next tournament (try to stay in reverse chronological order)
- Repeat with all tournaments

You should find as you continue through your tournaments that the set of players NOT already in your database shrinks each time.  Ultimately you should have a good player database.

What this will NOT do is restore any players that were in your database that didn't participate in any tournaments (unless they were added to a tournament but never bought-in).  By going in reverse chronological order, if any players have any personal information (like phone or address) that has changed over time, hopefully you'll get the latest copy of that information.

Help Me / Re: Chop Points not adding up Correctly
« on: March 25, 2019, 01:01:23 PM »
The "in the money" part of the formula is this:

if(inTheMoney, 10 * (inTheMoneyRank - r + 1))

This does indeed give 10 points for each successive rank which is "in the money".  That is, the lowest rank that is in the money gets 10 points, the next lowest rank that is in the money gets 20 points, etc.  So, for a tournament with 4 ranked prizes, 4th place gets 10 points, 3rd place gets 20 points, 2nd place gets 30 points, and 1st place gets 40 points.  This is in addition to the points allotted by the other part of the formula.

If you want all players "in the money" to simply get an additional 10 points, that part of the formula should be changed to:

if(inTheMoney, 10)

This actually is probably a little confusing when trying to test it in the Points for Playing Formula dialog.  That's because when you use the "Test Range" feature, all of the variables (except rank) remain the same.  "inTheMoney" should only be "true" for ranks 1-4 (in your example), but when testing it will be "true" for all players.  So you want be able to see the points "jump" from 5th place to 4th place.  Try this formula:

(10 * (n - r + 1)) + if(rank <= inTheMoneyRank, 10) - (10 * numberOfRebuys)

This is actually the same formula, but we've replaced "inTheMoney" with "rank <= inTheMoneyRank", which is actually the equivalent to "inTheMoney".  While the first form is correct and will work just fine, it's harder to test.  But either form is the same formula.

Beta Testing / Re: 3.5 Progress
« on: March 20, 2019, 04:26:23 PM »
- Added "hide cursor" preference.  This just causes the mouse pointer to disappear automatically after a few seconds when over the Game window, and reappear when moved (you'll see the same behavior when watching a YouTube video, for example).  This was actually a feature many years ago, but removed when it caused problems.  In all likelihood my code was buggy, but I removed it instead of chasing it down.
- Fixed a bug when player images are missing (from version 3.4).
- Removed some obsolete code and updated additional places where paths were being created using "/" or "\" instead of using proper os-specific methods (this will help should we ever get the TD to run on MacOS or Linux).
- Realized many places we show a file dialog were actually implemented incorrectly, and fixed them.
- Discovered that the loading of tournaments when running stats had slowed WAY down.  Figured this was due to me changing file I/O back to synchronous instead of asynchronous.  Returned this part to asynchronous and didn't see any improvement.  Finally realized the introduction of a package that allows for proper detection of file encodings (which is required since some files saved with the TD could be encoded with ASCII, UTF-8, or UTF-16) caused this.  Found a workaround to return it to normal speed and still use the encoding detection.
- Added 10 new screen transitions because I can't help myself.
- Started working on restyling the scrollbars on the built-in screens (Player Rankings, Seating Chart, etc), since we can now do this.
- Fixed the <timer> token, which previously used VML (no longer supported on any browser), to use SVG.

Most time was spent working on the layout.  I experimented using flexbox and it turns out the Chrome rendering issue I was trying to avoid is also present when using flexbox or grid layout.  So it doesn't help to retool the layout in this way.  I spent quite a bit of time experimenting, testing, and going back and forth between using "zoom" versus "scale" for layout scaling.  I found a new issue with "zoom" that ultimately pushed me to decide to move ahead using "scale".

zoom: actually looks good, but doesn't work on iframes.  I can probably work around the iframe issue.  But also noticed that using zoom can change the way the layout looks.  That is, a scaled down version of the screen using "zoom" may not look exactly like a smaller version, but may have spacing changes within the layout.

scale: Looks great, works with iframes, but introduces gaps between elements.

So to give you an idea of the "introduces gaps" issue with using "scale", here is the default layout scaled to 640x480:

Notice the line below the description?  That shouldn't be there.  Also, the lines below "No Limit Texas Hold 'Em", "Next Round: No Limit Texas Hold 'Em", and "Blinds $15/$30" shouldn't be there.

If I turn off borders, the issue is even more pronounced.  There should be NO white lines in this image:

I decided that I could probably modify the layouts to avoid this (mostly) and just live with it as a Chrome bug until they finally fix it.  Shortly after that I realized that having property sets be part of columns and rows would be required, which is not a simple change.  It might be the right thing to do eventually, but I don't want to make that kind of change yet.

But today through some additional google-fu I finally found that I am not the only person who has seen this issue.  It was submitted to Google in June of 2017, so I'm not holding my breath on it being fixed anytime soon.  However, the same search came with a workaround, which I *think* will work for us.  When I apply the workaround, the layout looks like this:

And with borders turned off:


I just got back from a vacation, so I've got to get my head back around where I'm at in this process.  Making progress every day and getting much closer.

Help Me / Re: Chop Points not adding up Correctly
« on: March 19, 2019, 09:24:21 AM »
I'm currently on vacation, so I've only quickly gone over the formula, but it looks OK to me.

When players chop, you can control how they ultimately rank.  By default, chopping players will tie for the specific rank.  For example, if the final two players chop they will tie for 1st place (and there will be no player ranking 2nd).  Prizes and points are awarded based on this rank, so if you have a Points for Playing formula configured, both players will be computed having 1st place rank.

On the Chop dialog, you can control the ranking.  On the right side of the dialog is a column for Ranking, which has an input for "Relative" and next to it displays the actual ranking.  The Relative can hold any numeric value, positive or negative.  This simply controls the final ordering of the players.  For example, if you give one player a relative rank of 0 (zero) and the other a relative rank of 1 (or 2 or 10 or 1000), the first player will be ranked 1st and the 2nd player will be ranked 2nd.  Give the first player a relative rank of 2 and the second player a relative rank of 1 and their actual ranking will swap.  Give them both the same value and they will tie.

Pages: [1] 2 3 ... 379