Add monthly Salmon Run gear tweet

Closes #7.
This commit is contained in:
Matt Isenhower 2017-12-10 17:43:51 -08:00
parent a9d46c1600
commit 31470f5cc1
7 changed files with 97 additions and 0 deletions

View File

@ -45,6 +45,11 @@
transform: scale(1.5) rotate(-1.4deg);
}
.salmon-run-gear .merchandise-box {
width: 300px;
transform: scale(1.4);
}
.new-weapon {
transform: scale(1.25);
}

View File

@ -26,6 +26,14 @@
</strong>
</div>
<div v-if="salmonRunGear">
<strong>
<router-link :to="`/salmonRunGear/${salmonRunGear.available_time}`">
Salmon Run Gear
</router-link>
</strong>
</div>
<div v-if="newWeaponAvailability">
<strong>
<router-link :to="`/newWeapon/${newWeaponAvailability.release_time}`">
@ -82,6 +90,10 @@ export default {
if (this.coopSchedules)
return this.coopSchedules.details[0];
},
salmonRunGear() {
if (this.timeline)
return this.timeline.coop.reward_gear;
},
newWeaponAvailability() {
if (this.timeline && this.timeline.weapon_availability && this.timeline.weapon_availability.availabilities) {
return this.timeline.weapon_availability.availabilities[0];

View File

@ -0,0 +1,33 @@
<template>
<Wrapper title="Salmon Run Gear" :time="now">
<div class="tilt-left salmon-run-gear" style="display: flex; align-items: center; justify-content: center;" v-if="merchandise">
<MerchandiseBox :merchandise="merchandise" />
</div>
</Wrapper>
</template>
<script>
import axios from 'axios';
import Wrapper from '@/js/components/screenshots/Wrapper.vue';
import MerchandiseBox from '@/js/components/splatoon/MerchandiseBox.vue';
export default {
components: { Wrapper, MerchandiseBox },
props: ['now'],
data() {
return {
timeline: null,
};
},
computed: {
merchandise() {
if (this.timeline)
return { gear: this.timeline.coop.reward_gear.gear };
},
},
created() {
axios.get('data/timeline.json')
.then(response => this.timeline = response.data)
},
}
</script>

View File

@ -14,6 +14,7 @@ import ScreenshotHelper from './components/screenshots/ScreenshotHelper.vue';
import Schedules from './components/screenshots/schedules/Schedules.vue';
import SplatNetGear from './components/screenshots/splatnetgear/SplatNetGear.vue';
import SalmonRun from './components/screenshots/salmonrun/SalmonRun.vue';
import SalmonRunGear from './components/screenshots/salmonrun/SalmonRunGear.vue';
import NewWeapon from './components/screenshots/newweapon/NewWeapon.vue';
import Splatfest from './components/screenshots/splatfest/Splatfest.vue';
const routes = [
@ -21,6 +22,7 @@ const routes = [
{ path: '/schedules/:startTime', component: Schedules, props: true },
{ path: '/splatNetGear/:startTime/:endTime', component: SplatNetGear, props: true },
{ path: '/salmonRun/:startTime', component: SalmonRun, props: true },
{ path: '/salmonRunGear/:now', component: SalmonRunGear, props: true },
{ path: '/newWeapon/:releaseTime', component: NewWeapon, props: true },
{ path: '/splatfest/:region/:startTime', component: Splatfest, props: true },
];

View File

@ -60,6 +60,13 @@ function captureSalmonRunScreenshot(startTime) {
return captureScreenshot({ url });
}
function captureSalmonRunGearScreenshot(startTime) {
let url = new URL(htmlUrl);
url.hash = `/salmonRunGear/${startTime}`;
return captureScreenshot({ url });
}
function captureNewWeaponScreenshot(releaseTime) {
let url = new URL(htmlUrl);
url.hash = `/newWeapon/${releaseTime}`;
@ -78,6 +85,7 @@ module.exports = {
captureScheduleScreenshot,
captureGearScreenshot,
captureSalmonRunScreenshot,
captureSalmonRunGearScreenshot,
captureNewWeaponScreenshot,
captureSplatfestScreenshot,
}

View File

@ -3,6 +3,7 @@ const { canTweet } = require('./twitter/client');
const ScheduleTweet = require('./twitter/ScheduleTweet');
const GearTweet = require('./twitter/GearTweet');
const SalmonRunTweet = require('./twitter/SalmonRunTweet');
const SalmonRunGearTweet = require('./twitter/SalmonRunGearTweet');
const NewWeaponTweet = require('./twitter/NewWeaponTweet');
const NewStageTweet = require('./twitter/NewStageTweet');
const SplatfestTweet = require('./twitter/SplatfestTweet');
@ -11,6 +12,7 @@ let tweets = [
new ScheduleTweet,
new GearTweet,
new SalmonRunTweet,
new SalmonRunGearTweet,
new NewWeaponTweet,
new NewStageTweet,
new SplatfestTweet('na'),

View File

@ -0,0 +1,35 @@
const TwitterPostBase = require('./TwitterPostBase');
const { captureSalmonRunGearScreenshot } = require('../screenshots');
const { readData } = require('../utilities');
const moment = require('moment-timezone');
class SalmonRunTweet extends TwitterPostBase {
getKey() { return 'salmonrungear'; }
getName() { return 'Salmon Run Gear'; }
getRewardGear() {
let timeline = readData('timeline.json');
return timeline.coop && timeline.coop.reward_gear;
}
getData() {
let rewardGear = this.getRewardGear();
if (rewardGear.available_time == this.getDataTime())
return rewardGear;
}
getTestData() {
return this.getRewardGear();
}
getImage(data) {
return captureSalmonRunGearScreenshot(data.available_time);
}
getText(data) {
let monthName = moment.unix(data.available_time).tz('UTC').format('MMMM');
return `Next month's Salmon Run reward gear has been posted! ${monthName}'s gear is the ${data.gear.name}. #salmonrun #splatoon2`;
}
}
module.exports = SalmonRunTweet;