Merge branch 'archive' into archive-update-v0.53.2

This commit is contained in:
Eliot Partridge
2019-09-17 22:20:48 -05:00
113 changed files with 3698 additions and 3719 deletions
+3 -28
View File
@@ -2,38 +2,13 @@ h1(focusTitle) About
.row.text-large
.col-lg-7
p.lead.
A game of ponies building a town
p.lead A Pony Town custom server
p This game is a derivative work based on #[a(href="https://pony.town") Pony Town]. The developers of Pony Town are not responsible for it in any way.
h2 Contact
p For all inquiries please send an email to #[b {{contactEmail}}]
//- div
hr
h2.text-success Custom servers
p.
You can #[a.text-success(href="...") download the files] and start your own custom {{title}} server.
p.
The package contains server files and instruction on steps required to start your own server.
It also allows you to customize and modify the game to your liking.
p.
Feel free to use this to host a server for your friends, fandom, language group or just a general
server for everyone.
a.d-block.mx-auto.my-4.btn.btn-lg.btn-outline-success.px-3(href="..." style="max-width: 400px;")
| Download game files
p.
All necessary instructions required to build and run the server are included in README.md file
included in the package.
p.
Running the server requires basic knowledge of configuring and hosting web applications,
it's not intended for beginner users.
hr
h2 Technology
p.
-35
View File
@@ -77,41 +77,6 @@ h1(focusTitle) Account settings
| Account removed successfully
.col-md-6
div(style="margin-bottom: 100px;")
.clearfix(*ngIf="showSupporter")
.form-group
h3
fa-icon.mr-2([icon]="starIcon" [ngClass]="supporterClass")
| Thank you for your support
supporter-pony.float-right(#pony (mouseenter)="pony.excite()" (mouseleave)="pony.reset()")
.form-group
p Your reward tier: #[b {{supporterTitle}}]
p Your rewards include:
ul
li(*ngFor="let r of supporterRewards")
| {{r}}
p(*ngIf="supporter > 0")
| Use <code>/ss hello</code> command to use supporter chat color.
p(*ngIf="supporter > 1")
| Use <code>/s1 hello</code> and <code>/s2 hello</code> commands to use lower tier supporter chat colors.
.clearfix(*ngIf="showSupporterInfo")
.form-group
h3 Supporter info
supporter-pony.float-right(#pony (mouseenter)="pony.excite()" (mouseleave)="pony.reset()")
.form-group.text-muted
p.
You've successfully connected your Patreon account to pixel.horse.
If you support pixel.horse on Patreon your supporter info will show up here.
p.
It should take no longer than 10 minutes to register your Patreon pledges.
div(style="margin-bottom: 100px;")
.form-group
.float-right
+1 -1
View File
@@ -35,7 +35,7 @@ export const routes: Routes = [
@NgModule({
imports: [
BrowserModule,
RouterModule,
RouterModule.forRoot(routes, { anchorScrolling: 'enabled' }),
FormsModule,
HttpClientModule,
PopoverModule.forRoot(),
+1 -1
View File
@@ -37,7 +37,7 @@
.text-right
.d-flex.flex-wrap
//- .text-nowrap.mr-2
| &copy; 2016-{{date | date:'yyyy'}}
| &copy; 2019-{{date | date:'yyyy'}}
| #[a.text-muted.mr-1([href]="twitterLink" target="_blank") {{copyright}}] |
.text-nowrap
a.text-muted.mr-2(*ngIf="twitterLink" [href]="twitterLink" target="_blank" title="Twitter")
+3
View File
@@ -119,18 +119,21 @@ $chat-pad: 5px;
position: fixed;
top: 5px;
right: 5px;
z-index: 2;
}
#friends-box {
position: fixed;
top: 5px;
right: 45px;
z-index: 2;
}
#swap-box {
position: fixed;
top: 5px;
right: 86px;
z-index: 2;
}
#notifications {
+3 -5
View File
@@ -8,8 +8,7 @@ import { GameService } from '../services/gameService';
import { Model, Friend } from '../services/model';
import { version, host, contactEmail, twitterLink, discordLink, copyrightName } from '../../client/data';
import { PonyTownGame } from '../../client/game';
import { faTwitter, faPatreon, faEnvelope, faCog, faHome, faGamepad, faInfoCircle, faHorseHead, faDiscord } from '../../client/icons';
import { InstallService } from '../services/installService';
import { faTwitter, faPatreon, faDiscord, faEnvelope, faCog, faHome, faInfoCircle, faHorseHead, faQuestionCircle } from '../../client/icons';
import { OAuthProvider, Entity, FakeEntity, Pony } from '../../common/interfaces';
import { registerServiceWorker, isBrowserOutdated, checkIframeKey } from '../../client/clientUtils';
import { ErrorReporter } from '../services/errorReporter';
@@ -50,7 +49,7 @@ export class App implements OnInit, OnDestroy {
readonly discordIcon = faDiscord;
readonly cogIcon = faCog;
readonly homeIcon = faHome;
readonly helpIcon = faGamepad;
readonly helpIcon = faQuestionCircle;
readonly aboutIcon = faInfoCircle;
readonly charactersIcon = faHorseHead;
readonly contactEmail = contactEmail;
@@ -68,12 +67,11 @@ export class App implements OnInit, OnDestroy {
private game: PonyTownGame,
private router: Router,
private activatedRoute: ActivatedRoute,
private installService: InstallService,
private errorReporter: ErrorReporter,
) {
}
get canInstall() {
return this.installService.canInstall;
return false;
}
get loading() {
return this.model.loading;
@@ -14,7 +14,7 @@ page-loader(*ngIf="!playing")
h2.sr-only Character selection
.mx-auto(style="max-width: 400px;")
discord-button.mb-3
install-button.mb-3
visit-pt-button.mb-3
character-select(
[(error)]="error" [newButton]="true" [removeButton]="true" (change)="updateMuzzles()"
(preview)="previewPony = $event")
+9 -16
View File
@@ -5,7 +5,9 @@ h1(focusTitle) Help
section
h2 Contact
p For all inquiries please send an email to #[b {{contactEmail}}]
p.
For technical issues, see the #[a(routerLink="/help" fragment="issues") Common Issues] section. If it doesn't solve your problem,
send an email to #[b {{contactEmail}}].
section
h2 Controls
@@ -152,15 +154,6 @@ h1(focusTitle) Help
li <code>/removetoolbox</code> - removes toolbox from the house (need to be alone in the house or a party leader)
li <code>/restoretoolbox</code> - restores toolbox to the house (need to be alone in the house or a party leader)
section
h4 Supporter-only commands
ul.spaced-list
li <code>/ss</code> - supporter colored text
li <code>/s1</code> - tier 1 supporter colored text (for use by higher tier supporters)
li <code>/s2</code> - tier 2 supporter colored text (for use by higher tier supporters)
li <code>/s3</code> - tier 3 supporter colored text (for use by higher tier supporters)
section
h2 Chat emojis
p.
@@ -176,7 +169,7 @@ h1(focusTitle) Help
.col-md-5
section
h2 Common issues
h2#issues Common issues
section
h4 Keys stuck when using iPad keyboard
@@ -247,13 +240,13 @@ h1(focusTitle) Help
using #[b Chrome] or #[b Edge] browsers for best performance.
section
h4 Why can't I create multiple accounts
h4#rules Why can't I create multiple accounts
p.text-fading.
This restriction is in-place to protect you and the game itself from other players in the game.
This restriction is in place to protect you and the game itself from other players in the game.
p.text-fading.
Allowing multiple accounts for single person invalidates ignore and hide systems that
allow you to ignore and hide other players that are harassing or bothering you in any way.
It also invalidates mute and ban system that is in-place to protect you from players breaking
It also invalidates mute and ban system that is in place to protect you from players breaking
the game rules to bother or harass others.
p.text-fading.
Allowing use of multiple accounts at the same time would dramatically increase load on the
@@ -263,13 +256,13 @@ h1(focusTitle) Help
game anymore.
p.text-fading.
Use of multiple accounts also invalidates any limits (like character limit) that we put on the accounts.
The limits are in-place to prevent large amount of players that we have at the moment from
The limits are in place to prevent large amount of players that we have at the moment from
exhausting our limited server resources.
section
h4 Why can't I modify the game with hacks or scripts
p.text-fading.
This restriction is in-place to protect you and the game itself from other players in the game.
This restriction is in place to protect you and the game itself from other players in the game.
p.text-fading.
Almost all third-party scripts used in-game were used to harass other players. Even when the
creator of the script did not intend it to be used in that way, the limited knowledge of the
+12
View File
@@ -2,6 +2,7 @@ import { Component } from '@angular/core';
import { emojis } from '../../../client/emoji';
import { faArrowLeft, faArrowRight, faArrowUp, faArrowDown } from '../../../client/icons';
import { contactEmail } from '../../../client/data';
import { ActivatedRoute } from '@angular/router';
@Component({
selector: 'help',
@@ -16,4 +17,15 @@ export class Help {
readonly emotes = emojis.map(e => e.names[0]);
readonly mac = /Macintosh/.test(navigator.userAgent);
readonly contactEmail = contactEmail;
// allow scrolling to #issues and #rules fragments
constructor(private route: ActivatedRoute) {}
ngAfterViewInit() {
this.route.fragment.subscribe(f => {
const element = document.querySelector("#" + f);
if (element) setTimeout(() => element.scrollIntoView(), 10);
})
}
}
+2 -1
View File
@@ -20,12 +20,13 @@ div(*ngIf="!playing")
div(*ngIf="!!account")
.form-group
discord-button
visit-pt-button
.form-group(*ngIf="canInstall")
install-button
.form-group
character-select([(error)]="error" [editButton]="true" (preview)="previewPony = $event")
.form-group
character-preview([pony]="previewInfo" [state]="state" [passive]="true" [name]="previewName" [tag]="previewTag")
character-preview([pony]="previewInfo" [state]="state" [passive]="false" [name]="previewName" [tag]="previewTag")
.form-group.text-center
play-box([(error)]="error")
+21 -3
View File
@@ -2,8 +2,8 @@ import { Component } from '@angular/core';
import { Model, getPonyTag } from '../../services/model';
import { defaultPonyState } from '../../../client/ponyHelpers';
import { GameService } from '../../services/gameService';
import { InstallService } from '../../services/installService';
import { OAuthProvider, PonyObject } from '../../../common/interfaces';
import { stand } from '../../../client/ponyAnimations';
@Component({
selector: 'home',
@@ -14,10 +14,11 @@ export class Home {
state = defaultPonyState();
previewPony: PonyObject | undefined = undefined;
error?: string;
private animationTime = 0;
private interval?: any;
constructor(
private gameService: GameService,
private model: Model,
private installService: InstallService,
) {
}
get authError() {
@@ -27,7 +28,7 @@ export class Home {
return this.model.accountAlert;
}
get canInstall() {
return this.installService.canInstall;
return false;
}
get playing() {
return this.gameService.playing;
@@ -53,4 +54,21 @@ export class Home {
signIn(provider: OAuthProvider) {
this.model.signIn(provider);
}
ngOnInit() {
let last = Date.now();
this.interval = setInterval(() => {
const now = Date.now();
this.update((now - last) / 1000);
last = now;
}, 1000 / 24);
}
ngOnDestroy() {
clearInterval(this.interval);
}
update(delta: number) {
this.animationTime += delta;
const animation = stand;
this.state.animation = animation;
this.state.animationFrame = Math.floor(this.animationTime * animation.fps) % animation.frames.length;
}
}