2 Commits

Author SHA1 Message Date
poprhythm fe8180eb7a Add Star Trek assets, update .gitignore 2026-05-07 03:16:14 +00:00
poprhythm cc6abf9f3e Change from "Houses" to "Factions" 2019-11-12 11:34:34 -05:00
40 changed files with 4025 additions and 262 deletions
+6 -43
View File
@@ -1,43 +1,6 @@
# See http://help.github.com/ignore-files/ for more about ignoring files.
# compiled output
/dist
/tmp
/out-tsc
# dependencies
/node_modules
# profiling files
chrome-profiler-events.json
speed-measure-plugin.json
# IDEs and editors
/.idea
.project
.classpath
.c9/
*.launch
.settings/
*.sublime-workspace
# IDE - VSCode
.vscode/*
!.vscode/settings.json
!.vscode/tasks.json
!.vscode/launch.json
!.vscode/extensions.json
# misc
/.sass-cache
/connect.lock
/coverage
/libpeerconnection.log
npm-debug.log
yarn-error.log
testem.log
/typings
# System Files
.DS_Store
Thumbs.db
node_modules/
dist/
.angular/
*.suo
*.user
.vs/
+5
View File
@@ -0,0 +1,5 @@
export class FactionPoints {
klingon: number;
starfleet: number;
romulan: number;
}
-6
View File
@@ -1,6 +0,0 @@
export class HousePoints {
gryffindor: number;
ravenclaw: number;
hufflepuff: number;
slytherin: number;
}
+34 -28
View File
@@ -1,37 +1,43 @@
<div class="fluid-container">
<div id="stars"></div>
<div id="stars2"></div>
<div id="stars3"></div>
<div class="row">
<div id="gryffindor" class="col-sm house-column">
<img src="../assets/img/Gryffindor_Banner.png" class="banner mx-auto d-block"/>
<p class="points" *ngIf="housePoints">{{housePoints.gryffindor | number}}</p>
<points [amount]="-5" (changeEvent)="changeGryffindorPoints($event)"></points>
<points [amount]="10" (changeEvent)="changeGryffindorPoints($event)"></points>
<points [amount]="50" (changeEvent)="changeGryffindorPoints($event)"></points>
<img src="../assets/img/Gryffindor_Crest.png" class="crest mx-auto d-block"/>
<div id="klingon" class="col-sm faction-column">
<img src="../assets/img/klingon_banner.png" class="banner mx-auto d-block"/>
<p class="points" *ngIf="factionPoints">{{factionPoints.klingon | number}}</p>
<div *ngIf="displayOnlyMode==false">
<points [amount]="-1" (changeEvent)="changeKlingonPoints($event)"></points>
<points [amount]="5" (changeEvent)="changeKlingonPoints($event)"></points>
<points [amount]="10" (changeEvent)="changeKlingonPoints($event)"></points>
</div>
<div id="ravenclaw" class="col-sm house-column">
<img src="../assets/img/Ravenclaw_Banner.png" class="banner mx-auto d-block"/>
<p class="points" *ngIf="housePoints">{{housePoints.ravenclaw | number}}</p>
<points [amount]="-5" (changeEvent)="changeRavenclawPoints($event)"></points>
<points [amount]="10" (changeEvent)="changeRavenclawPoints($event)"></points>
<points [amount]="50" (changeEvent)="changeRavenclawPoints($event)"></points>
<img src="../assets/img/Ravenclaw_Crest.png" class="crest mx-auto d-block"/>
<img src="../assets/img/klingon_emblem.png" class="crest mx-auto d-block"/>
</div>
<div id="hufflepuff" class="col-sm house-column">
<img src="../assets/img/Hufflepuff_Banner.png" class="banner mx-auto d-block"/>
<p class="points" *ngIf="housePoints">{{housePoints.hufflepuff | number}}</p>
<points [amount]="-5" (changeEvent)="changeHufflepuffPoints($event)"></points>
<points [amount]="10" (changeEvent)="changeHufflepuffPoints($event)"></points>
<points [amount]="50" (changeEvent)="changeHufflepuffPoints($event)"></points>
<img src="../assets/img/Hufflepuff_Crest.png" class="crest mx-auto d-block"/>
<div id="starfleet" class="col-sm faction-column">
<img src="../assets/img/starfleet_banner.png" class="banner mx-auto d-block"/>
<p class="points" *ngIf="factionPoints">{{factionPoints.starfleet | number}}</p>
<div *ngIf="displayOnlyMode==false">
<points [amount]="-1" (changeEvent)="changeStarfleetPoints($event)"></points>
<points [amount]="5" (changeEvent)="changeStarfleetPoints($event)"></points>
<points [amount]="10" (changeEvent)="changeStarfleetPoints($event)"></points>
</div>
<div id="slytherin" class="col-sm house-column">
<img src="../assets/img/Slytherin_Banner.png" class="banner mx-auto d-block"/>
<p class="points" *ngIf="housePoints">{{housePoints.slytherin | number}}</p>
<points [amount]="-5" (changeEvent)="changeSlytherinPoints($event)"></points>
<points [amount]="10" (changeEvent)="changeSlytherinPoints($event)"></points>
<points [amount]="50" (changeEvent)="changeSlytherinPoints($event)"></points>
<img src="../assets/img/Slytherin_Crest.png" class="crest mx-auto d-block"/>
<img src="../assets/img/starfleet_emblem.png" class="crest mx-auto d-block"/>
</div>
<div id="romulan" class="col-sm faction-column">
<img src="../assets/img/romulan_banner.png" class="banner mx-auto d-block"/>
<p class="points" *ngIf="factionPoints">{{factionPoints.romulan | number}}</p>
<div *ngIf="displayOnlyMode==false">
<points [amount]="-1" (changeEvent)="changeRomulanPoints($event)"></points>
<points [amount]="5" (changeEvent)="changeRomulanPoints($event)"></points>
<points [amount]="10" (changeEvent)="changeRomulanPoints($event)"></points>
</div>
<img src="../assets/img/romulan_emblem.png" class="crest-wide mx-auto d-block"/>
</div>
</div>
<!--https://codepen.io/bigsweater/pen/KbCIh-->
<div *ngIf="displayOnlyMode==false" id="desktop-controls">
<!--<button (click)="resetPoints()">Reset</button>-->
<button (click)="displayOnly()">Hide Points</button>
</div>
</div>
+43 -23
View File
@@ -1,7 +1,12 @@
body
background-color: #000000
.house-column
@media screen and (max-width: 600px)
#desktop-controls
display: none !important
.faction-column
display: table-cell !important
float: none !important
border-style: solid
@@ -10,40 +15,55 @@ body
img
margin: 1em
img.banner
max-width: 100%
img.crest
.crest
max-width: 65%
.crest-wide
max-width: 80%
@media screen and (max-width: 600px)
img.banner
max-width: 40% !important
display: inline !important
max-width: 50% !important
margin: .1em !important
.faction-column
border-width: .4em
p
display: inline !important
vertical-align: middle
margin-left: .2em
img.crest
display: none !important
img.crest-wide
display: none !important
#slytherin
background-color: #011803
border-color: #033807
color: #a2bea4
#gryffindor
background-color: #640c02
#klingon
background: radial-gradient(ellipse at bottom, rgba(#934741, .9) 0%, rgba(#640c02, 0.1) 100%)
border-color: #9c1203
color: #dfc06b
#hufflepuff
background-color: #664700
border-color: #e3a000
color: #e8b941
#ravenclaw
background-color: #000c33
border-color: #00165e
color: #77b7d2
color: #dceaf9
@media screen and (min-width: 601px)
margin-left: 1em
#starfleet
background: radial-gradient(ellipse at bottom, rgba(#344c67, .9) 0%, rgba(#000c33, 0.1) 100%)
border-color: #374561
color: #f4ebd5
background-image: url('../assets/img/starfleet_emblem_bw.png') center center
#romulan
background: radial-gradient(ellipse at bottom, rgba(#234448, .9) 0%, rgba(#011803, 0.1) 100%)
border-color: #033807
color: #c3e5c6
@media screen and (min-width: 601px)
margin-right: 1em
.points
font-family: Garamond
font-family: Odibee Sans
text-align: center
@media screen and (min-width: 601px)
.points
font-size: 7em
@media screen and (max-width: 600px)
.points
font-size: 4em
margin-bottom: 0em
padding: 0em !important
+35 -39
View File
@@ -1,6 +1,6 @@
import { Component, OnInit } from '@angular/core';
import { HousePoints } from './HousePoints';
import { HousePointsRemoteService } from './house-points-remote.service';
import { FactionPoints } from './FactionPoints';
import { FactionPointsRemoteService } from './faction-points-remote.service';
@Component({
selector: 'app-root',
@@ -9,68 +9,64 @@ import { HousePointsRemoteService } from './house-points-remote.service';
})
export class AppComponent implements OnInit {
constructor(private housePointsService: HousePointsRemoteService) { }
constructor(private factionPointsService: FactionPointsRemoteService) { }
ngOnInit() {
this.getHousePoints();
setInterval(()=>{this.getHousePoints();}, 10000);
this.getFactionPoints();
setInterval(()=>{this.getFactionPoints();}, 10000);
this.displayOnlyMode = false;
}
getHousePoints(): void {
this.housePointsService.getPoints$()
.subscribe(points => this.housePoints = points);
getFactionPoints(): void {
this.factionPointsService.getPoints$()
.subscribe(points => this.factionPoints = points);
}
updateHousePoints(housePoints: HousePoints): void {
this.housePointsService.updatePoints$(housePoints)
updateFactionPoints(factionPoints: FactionPoints): void {
this.factionPointsService.updatePoints$(factionPoints)
.subscribe(result => {
console.log(result);
this.getHousePoints();
this.getFactionPoints();
});
}
title = 'Hogwart\'s Point Keeper';
factionPoints: FactionPoints;
housePoints: HousePoints;
changeGryffindorPoints($event) {
this.housePointsService.getPoints$()
changeKlingonPoints($event) {
this.factionPointsService.getPoints$()
.subscribe(points => {
points.gryffindor += $event;
this.updateHousePoints(points);
points.klingon += $event;
this.updateFactionPoints(points);
});
}
changeRavenclawPoints($event) {
this.housePointsService.getPoints$()
changeStarfleetPoints($event) {
this.factionPointsService.getPoints$()
.subscribe(points => {
points.ravenclaw += $event;
this.updateHousePoints(points);
points.starfleet += $event;
this.updateFactionPoints(points);
});
}
changeHufflepuffPoints($event) {
this.housePointsService.getPoints$()
changeRomulanPoints($event) {
this.factionPointsService.getPoints$()
.subscribe(points => {
points.hufflepuff += $event;
this.updateHousePoints(points);
});
}
changeSlytherinPoints($event) {
this.housePointsService.getPoints$()
.subscribe(points => {
points.slytherin += $event;
this.updateHousePoints(points);
points.romulan += $event;
this.updateFactionPoints(points);
});
}
resetPoints() {
this.updateHousePoints({
gryffindor:0,
ravenclaw:0,
hufflepuff:0,
slytherin:0
this.updateFactionPoints({
klingon:0,
starfleet:0,
romulan:0
});
}
public displayOnlyMode: boolean;
displayOnly() {
this.displayOnlyMode = true;
}
}
@@ -0,0 +1,12 @@
import { TestBed } from '@angular/core/testing';
import { FactionPointsRemoteService } from './faction-points-remote.service';
describe('FactionPointsRemoteService', () => {
beforeEach(() => TestBed.configureTestingModule({}));
it('should be created', () => {
const service: FactionPointsRemoteService = TestBed.get(FactionPointsRemoteService);
expect(service).toBeTruthy();
});
});
@@ -1,7 +1,7 @@
import { Injectable } from '@angular/core';
import { Observable, of } from 'rxjs';
// import { BehaviorSubject } from 'rxjs';
import { HousePoints } from './HousePoints';
import { FactionPoints } from './FactionPoints';
import { HttpClient } from '@angular/common/http';
import { HttpHeaders } from '@angular/common/http';
@@ -14,7 +14,7 @@ const httpOptions = {
@Injectable({
providedIn: 'root'
})
export class HousePointsRemoteService {
export class FactionPointsRemoteService {
url : string;
@@ -22,11 +22,11 @@ export class HousePointsRemoteService {
this.url = "https://api.myjson.com/bins/l1mki";
}
getPoints$(): Observable<HousePoints> {
return this.http.get<HousePoints>(this.url);
getPoints$(): Observable<FactionPoints> {
return this.http.get<FactionPoints>(this.url);
}
updatePoints$(points: HousePoints): Observable<HousePoints> {
return this.http.put<HousePoints>(this.url, points, httpOptions);
updatePoints$(points: FactionPoints): Observable<FactionPoints> {
return this.http.put<FactionPoints>(this.url, points, httpOptions);
}
}
@@ -1,12 +1,12 @@
import { TestBed } from '@angular/core/testing';
import { HousePointsService } from './house-points.service';
import { FactionPointsService } from './faction-points.service';
describe('HousePointsService', () => {
describe('FactionPointsService', () => {
beforeEach(() => TestBed.configureTestingModule({}));
it('should be created', () => {
const service: HousePointsService = TestBed.get(HousePointsService);
const service: FactionPointsService = TestBed.get(FactionPointsService);
expect(service).toBeTruthy();
});
});
+20
View File
@@ -0,0 +1,20 @@
import { Injectable } from '@angular/core';
import { Observable, of } from 'rxjs';
import { FactionPoints } from './FactionPoints';
@Injectable({
providedIn: 'root'
})
export class FactionPointsService {
constructor() { }
getPoints$(): Observable<FactionPoints> {
return of ({
klingon:0,
starfleet:0,
romulan:0
});
}
}
@@ -1,12 +0,0 @@
import { TestBed } from '@angular/core/testing';
import { HousePointsRemoteService } from './house-points-remote.service';
describe('HousePointsRemoteService', () => {
beforeEach(() => TestBed.configureTestingModule({}));
it('should be created', () => {
const service: HousePointsRemoteService = TestBed.get(HousePointsRemoteService);
expect(service).toBeTruthy();
});
});
-21
View File
@@ -1,21 +0,0 @@
import { Injectable } from '@angular/core';
import { Observable, of } from 'rxjs';
import { HousePoints } from './HousePoints';
@Injectable({
providedIn: 'root'
})
export class HousePointsService {
constructor() { }
getPoints$(): Observable<HousePoints> {
return of ({
gryffindor:0,
ravenclaw:0,
hufflepuff:0,
slytherin:0
});
}
}
+5 -2
View File
@@ -1,8 +1,11 @@
.btn
opacity: 0.5
margin: 4%
font-family: Garamond
font-weight: bold
font-family: Odibee Sans
font-size: 1.3em
.extraLarge
font-size: 1.7em
@media screen and (max-width: 600px)
.btn
margin-top: 0em !important
+1 -2
View File
@@ -19,8 +19,7 @@ export class PointsComponent {
return this.amount > 0;
}
isExtraLarge() {
return this.amount == 10;
return this.amount == 5;
}
}
File diff suppressed because one or more lines are too long
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.

Before

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 190 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 206 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 200 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 177 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 192 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.4 KiB

+1 -1
View File
@@ -2,7 +2,7 @@
<html lang="en">
<head>
<meta charset="utf-8">
<title>Hogwart's Point Keeper</title>
<title>Galactic Tournament</title>
<base href="/">
<meta name="viewport" content="width=device-width, initial-scale=1">
+91
View File
@@ -0,0 +1,91 @@
// n is number of stars required
@function multiple-box-shadow ($n)
$value: '#{random(2000)}px #{random(2000)}px #FFF'
@for $i from 2 through $n
$value: '#{$value} , #{random(2000)}px #{random(2000)}px #FFF'
@return unquote($value)
$shadows-small: multiple-box-shadow(700)
$shadows-medium: multiple-box-shadow(200)
$shadows-big: multiple-box-shadow(100)
html
height: 100%
overflow: hidden
#stars
width: 1px
height: 1px
background: transparent
box-shadow: $shadows-small
animation : animStar 50s linear infinite
&:after
content: " "
position: absolute
top: 2000px
width: 1px
height: 1px
background: transparent
box-shadow: $shadows-small
#stars2
width: 2px
height: 2px
background: transparent
box-shadow: $shadows-medium
animation : animStar 100s linear infinite
&:after
content: " "
position: absolute
top: 2000px
width: 2px
height: 2px
background: transparent
box-shadow: $shadows-medium
#stars3
width: 3px
height: 3px
background: transparent
box-shadow: $shadows-big
animation : animStar 150s linear infinite
&:after
content: " "
position: absolute
top: 2000px
width: 3px
height: 3px
background: transparent
box-shadow: $shadows-big
#title
position: absolute
top: 50%
left: 0
right: 0
color: #FFF
text-align: center
font-family: 'lato',sans-serif
font-weight: 300
font-size: 50px
letter-spacing: 10px
margin-top: -60px
padding-left: 10px
span
background: -webkit-linear-gradient(white, #38495a)
-webkit-background-clip: text
-webkit-text-fill-color: transparent
@keyframes animStar
from
transform: translateY(0px)
to
transform: translateY(-2000px)
+8
View File
@@ -1 +1,9 @@
/* You can add global styles to this file, and also import other style files */
@import 'stars';
@font-face
font-family: "Odibee Sans";
src: url("assets/fonts/OdibeeSans-Regular.eot") format("eot")
src: url("assets/fonts/OdibeeSans-Regular.otf") format("otf")
src: url("assets/fonts/OdibeeSans-Regular.woff") format("woff")
src: url("assets/fonts/OdibeeSans-Regular.ttf") format("truetype")