Skip to content

Commit

Permalink
v0.8.2: added a news checker service
Browse files Browse the repository at this point in the history
  • Loading branch information
00-Evan committed Jul 14, 2020
1 parent d406230 commit 9480938
Show file tree
Hide file tree
Showing 14 changed files with 437 additions and 2 deletions.
2 changes: 2 additions & 0 deletions android/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ android {
versionNameSuffix '-INDEV'
dependencies {
debugImplementation project(':services:updates:debugUpdates')
debugImplementation project(':services:news:debugNews')
}
}
release {
Expand All @@ -41,6 +42,7 @@ android {

dependencies {
releaseImplementation project(':services:updates:githubUpdates')
releaseImplementation project(':services:news:shatteredNews')
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,8 @@
import com.badlogic.gdx.backends.android.AndroidApplicationConfiguration;
import com.shatteredpixel.shatteredpixeldungeon.SPDSettings;
import com.shatteredpixel.shatteredpixeldungeon.ShatteredPixelDungeon;
import com.shatteredpixel.shatteredpixeldungeon.services.news.News;
import com.shatteredpixel.shatteredpixeldungeon.services.news.NewsImpl;
import com.shatteredpixel.shatteredpixeldungeon.services.updates.UpdateImpl;
import com.shatteredpixel.shatteredpixeldungeon.services.updates.Updates;
import com.watabou.noosa.Game;
Expand Down Expand Up @@ -60,10 +62,13 @@ protected void onCreate (Bundle savedInstanceState) {
} catch (PackageManager.NameNotFoundException e) {
Game.versionCode = 0;
}

if (UpdateImpl.supportsUpdates()){
Updates.service = UpdateImpl.getUpdateService();
}
if (NewsImpl.supportsNews()){
News.service = NewsImpl.getNewsService();
}

FileUtils.setDefaultFileProperties( Files.FileType.Local, "" );

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
/*
* Pixel Dungeon
* Copyright (C) 2012-2015 Oleg Dolya
*
* Shattered Pixel Dungeon
* Copyright (C) 2014-2020 Evan Debenham
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>
*/

package com.shatteredpixel.shatteredpixeldungeon.services.news;

import java.util.ArrayList;
import java.util.Date;

public class News {

public static NewsService service;

public static boolean supportsNews(){
return service != null;
}

private static Date lastCheck = null;
private static final long CHECK_DELAY = 1000*60*60; //1 hour

public static void checkForNews(){
if (!supportsNews()) return;
if (lastCheck != null && (new Date().getTime() - lastCheck.getTime()) < CHECK_DELAY) return;

service.checkForArticles(new NewsService.NewsResultCallback() {
@Override
public void onArticlesFound(ArrayList<NewsArticle> articles) {
lastCheck = new Date();
News.articles = articles;
}

@Override
public void onConnectionFailed() {
lastCheck = null;
News.articles = null;
}
});

}

private static ArrayList<NewsArticle> articles;

public static boolean articlesAvailable(){
return articles != null;
}

public static ArrayList<NewsArticle> articles(){
return articles;
}

public static int unreadArticles(Date lastRead){
int unread = 0;
for (NewsArticle article : articles){
if (article.date.after(lastRead)) unread++;
}
return unread;
}



}
3 changes: 3 additions & 0 deletions desktop/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ task debug(dependsOn: classes, type: JavaExec) {

dependencies {
debugImplementation project(':services:updates:debugUpdates')
debugImplementation project(':services:news:debugNews')
}
}

Expand All @@ -45,6 +46,7 @@ task release(dependsOn: compileForRelease, type: Jar) {

dependencies {
releaseImplementation project(':services:updates:githubUpdates')
releaseImplementation project(':services:news:shatteredNews')
}
}

Expand All @@ -65,4 +67,5 @@ dependencies {
//Need these at compile time to prevent errors there.
// The actual dependency used at runtime will vary based on source set.
compileOnly project(':services:updates:debugUpdates')
compileOnly project(':services:news:debugNews')
}
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,8 @@
import com.badlogic.gdx.utils.SharedLibraryLoader;
import com.shatteredpixel.shatteredpixeldungeon.SPDSettings;
import com.shatteredpixel.shatteredpixeldungeon.ShatteredPixelDungeon;
import com.shatteredpixel.shatteredpixeldungeon.services.news.News;
import com.shatteredpixel.shatteredpixeldungeon.services.news.NewsImpl;
import com.shatteredpixel.shatteredpixeldungeon.services.updates.UpdateImpl;
import com.shatteredpixel.shatteredpixeldungeon.services.updates.Updates;
import com.watabou.noosa.Game;
Expand Down Expand Up @@ -98,6 +100,9 @@ public void uncaughtException(Thread thread, Throwable throwable) {
if (UpdateImpl.supportsUpdates()){
Updates.service = UpdateImpl.getUpdateService();
}
if (NewsImpl.supportsNews()){
News.service = NewsImpl.getNewsService();
}

Lwjgl3ApplicationConfiguration config = new Lwjgl3ApplicationConfiguration();

Expand Down
30 changes: 30 additions & 0 deletions services/news/debugNews/build.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
/*
* Pixel Dungeon
* Copyright (C) 2012-2015 Oleg Dolya
*
* Shattered Pixel Dungeon
* Copyright (C) 2014-2020 Evan Debenham
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>
*/

apply plugin: 'java-library'

[compileJava, compileTestJava]*.options*.encoding = 'UTF-8'
sourceCompatibility = targetCompatibility = appJavaCompatibility

dependencies {
implementation project(':SPD-classes')
api project(':services')
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
/*
* Pixel Dungeon
* Copyright (C) 2012-2015 Oleg Dolya
*
* Shattered Pixel Dungeon
* Copyright (C) 2014-2020 Evan Debenham
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>
*/

package com.shatteredpixel.shatteredpixeldungeon.services.news;

import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;

public class DebugNews extends NewsService {

@Override
public void checkForArticles(NewsResultCallback callback) {

//turn on to test connection failure
if (false){
callback.onConnectionFailed();
return;
}

ArrayList<NewsArticle> articles = new ArrayList<>();
for (int i = 0; i < 10; i++){
NewsArticle article = new NewsArticle();
article.title = "TEST ARTICLE " + i;
article.summary = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do " +
"eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim " +
"veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea " +
"commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit " +
"esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat " +
"non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.";
article.URL = "http://www.google.com";
// a year in the past, plus one day for each article
long daysBack = 365+i;
article.date = new Date(System.currentTimeMillis() - (daysBack*1000*60*60*24));
articles.add(article);
}

callback.onArticlesFound(articles);

}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
/*
* Pixel Dungeon
* Copyright (C) 2012-2015 Oleg Dolya
*
* Shattered Pixel Dungeon
* Copyright (C) 2014-2020 Evan Debenham
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>
*/

package com.shatteredpixel.shatteredpixeldungeon.services.news;

public class NewsImpl {

private static NewsService newsChecker = new DebugNews();

public static NewsService getNewsService(){
return newsChecker;
}

public static boolean supportsNews(){
return true;
}

}
30 changes: 30 additions & 0 deletions services/news/shatteredNews/build.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
/*
* Pixel Dungeon
* Copyright (C) 2012-2015 Oleg Dolya
*
* Shattered Pixel Dungeon
* Copyright (C) 2014-2020 Evan Debenham
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>
*/

apply plugin: 'java-library'

[compileJava, compileTestJava]*.options*.encoding = 'UTF-8'
sourceCompatibility = targetCompatibility = appJavaCompatibility

dependencies {
implementation project(':SPD-classes')
api project(':services')
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
/*
* Pixel Dungeon
* Copyright (C) 2012-2015 Oleg Dolya
*
* Shattered Pixel Dungeon
* Copyright (C) 2014-2020 Evan Debenham
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>
*/

package com.shatteredpixel.shatteredpixeldungeon.services.news;

public class NewsImpl {

private static NewsService newsChecker = new ShatteredNews();

public static NewsService getNewsService(){
return newsChecker;
}

public static boolean supportsNews(){
return true;
}

}
Loading

0 comments on commit 9480938

Please sign in to comment.