Refactor introtext and rules into the locale

This commit is contained in:
mniip 2020-03-24 12:51:57 +03:00
parent 53c5487abe
commit cae041cdee
10 changed files with 210 additions and 161 deletions

View File

@ -1,59 +0,0 @@
#pragma once
const char *const introTextData =
"\blThe Powder Toy - Version " MTOS(SAVE_VERSION) "." MTOS(MINOR_VERSION) " - https://powdertoy.co.uk, irc.freenode.net #powder\n"
"\xEE\x81\xA9\xEE\x81\xA9\xEE\x81\xA9\xEE\x81\xA9\xEE\x81\xA9\xEE\x81\xA9\xEE\x81\xA9\xEE\x81\xA9\xEE\x81\xA9\xEE\x81\xA9\xEE\x81\xA9\xEE\x81\xA9\xEE\x81\xA9\xEE\x81\xA9\xEE\x81\xA9\xEE\x81\xA9\xEE\x81\xA9\xEE\x81\xA9\xEE\x81\xA9\n"
"\n"
"\bgControl+C/V/X are Copy, Paste and cut respectively.\n"
"\bgTo choose a material, hover over one of the icons on the right, it will show a selection of elements in that group.\n"
"\bgPick your material from the menu using mouse left/right buttons.\n"
"Draw freeform lines by dragging your mouse left/right button across the drawing area.\n"
"Shift+drag will create straight lines of particles.\n"
"Ctrl+drag will result in filled rectangles.\n"
"Ctrl+Shift+click will flood-fill a closed area.\n"
"Use the mouse scroll wheel, or '[' and ']', to change the tool size for particles.\n"
"Middle click or Alt+Click to \"sample\" the particles.\n"
"Ctrl+Z will act as Undo.\n"
"\n\boUse 'Z' for a zoom tool. Click to make the drawable zoom window stay around. Use the wheel to change the zoom strength.\n"
"The spacebar can be used to pause physics. Use 'F' to step ahead by one frame.\n"
"Use 'S' to save parts of the window as 'stamps'. 'L' loads the most recent stamp, 'K' shows a library of stamps you saved.\n"
"Use 'P' to take a screenshot and save it into the current directory.\n"
"Use 'H' to toggle the HUD. Use 'D' to toggle debug mode in the HUD.\n"
"\n"
"Contributors: \bgStanislaw K Skowronek (Designed the original Powder Toy),\n"
"\bgSimon Robertshaw, Skresanov Savely, cracker64, Catelite, Bryan Hoyle, Nathan Cousins, jacksonmj,\n"
"\bgFelix Wallin, Lieuwe Mosch, Anthony Boot, Matthew \"me4502\", MaksProg, jacob1, mniip, LBPHacker\n"
"\n"
#ifndef BETA
"\bgTo use online features such as saving, you need to register at: \brhttps://powdertoy.co.uk/Register.html\n"
#else
"\brThis is a BETA, you cannot save things publicly. If you are planning on publishing any saves, use the release version\n"
#endif
"\n"
"\bt" MTOS(SAVE_VERSION) "." MTOS(MINOR_VERSION) "." MTOS(BUILD_NUM) " " IDENT_PLATFORM " "
#ifdef SNAPSHOT
"SNAPSHOT " MTOS(SNAPSHOT_ID) " "
#elif MOD_ID > 0
"MODVER " MTOS(SNAPSHOT_ID) " "
#endif
#ifdef X86
"X86 "
#endif
#ifdef X86_SSE
"X86_SSE "
#endif
#ifdef X86_SSE2
"X86_SSE2 "
#endif
#ifdef X86_SSE3
"X86_SSE3 "
#endif
#ifdef LUACONSOLE
"LUACONSOLE "
#endif
#ifdef GRAVFFT
"GRAVFFT "
#endif
#ifdef REALISTIC
"REALISTIC"
#endif
;

View File

@ -1,10 +1,138 @@
#include "Config.h"
#include "common/Localization.h" #include "common/Localization.h"
#include "common/Internationalization.h" #include "common/Internationalization.h"
Locale LocaleEN { struct LocaleEN : public Locale
[]{ return String("English"); }, {
[] String GetName() const { return "English"_ascii; }
void Set() const
{ {
using i18n::translation; using i18n::translation;
} }
String GetIntroText() const
{
return
U"\blThe Powder Toy - Version " MTOS(SAVE_VERSION) "." MTOS(MINOR_VERSION) " - https://powdertoy.co.uk, irc.freenode.net #powder\n"
"\uE069\uE069\uE069\uE069\uE069\uE069\uE069\uE069\uE069\uE069\uE069\uE069\uE069\uE069\uE069\uE069\uE069\uE069\uE069\n"
"\n"
"\bgControl+C/V/X are Copy, Paste and cut respectively.\n"
"\bgTo choose a material, hover over one of the icons on the right, it will show a selection of elements in that group.\n"
"\bgPick your material from the menu using mouse left/right buttons.\n"
"Draw freeform lines by dragging your mouse left/right button across the drawing area.\n"
"Shift+drag will create straight lines of particles.\n"
"Ctrl+drag will result in filled rectangles.\n"
"Ctrl+Shift+click will flood-fill a closed area.\n"
"Use the mouse scroll wheel, or '[' and ']', to change the tool size for particles.\n"
"Middle click or Alt+Click to \"sample\" the particles.\n"
"Ctrl+Z will act as Undo.\n"
"\n\boUse 'Z' for a zoom tool. Click to make the drawable zoom window stay around. Use the wheel to change the zoom strength.\n"
"The spacebar can be used to pause physics. Use 'F' to step ahead by one frame.\n"
"Use 'S' to save parts of the window as 'stamps'. 'L' loads the most recent stamp, 'K' shows a library of stamps you saved.\n"
"Use 'P' to take a screenshot and save it into the current directory.\n"
"Use 'H' to toggle the HUD. Use 'D' to toggle debug mode in the HUD.\n"
"\n"
"Contributors: \bgStanislaw K Skowronek (Designed the original Powder Toy),\n"
"\bgSimon Robertshaw, Skresanov Savely, cracker64, Catelite, Bryan Hoyle, Nathan Cousins, jacksonmj,\n"
"\bgFelix Wallin, Lieuwe Mosch, Anthony Boot, Matthew \"me4502\", MaksProg, jacob1, mniip, LBPHacker\n"
"\n"
#ifndef BETA
"\bgTo use online features such as saving, you need to register at: \brhttps://powdertoy.co.uk/Register.html\n"
#else
"\brThis is a BETA, you cannot save things publicly. If you are planning on publishing any saves, use the release version\n"
#endif
;
}
String GetSavePublishingInfo() const
{
return
U"In The Powder Toy, one can save simulations to their account in two privacy levels: Published and unpublished. You can choose which one by checking or unchecking the 'publish' checkbox. Saves are unpublished by default, so if you do not check publish nobody will be able to see your saves.\n"
"\n"
"\btPublished saves\bw will appear on the 'By Date' feed and will be seen by many people. These saves also contribute to your Average Score, which is displayed publicly on your profile page on the website. Publish saves that you want people to see so they can comment and vote on.\n"
"\btUnpublished saves\bw will not be shown on the 'By Date' feed. These will not contribute to your Average Score. They are not completely private though, as anyone who knows the save id will be able to view it. You can give the save id out to show specific people the save but not allow just everyone to see it.\n"
"\n"
"To quickly resave a save, open it and click the left side of the split resave button to \bt'Reupload the current simulation'\bw. If you want to change the description or change the published status, you can click the right side to \bt'Modify simulation properties'\bw. Note that you can't change the name of saves; this will create an entirely new save with no comments, votes, or tags; separate from the original.\n"
"You may want to publish an unpublished save after it is finished, or to unpublish some currently published ones. You can do this by opening the save, selecting the 'Modify simulation properties' button, and changing the published status there. You can also \btunpublish or delete saves\bw by selecting them in the 'my own' section of the browser and clicking either one of the buttons that appear on bottom.\n"
"If a save is under a week old and gains popularity fast, it will be automatically placed on the \btfront page\bw. Only published saves will be able to get here. Moderators can also choose to promote any save onto the front page, but this happens rarely. They can also demote any save from the front page that breaks a rule or they feel doesn't belong.\n"
"Once you make a save, you can resave it as many times as you want. A short previous \btsave history\bw is saved, just right click any save in the save browser and select 'View History' to view it. This is useful for when you accidentally save something you didn't mean to and want to go back to the old version.\n";
}
String GetRules() const
{
return
U"\boSection S: Social and Community Rules\n"
"\bwThere are a few rules you should follow while interacting with the community. These rules are enforced by staff members and any issues related to violations of these rules may be brought to our attention by users. This section applies to saves uploaded, comments area, forums, and other areas of the community.\n"
"\n"
"\bt1. Try to use proper grammar.\bw English is the official community language, but use is not required in regional or cultural groups. If you cannot write English well, we advise that you use Google Translate.\n"
"\bt2. Do not spam.\bw There's not a one size fits all definition here, but the idea is usually obvious. In addition, the following are seen as spam and may be hidden or deleted:\n"
"- Posting multiple threads on the same subject. Try to combine threads on game feedback or suggestions into one thread.\n"
"- Bumping an old thread by replying. This is what we call 'necro' or 'necroing'. The content of the thread may be stale (fixing issues, ideas, etc). We recommend posting a new thread for an updated or more current response.\n"
"- Posting on a thread with '+1' or other short replies. There's no need to constantly bump a thread and make finding replies difficult. Replies are great for constructive feedback, while the '+1' button is to show your support for the content.\n"
"- Comments that are excessively long or gibberish. Making comments such as repeating the same letter or have little to no intended purpose, fall under this rule. Comments that are in a different language are exempt.\n"
"- Excessive formatting. UPPERCASE, Bold, and italics can be nice with moderate use, but please do not use them throughout the entire post.\n"
"\bt3. Keep swearing to a minimum.\bw Comments or saves containing swearing are at risk of being deleted. This also includes swearing in other languages.\n"
"\bt4. Refrain from uploading sexually explicit, offensive, or other inappropriate materials.\bw\n"
"- These include, but are not limited to: sex, drugs, racism, excessive politics, or anything that offends or insults a group of people.\n"
"- Reference to these topics in other languages is also prohibited. Do not attempt to bypass this rule.\n"
"- Posting URLs or images that violate this rule is prohibited. This includes links or text in your profile information.\n"
"\bt5. Do not advertise third-party games, sites, or other places not related to The Powder Toy.\bw\n"
"- Mainly this rule is intended to prevent people going through and advertising their own games and products.\n"
"- Unauthorized or unofficial community gathering places, such as Discord, are prohibited.\n"
"\bt6. Trolling is not allowed.\bw As with some rules, there's no clear definition. Users who repeatedly troll are far more likely to be banned and recieve longer bans than others.\n"
"\bt7. Do not impersonate anyone.\bw Registering accounts with names intentionally similar to other users in our community or other online communities is prohibited.\n"
"\bt8. Do not post about moderator decisions or issues.\bw If there is a problem regarding a ban on your account or content removal, please contact a moderator through the messages system. Otherwise, discussion about moderator actions should be avoided.\n"
"\bt9. Avoid backseat moderating.\bw Moderators are the ones who make the decisions. Users should refrain from threatening bans or possible results from breaking a rule. If there is a possible issue or you are unsure, we recommend reporting the issue through the 'Report' button or via the messaging system on the website.\n"
"\bt10. Condoning of breaking common laws is prohibited.\bw The jurisdiction of which country's laws applies is not clear, but there are some common ones to know. These include, but not limited to:\n"
"- Piracy of software, music, bagels, etc.\n"
"- Hacking / Stealing accounts\n"
"- Theft / Fraud\n"
"\bt11. Do not stalk or harass any user.\bw This has been a growing problem in recent years by different methods, but generally these include:\n"
"- 'Doxing' user(s) to find where they live or their real identity\n"
"- Constantly messaging a user when they wish to refrain from any contact\n"
"- Mass downvoting saves\n"
"- Posting rude or unnecessary comments on someone's content (saves, forum threads, etc)\n"
"- Coercing a group of users to 'target' a user\n"
"- Personal arguments or hatred. This could be arguing in the comments or making hate saves\n"
"- Discrimination, in general, of people. This could be religious, ethnic, etc.\n"
"\n"
"\boSection G: In-Game Rules\n"
"\bwThis section of the rules is focused on in-game actions. Though, Section S also applies in-game, the following rules are more specialized to in-game community interaction.\n"
"\bt1. Don't claim other people's work.\bw This could be simply re-uploading another user's or utilizing large sections of saves. Derivative works are allowed, with proper usage. Should you utilize someone's work, by default you must credit the author. Unless the author has explicitly noted different usage terms, this is the standard policy. Derivative works are characterized by innovative usage and originality percentage (ie. how much is original versus someone's work?). Stolen saves will be unpublished or disabled.\n"
"\bt2. Self-voting or vote fraud is not allowed.\bw This is defined as making multiple accounts to vote on your own saves or the saves of others. We enforce this rule strictly, therefore, you must understand that there are very few successful ban appeals. Please ensure you and other accounts are not voting from the same household. All alternate accounts will be permanently banned, the main account will be temporarily banned and any affected saves will be disabaled.\n"
"\bt3. Asking for votes of any kind is frowned upon.\bw Saves which do this will be unpublished until the issue is fixed. Examples of such that are under this rules are:\n"
"- Signs that may hint at voting up or down. The signature green arrow or asking for votes goes under this rule.\n"
"- Gimmicks that ask for votes. These might be a total number of votes in exchange for something, like '100 votes and I'll make a better version'. This is what we define as vote farming. Any type of vote farming is not allowed.\n"
"- Asking for votes in return for usage of a save or for any other reason is prohibited.\n"
"\bt4. Do not spam.\bw As mentioned earlier, there are no standards for what counts as spam. Here are some examples that may qualify as spamming:\n"
"- Uploading or re-uploading similar saves within a short amount of time. Don't try to circumvent the system to have your saves seen/voted by people. This includes uploading 'junk' or 'blank' saves with little to no purpose. These saves will be unpublished.\n"
"- Uploading text-only saves. These may be announcements or looking for help of sorts. We have the forums and comments area available for many purposes these text-only saves would serve. These saves will be removed from front page.\n"
"- Uploading art saves is not strictly prohibited, but may result in a front-page demotion. We like to see usage of the variety of elements in a creative manner. Lack of these factors (such as in deco-only saves) will typically result in a front-page demotion\n"
"\bt5. Refrain from uploading sexually explicit or other inappropriate materials. These saves will be deleted and will lead to a ban.\bw\n"
"- These include, but are not limited to: sex, drugs, racism, excessive politics, or anything that offends or insults a group of people.\n"
"- Don't try to circumvent this rule. Anything that intentionally refers to these concepts/ideas by direct or indirect means falls under this rule.\n"
"- Reference to these topics in other languages is also prohibited. Do not attempt to bypass this rule.\n"
"- Posting URLs or images that violate this rule is prohibited. This includes links or text in your profile information.\n"
"\bt6. Image plotting is strictly prohibited.\bw This includes usage of scripting or any third-party tools to plot or create a save for you. Saves using CGI will be deleted and you may receive a ban.\n"
"\bt7. Keep logos and signs to a minimum.\bw These saves may be removed from front page. Items that this rule restricts are:\n"
"- Excessive logos placed\n"
"- Signs without intended purpose\n"
"- Fake update or notifications signs\n"
"- Linking other saves that have no related purposes\n"
"\bt8. Do not place offtopic or inappropriate tags.\bw Tags are only there to improve search results. They should generally only be one word descriptions of the save. Sentences or subjective tags may be deleted. Inappropriate or offensive tags will likely get you banned.\n"
"\bt9. Intentional lag inducing or crashing saves are prohibited.\bw If the majority of users are writing about the save causing crashes or lag, then the save will fall under this rule. These saves will be removed from front page or disabled.\n"
"\bt10. Do not misuse the reporting system.\bw Sending in report reasons such as 'bad save' or gibberish wastes our time. Unless the issue pertains to a possible rule violation or community issue, please refrain from sending a report. If you think the save violates or poses a community issue, send a report anyway! Bans will never happen if you are reporting a save in good faith.\n"
"\bt11. Do not ask for saves to be demoted or removed from the front-page.\bw Unless the save violates any rules, it will stay on the front-page. There is no exception to this rule for art saves, please do not report art either.\n"
"\n"
"\boSection R: Other\n"
"\bwModerators may interpret these rules as they see fit. Not all rules are equal, some are enforced less than others. Moderators make the final decision on what is and isn't against the rules, but we have made our best effort here to cover all unwanted behavior here. Notice will be posted in this thread whenever the rules are updated.\n"
"\n"
"Violation of these rules may result in removal of posts / comments, unpublishing or disabling saves, removing saves from front page, or in more extreme cases, a temporary or permanent ban. There are various manual and automated measures in place to enforce these rules. The severity and resulting decisions may not be consistent between moderators.\n"
"\n"
"If you have any questions about what is and isn't against the rules, feel free to contact a moderator.";
}
}; };
Locale const &Locale_EN = LocaleEN{};

View File

@ -2,9 +2,9 @@
#include "common/Localization.h" #include "common/Localization.h"
extern Locale LocaleEN; extern Locale const &Locale_EN;
const std::vector<Locale *> locales = const std::vector<Locale const *> locales =
{ {
&LocaleEN, &Locale_EN,
}; };

View File

@ -159,4 +159,60 @@
#define SDEUT #define SDEUT
// Detailed build information string
#ifdef SNAPSHOT
#define SNAPSHOT_VER "SNAPSHOT " MTOS(SNAPSHOT_ID) " "
#elif MOD_ID > 0
#define SNAPSHOT_VER "MODVER " MTOS(SNAPSHOT_ID) " "
#else
#define SNAPSHOT_VER
#endif
#ifdef X86
#define HAVE_X86 "X86 "
#else
#define HAVE_X86 ""
#endif
#ifdef X86_SSE
#define HAVE_X86_SSE "X86_SSE "
#else
#define HAVE_X86_SSE ""
#endif
#ifdef X86_SSE2
#define HAVE_X86_SSE2 "X86_SSE2 "
#else
#define HAVE_X86_SSE2 ""
#endif
#ifdef X86_SSE3
#define HAVE_X86_SSE3 "X86_SSE3 "
#else
#define HAVE_X86_SSE3 ""
#endif
#ifdef LUACONSOLE
#define HAVE_LUACONSOLE "LUACONSOLE "
#else
#define HAVE_LUACONSOLE ""
#endif
#ifdef GRAVFFT
#define HAVE_GRAVFFT "GRAVFFT "
#else
#define HAVE_GRAVFFT ""
#endif
#ifdef REALISTIC
#define HAVE_REALISTIC "REALISTIC "
#else
#define HAVE_REALISTIC ""
#endif
#define BUILD_FLAVOR_STRING \
MTOS(SAVE_VERSION) "." MTOS(MINOR_VERSION) "." MTOS(BUILD_NUM) " " IDENT_PLATFORM " " \
SNAPSHOT_VER HAVE_X86 HAVE_X86_SSE HAVE_X86_SSE2 HAVE_X86_SSE3 HAVE_LUACONSOLE HAVE_GRAVFFT HAVE_REALISTIC
#endif /* CONFIG_H */ #endif /* CONFIG_H */

View File

@ -33,6 +33,7 @@
#endif #endif
#include "localization/List.h" #include "localization/List.h"
#include "common/Internationalization.h"
#include "Format.h" #include "Format.h"
#include "Misc.h" #include "Misc.h"
@ -684,9 +685,11 @@ int main(int argc, char * argv[])
#endif // I18N_DEBUG #endif // I18N_DEBUG
String localeName = Client::Ref().GetPrefString("Locale", ""); String localeName = Client::Ref().GetPrefString("Locale", "");
for(Locale *locale : locales) currentLocale = locales[0];
for(Locale const *locale : locales)
if(locale->GetName() == localeName) if(locale->GetName() == localeName)
locale->Set(); currentLocale = locale;
currentLocale->Set();
scale = Client::Ref().GetPrefInteger("Scale", 1); scale = Client::Ref().GetPrefInteger("Scale", 1);
resizable = Client::Ref().GetPrefBool("Resizable", false); resizable = Client::Ref().GetPrefBool("Resizable", false);

View File

@ -30,13 +30,12 @@ namespace i18n
} }
#ifdef I18N_DEBUG #ifdef I18N_DEBUG
std::set<std::vector<ByteString> > &activeKeys() std::set<std::vector<ByteString> > &activeKeys()
{ {
static std::set<std::vector<ByteString> > activeKeys; static std::set<std::vector<ByteString> > activeKeys;
return activeKeys; return activeKeys;
} }
#endif // I18N_DEBUG #endif // I18N_DEBUG
} }
Locale const *currentLocale = nullptr;

View File

@ -6,6 +6,7 @@
#include <vector> #include <vector>
#include "String.h" #include "String.h"
#include "Localization.h"
/* /*
We handle internationalization by maintaining a map from "key" strings, to We handle internationalization by maintaining a map from "key" strings, to
@ -146,6 +147,8 @@ namespace i18n
} }
} }
extern struct Locale const *currentLocale;
#ifndef I18N_DEBUG #ifndef I18N_DEBUG
inline String operator""_i18n(char const *str, size_t) inline String operator""_i18n(char const *str, size_t)

View File

@ -4,13 +4,16 @@
#include "String.h" #include "String.h"
class Locale struct Locale
{ {
public:
// The name of the language this locale is for, readable in both the native // The name of the language this locale is for, readable in both the native
// language and in English; // language and in English;
std::function<String()> GetName; virtual String GetName() const = 0;
// Populate the translations map. // Populate the translations map.
std::function<void()> Set; virtual void Set() const = 0;
virtual String GetIntroText() const = 0;
virtual String GetSavePublishingInfo() const = 0;
virtual String GetRules() const = 0;
}; };

View File

@ -10,7 +10,6 @@
#include "Notification.h" #include "Notification.h"
#include "Brush.h" #include "Brush.h"
#include "IntroText.h"
#include "QuickOptions.h" #include "QuickOptions.h"
#include "DecorationTool.h" #include "DecorationTool.h"
#include "ToolButton.h" #include "ToolButton.h"
@ -190,7 +189,7 @@ GameView::GameView():
buttonTip(""_ascii), buttonTip(""_ascii),
isButtonTipFadingIn(false), isButtonTipFadingIn(false),
introText(2048), introText(2048),
introTextMessage(ByteString(introTextData).FromUtf8()), introTextMessage(currentLocale->GetIntroText() + "\n\bt" BUILD_FLAVOR_STRING ""_ascii),
doScreenshot(false), doScreenshot(false),
screenshotIndex(0), screenshotIndex(0),

View File

@ -252,95 +252,12 @@ void ServerSaveActivity::Exit()
void ServerSaveActivity::ShowPublishingInfo() void ServerSaveActivity::ShowPublishingInfo()
{ {
String info = new InformationMessage("Publishing Info", currentLocale->GetSavePublishingInfo(), true);
"In The Powder Toy, one can save simulations to their account in two privacy levels: Published and unpublished. You can choose which one by checking or unchecking the 'publish' checkbox. Saves are unpublished by default, so if you do not check publish nobody will be able to see your saves.\n"
"\n"
"\btPublished saves\bw will appear on the 'By Date' feed and will be seen by many people. These saves also contribute to your Average Score, which is displayed publicly on your profile page on the website. Publish saves that you want people to see so they can comment and vote on.\n"
"\btUnpublished saves\bw will not be shown on the 'By Date' feed. These will not contribute to your Average Score. They are not completely private though, as anyone who knows the save id will be able to view it. You can give the save id out to show specific people the save but not allow just everyone to see it.\n"
"\n"
"To quickly resave a save, open it and click the left side of the split resave button to \bt'Reupload the current simulation'\bw. If you want to change the description or change the published status, you can click the right side to \bt'Modify simulation properties'\bw. Note that you can't change the name of saves; this will create an entirely new save with no comments, votes, or tags; separate from the original.\n"
"You may want to publish an unpublished save after it is finished, or to unpublish some currently published ones. You can do this by opening the save, selecting the 'Modify simulation properties' button, and changing the published status there. You can also \btunpublish or delete saves\bw by selecting them in the 'my own' section of the browser and clicking either one of the buttons that appear on bottom.\n"
"If a save is under a week old and gains popularity fast, it will be automatically placed on the \btfront page\bw. Only published saves will be able to get here. Moderators can also choose to promote any save onto the front page, but this happens rarely. They can also demote any save from the front page that breaks a rule or they feel doesn't belong.\n"
"Once you make a save, you can resave it as many times as you want. A short previous \btsave history\bw is saved, just right click any save in the save browser and select 'View History' to view it. This is useful for when you accidentally save something you didn't mean to and want to go back to the old version.\n"
;
new InformationMessage("Publishing Info", info, true);
} }
void ServerSaveActivity::ShowRules() void ServerSaveActivity::ShowRules()
{ {
String rules = new InformationMessage("Save Uploading Rules", currentLocale->GetRules(), true);
"\boSection S: Social and Community Rules\n"
"\bwThere are a few rules you should follow while interacting with the community. These rules are enforced by staff members and any issues related to violations of these rules may be brought to our attention by users. This section applies to saves uploaded, comments area, forums, and other areas of the community.\n"
"\n"
"\bt1. Try to use proper grammar.\bw English is the official community language, but use is not required in regional or cultural groups. If you cannot write English well, we advise that you use Google Translate.\n"
"\bt2. Do not spam.\bw There's not a one size fits all definition here, but the idea is usually obvious. In addition, the following are seen as spam and may be hidden or deleted:\n"
"- Posting multiple threads on the same subject. Try to combine threads on game feedback or suggestions into one thread.\n"
"- Bumping an old thread by replying. This is what we call 'necro' or 'necroing'. The content of the thread may be stale (fixing issues, ideas, etc). We recommend posting a new thread for an updated or more current response.\n"
"- Posting on a thread with '+1' or other short replies. There's no need to constantly bump a thread and make finding replies difficult. Replies are great for constructive feedback, while the '+1' button is to show your support for the content.\n"
"- Comments that are excessively long or gibberish. Making comments such as repeating the same letter or have little to no intended purpose, fall under this rule. Comments that are in a different language are exempt.\n"
"- Excessive formatting. UPPERCASE, Bold, and italics can be nice with moderate use, but please do not use them throughout the entire post.\n"
"\bt3. Keep swearing to a minimum.\bw Comments or saves containing swearing are at risk of being deleted. This also includes swearing in other languages.\n"
"\bt4. Refrain from uploading sexually explicit, offensive, or other inappropriate materials.\bw\n"
"- These include, but are not limited to: sex, drugs, racism, excessive politics, or anything that offends or insults a group of people.\n"
"- Reference to these topics in other languages is also prohibited. Do not attempt to bypass this rule.\n"
"- Posting URLs or images that violate this rule is prohibited. This includes links or text in your profile information.\n"
"\bt5. Do not advertise third-party games, sites, or other places not related to The Powder Toy.\bw\n"
"- Mainly this rule is intended to prevent people going through and advertising their own games and products.\n"
"- Unauthorized or unofficial community gathering places, such as Discord, are prohibited.\n"
"\bt6. Trolling is not allowed.\bw As with some rules, there's no clear definition. Users who repeatedly troll are far more likely to be banned and recieve longer bans than others.\n"
"\bt7. Do not impersonate anyone.\bw Registering accounts with names intentionally similar to other users in our community or other online communities is prohibited.\n"
"\bt8. Do not post about moderator decisions or issues.\bw If there is a problem regarding a ban on your account or content removal, please contact a moderator through the messages system. Otherwise, discussion about moderator actions should be avoided.\n"
"\bt9. Avoid backseat moderating.\bw Moderators are the ones who make the decisions. Users should refrain from threatening bans or possible results from breaking a rule. If there is a possible issue or you are unsure, we recommend reporting the issue through the 'Report' button or via the messaging system on the website.\n"
"\bt10. Condoning of breaking common laws is prohibited.\bw The jurisdiction of which country's laws applies is not clear, but there are some common ones to know. These include, but not limited to:\n"
"- Piracy of software, music, bagels, etc.\n"
"- Hacking / Stealing accounts\n"
"- Theft / Fraud\n"
"\bt11. Do not stalk or harass any user.\bw This has been a growing problem in recent years by different methods, but generally these include:\n"
"- 'Doxing' user(s) to find where they live or their real identity\n"
"- Constantly messaging a user when they wish to refrain from any contact\n"
"- Mass downvoting saves\n"
"- Posting rude or unnecessary comments on someone's content (saves, forum threads, etc)\n"
"- Coercing a group of users to 'target' a user\n"
"- Personal arguments or hatred. This could be arguing in the comments or making hate saves\n"
"- Discrimination, in general, of people. This could be religious, ethnic, etc.\n"
"\n"
"\boSection G: In-Game Rules\n"
"\bwThis section of the rules is focused on in-game actions. Though, Section S also applies in-game, the following rules are more specialized to in-game community interaction.\n"
"\bt1. Don't claim other people's work.\bw This could be simply re-uploading another user's or utilizing large sections of saves. Derivative works are allowed, with proper usage. Should you utilize someone's work, by default you must credit the author. Unless the author has explicitly noted different usage terms, this is the standard policy. Derivative works are characterized by innovative usage and originality percentage (ie. how much is original versus someone's work?). Stolen saves will be unpublished or disabled.\n"
"\bt2. Self-voting or vote fraud is not allowed.\bw This is defined as making multiple accounts to vote on your own saves or the saves of others. We enforce this rule strictly, therefore, you must understand that there are very few successful ban appeals. Please ensure you and other accounts are not voting from the same household. All alternate accounts will be permanently banned, the main account will be temporarily banned and any affected saves will be disabaled.\n"
"\bt3. Asking for votes of any kind is frowned upon.\bw Saves which do this will be unpublished until the issue is fixed. Examples of such that are under this rules are:\n"
"- Signs that may hint at voting up or down. The signature green arrow or asking for votes goes under this rule.\n"
"- Gimmicks that ask for votes. These might be a total number of votes in exchange for something, like '100 votes and I'll make a better version'. This is what we define as vote farming. Any type of vote farming is not allowed.\n"
"- Asking for votes in return for usage of a save or for any other reason is prohibited.\n"
"\bt4. Do not spam.\bw As mentioned earlier, there are no standards for what counts as spam. Here are some examples that may qualify as spamming:\n"
"- Uploading or re-uploading similar saves within a short amount of time. Don't try to circumvent the system to have your saves seen/voted by people. This includes uploading 'junk' or 'blank' saves with little to no purpose. These saves will be unpublished.\n"
"- Uploading text-only saves. These may be announcements or looking for help of sorts. We have the forums and comments area available for many purposes these text-only saves would serve. These saves will be removed from front page.\n"
"- Uploading art saves is not strictly prohibited, but may result in a front-page demotion. We like to see usage of the variety of elements in a creative manner. Lack of these factors (such as in deco-only saves) will typically result in a front-page demotion\n"
"\bt5. Refrain from uploading sexually explicit or other inappropriate materials. These saves will be deleted and will lead to a ban.\bw\n"
"- These include, but are not limited to: sex, drugs, racism, excessive politics, or anything that offends or insults a group of people.\n"
"- Don't try to circumvent this rule. Anything that intentionally refers to these concepts/ideas by direct or indirect means falls under this rule.\n"
"- Reference to these topics in other languages is also prohibited. Do not attempt to bypass this rule.\n"
"- Posting URLs or images that violate this rule is prohibited. This includes links or text in your profile information.\n"
"\bt6. Image plotting is strictly prohibited.\bw This includes usage of scripting or any third-party tools to plot or create a save for you. Saves using CGI will be deleted and you may receive a ban.\n"
"\bt7. Keep logos and signs to a minimum.\bw These saves may be removed from front page. Items that this rule restricts are:\n"
"- Excessive logos placed\n"
"- Signs without intended purpose\n"
"- Fake update or notifications signs\n"
"- Linking other saves that have no related purposes\n"
"\bt8. Do not place offtopic or inappropriate tags.\bw Tags are only there to improve search results. They should generally only be one word descriptions of the save. Sentences or subjective tags may be deleted. Inappropriate or offensive tags will likely get you banned.\n"
"\bt9. Intentional lag inducing or crashing saves are prohibited.\bw If the majority of users are writing about the save causing crashes or lag, then the save will fall under this rule. These saves will be removed from front page or disabled.\n"
"\bt10. Do not misuse the reporting system.\bw Sending in report reasons such as 'bad save' or gibberish wastes our time. Unless the issue pertains to a possible rule violation or community issue, please refrain from sending a report. If you think the save violates or poses a community issue, send a report anyway! Bans will never happen if you are reporting a save in good faith.\n"
"\bt11. Do not ask for saves to be demoted or removed from the front-page.\bw Unless the save violates any rules, it will stay on the front-page. There is no exception to this rule for art saves, please do not report art either.\n"
"\n"
"\boSection R: Other\n"
"\bwModerators may interpret these rules as they see fit. Not all rules are equal, some are enforced less than others. Moderators make the final decision on what is and isn't against the rules, but we have made our best effort here to cover all unwanted behavior here. Notice will be posted in this thread whenever the rules are updated.\n"
"\n"
"Violation of these rules may result in removal of posts / comments, unpublishing or disabling saves, removing saves from front page, or in more extreme cases, a temporary or permanent ban. There are various manual and automated measures in place to enforce these rules. The severity and resulting decisions may not be consistent between moderators.\n"
"\n"
"If you have any questions about what is and isn't against the rules, feel free to contact a moderator.";
new InformationMessage("Save Uploading Rules", rules, true);
} }
void ServerSaveActivity::CheckName(String newname) void ServerSaveActivity::CheckName(String newname)