diff --git a/src/diary/entries/200808 b/src/diary/entries/200808 deleted file mode 100644 index 5901c74..0000000 --- a/src/diary/entries/200808 +++ /dev/null @@ -1,35 +0,0 @@ -

9 weekly roundup

- august 4-8, 2020 - css, html, php, server, website
-
-

tuesday, august 4

- -

wednesday, august 5

- -
-

thursday, august 6

- -
-

friday, august 7

- -
-

saturday, august 8

- -
diff --git a/src/diary/entries/200810 b/src/diary/entries/200810 index dc50144..62ed0ab 100644 --- a/src/diary/entries/200810 +++ b/src/diary/entries/200810 @@ -1,5 +1,7 @@ -

8 what is blessfrey?

+ +

what is blessfrey?

august 10, 2020
+pitch

Blessfrey is a 2D action RPG developed for PC by me, chimchooree.

@@ -9,8 +11,7 @@ Class progression is freeform, and virtually no decision is permanent. At charac
Each class has its own style of skills associated with it. Skills are individual powers gained through gameplay which give specific effects according to their rules. Your skillbar only has 8 skill slots and can only be edited in safe areas. The challenge comes from building winning strategies + synergies against the next area.

-Skills are gained through exploration of the game world. As you encounter enemies, meet people, and reach new areas, you will translate those experiences into new skills.
+Skills are gained through exploration of the game world. As you encounter enemies, meet people, and reach new areas, you will translate those experiences into new skills. There are multiple paths to learning, so you can focus on parts of the game you prefer.

Blessfrey has been lots of fun to work on. I hope you enjoy it once a demo and eventually a game drops.

-chimchooree
diff --git a/src/diary/entries/200813 b/src/diary/entries/200813 deleted file mode 100644 index f5c83dd..0000000 --- a/src/diary/entries/200813 +++ /dev/null @@ -1,45 +0,0 @@ -

7 all weekly updates

-august 13, 2020
-
-I've kept a more or less consistent private development diary for blessfrey since 2018. Here are the bulleted highlights, broken into weekly portions. I mostly keep it for myself to track progress.
-
-Meaningful discussions on design + process are expanded in separate feature articles.
-
-As a note, Blessfrey's working name is Dungeon Girls, but there's other projects floating around in there. Also, names of people are usually changed for privacy.
-
-Weekly diary pages are below. -
-".fgets($post).""; - echo fgets($post)."
"; - echo " ... Keep Reading"; - echo "

"; -} - -// Iterate over Diary Pages + Snip -function convert_files($files) { - rsort($files); - foreach ($files as $file) { - snip_post($file); - } -} - -// Collect files -function gather_files() { - $files = array(); - foreach (glob("../weekly/*.*") as $file) { - $files[] = $file; - } - return $files; -} - -// Flow - collect files + convert to snippets -// it should be reverse order..newest first -convert_files(gather_files()); -?> -

diff --git a/src/diary/entries/200815 b/src/diary/entries/200815 deleted file mode 100644 index d764fa8..0000000 --- a/src/diary/entries/200815 +++ /dev/null @@ -1,36 +0,0 @@ -

6 weekly roundup

-august 9-15, 2020 -apache, automation, css, html, jenkins, nginx, php, server, website
-
-

monday, august 9

- -

wednesday, august 5

- -
-

thursday, august 6

- -
-

friday, august 7

- -
-

saturday, august 8

- -
- diff --git a/src/diary/entries/200831 b/src/diary/entries/200831 new file mode 100644 index 0000000..a022c7a --- /dev/null +++ b/src/diary/entries/200831 @@ -0,0 +1,104 @@ + +

august 2020: new server, new site

+august 31, 2020
+apache, css, html, nginx, php, server, website
+
+

tuesday, august 4

+ +
+

wednesday, august 5

+ +
+

thursday, august 6

+ +
+

friday, august 7

+ +
+

saturday, august 8

+ +
+

sunday, august 9

+ +
+

monday, august 10

+ +
+

wednesday, august 12

+ +
+

friday, august 14

+ +
+

saturday, august 15

+ +
+

sunday, august 16

+ +
+

monday, august 17

+ +
+

august 18 - august 21

+ +
+

saturday, august 22

+ +
+

sunday, august 23

+ +
+

monday, august 24

+ +
+

tuesday, august 25

+ +
+

wednesday, august 26

+ +
diff --git a/src/diary/entries/200918 b/src/diary/entries/200918 index e145a64..37b82b5 100644 --- a/src/diary/entries/200918 +++ b/src/diary/entries/200918 @@ -1,6 +1,28 @@ -

5 my favorite GDC talks

+ +

my favorite GDC talks

september 18, 2020
+game design, marketing

-I really should be keeping a list of these with descriptions, so why not keep them in an article?
+I really should be keeping a list of these with descriptions, so why not keep them in an article?
+
+

Automated Testing and Instant Replays in Retro City Rampage


+Vblank Entertainment's Brian Provinciano (2015)
+log button inputs to replay the game, for use in preproducing bugs, sharing replays on the community leaderboard, running cutscenes, and even controlling AI. It is 100% accurate in deterministic engines but also helpful in less deterministic engines. +
+ +
+
+

Empathizing with Steam: How People Shop for Your Game


+Chris Zukowski (2020)
+tips for how to design your Steam store page based on Zukowski's screenshare and shopping diary observations of ordinary people shopping on Steam
+
+
-Work on it later.
diff --git a/src/diary/entries/200919 b/src/diary/entries/200919 deleted file mode 100644 index 391ccaf..0000000 --- a/src/diary/entries/200919 +++ /dev/null @@ -1,13 +0,0 @@ -

4 weekly roundup

-september 13-19, 2020 -bottle
-
-

friday, september 18

- -
diff --git a/src/diary/entries/200926 b/src/diary/entries/200926 deleted file mode 100644 index 3aef0dd..0000000 --- a/src/diary/entries/200926 +++ /dev/null @@ -1,14 +0,0 @@ -

3 weekly roundup

-september 20-26, 2020 -bottle
-
-

friday, september 25

- -
-

saturday, september 26

- -
diff --git a/src/diary/entries/200931 b/src/diary/entries/200931 new file mode 100644 index 0000000..5a7adb1 --- /dev/null +++ b/src/diary/entries/200931 @@ -0,0 +1,40 @@ + +

september 2020: bye php, hello bottle

+september 30, 2020 +bottle, css, git, html, regex, regular expressions, website

+
+

tuesday, september 1

+ +
+

wednesday, september 2

+ +
+

friday, september 18

+ +
+

friday, september 25

+ +
+

saturday, september 26

+ +
+

wednesday, september 30

+ diff --git a/src/diary/entries/201001 b/src/diary/entries/201001 deleted file mode 100644 index cd94c32..0000000 --- a/src/diary/entries/201001 +++ /dev/null @@ -1,11 +0,0 @@ -

2 why bottle over php?

-october 1, 2020
-
-Bottle is a Python framework for server-side web development.
-
-It's useful because it lets you reuse code for HTML, supports simple HTML templating, and is Python, which is a fun scripting language to use with tons of libraries.
-
-PHP is an old server language. It's very verbose, doesn't natively support templating, has extreme differences between versions which makes it confusing to research the fastest approaches, and its documentation is confusing. At least, amusingly, each documentation page has an open comment section underneath it, filled with conflicting and frustrated opinions, some dating back to when I was a toddler.
-
-It's still good to practice with, since it's a widely used web development language, and I feel like understanding it brings me closer to the PHP petsites of the mid-2000s which I dearly love.
-
diff --git a/src/diary/entries/201003 b/src/diary/entries/201003 deleted file mode 100644 index cf41824..0000000 --- a/src/diary/entries/201003 +++ /dev/null @@ -1,17 +0,0 @@ -

1 this week

-september 27-october 3, 2020 -bottle, css, git, html, regex, regular expressions, website
-
-

wednesday, august 9

- -

thursday, october 1

- diff --git a/src/diary/entries/201010 b/src/diary/entries/201010 new file mode 100644 index 0000000..6ef3c8e --- /dev/null +++ b/src/diary/entries/201010 @@ -0,0 +1,9 @@ + +

web development resources

+october 10, 2020
+accessibility, color, css, html, web design
+
+' return content def clean(result): + result = result.replace('\n','') result = result.replace('
','') result = re.sub(r'', '', result) result = result.replace('','') @@ -87,9 +132,12 @@ def sort_files(files): files.sort(reverse=True) return files#list(reversed(files)) -def gather_files(): +def gather_files(loc): files = os.listdir(loc) - files.remove('raw') + if 'raw' in files: + files.remove('raw') + if 'extra' in files: + files.remove('extra') return files # Static @@ -102,6 +150,10 @@ def serve_css(filename): def serve_img(filename): return static_file(filename, root='static/img') +@route('/static/extra/') +def serve_extra(filename): + return static_file(filename, root='static/extra', mimetype='text/plain', download=True) + # Routes @error(404) @@ -111,7 +163,8 @@ def error404(error): @route('/') def index(): """home page""" - info = {'css': 'index', 'news': list_headlines(sort_files(gather_files())[0:10]), 'title': 'chimchooree\'s dev space - blessfrey', 'year': datetime.datetime.now()} + loc = 'diary/entries/' + info = {'css': 'index', 'news': list_headlines(sort_files(gather_files(loc))[0:10]), 'title': 'chimchooree\'s dev space - blessfrey', 'year': datetime.datetime.now()} return template('index.tpl', info) @route('/game') @@ -133,14 +186,26 @@ def diary2(): @route('/diary/') def diary(page): """diary page""" + loc = 'diary/entries/' assert isinstance(page, int) - info = {'css': 'diary', 'title': 'blessfrey - developer diary', 'year': datetime.datetime.now(), 'snippets': list_snippets(sort_files(gather_files())), 'latest': list_headlines(sort_files(gather_files())[0:5]), 'total': len(gather_files()), 'limit': 4, 'cluster': 3, 'page': page} + info = {'css': 'diary', 'title': 'blessfrey - developer diary', 'year': datetime.datetime.now(), 'snippets': list_snippets(sort_files(gather_files(loc))), 'latest': list_headlines(sort_files(gather_files(loc))[0:5]), 'total': len(gather_files(loc)), 'limit': 4, 'cluster': 3, 'page': page} return template('diary.tpl', info) @route('/diary/entries/') def entry(page): """diary entry""" - info = {'css': 'feature', 'title': 'blessfrey - developer diary', 'year': datetime.datetime.now(), 'entry': retrieve_article(page), 'recommends': [['title','content','anchor'],['title','content','anchor'],['title','content','anchor']], 'articles': "Articles", 'latest': list_headlines(sort_files(gather_files())[0:5]), 'page': page} + loc = 'diary/entries/' + info = {'css': 'feature', 'title': 'blessfrey - developer diary', 'year': datetime.datetime.now(), 'entry': retrieve_article(page, loc), 'recommends': list_rec(page), 'articles': "Articles", 'latest': list_headlines(sort_files(gather_files(loc))[0:5]), 'page': page} + abs_app_dir_path = os.path.dirname(os.path.realpath(__file__)) + abs_views_path = os.path.join(abs_app_dir_path, 'views') + TEMPLATE_PATH.insert(0, abs_views_path ) + return template(os.path.join(abs_views_path,'feature.tpl'), info) + +@route('/diary/entries/extra/') +def extra(page): + """diary extra""" + loc = 'diary/entries/extra/' + info = {'css': 'feature', 'title': 'blessfrey - developer diary', 'year': datetime.datetime.now(), 'entry': retrieve_article(page, loc), 'recommends': list_rec(page), 'articles': "Articles", 'latest': list_headlines(sort_files(gather_files('diary/entries/'))[0:5]), 'page': page} abs_app_dir_path = os.path.dirname(os.path.realpath(__file__)) abs_views_path = os.path.join(abs_app_dir_path, 'views') TEMPLATE_PATH.insert(0, abs_views_path ) @@ -164,6 +229,5 @@ def contact(): info = {'css': 'box', 'title': 'blessfrey - contact chimchooree', 'year': datetime.datetime.now()} return template('contact.tpl', info) -## Main ## if __name__ == '__main__': - run() + run(host='127.0.0.1', port=9001) diff --git a/src/static/css/diary.css b/src/static/css/diary.css index 8dd0aa3..4ed6b0a 100755 --- a/src/static/css/diary.css +++ b/src/static/css/diary.css @@ -6,28 +6,13 @@ a { text-decoration: none; } -a:link { - color: red; -} -a:visited { - color: hotpink; -} -a:hover { - color: green; -} -a:active { - color: blue; -} -mark { - background-color: #900C3F; - color: hotpink; -} + ul { list-style-position: inside; } .grid { display: grid; grid-template-columns: auto 533px 267px auto; - grid-template-rows: 25px 90px 40px repeat(4, 1fr) auto; + grid-template-rows: 25px 90px 40px repeat(2, auto); grid-column-gap: 0px; grid-row-gap: 0px; } @@ -38,16 +23,20 @@ ul { list-style-position: inside; } flex-direction:column; justify-content:center; align-items: center; - background-color: #3B429F; + background-color: #900C3F; } -.blessfrey-logo { grid-area: 1 / 2 / 2 / 4; } +.blessfrey-logo { + grid-area: 1 / 2 / 2 / 4; + padding-top: 5px; + color: #FBDAEC; +} /* navigation pane */ .nav-row { grid-area: 2 / 1 / 3 / 5; - background-color: #AA7DCE; + background-color: #900C3F; } .nav-grid { @@ -58,12 +47,11 @@ ul { list-style-position: inside; } display: grid; grid-template-columns: auto repeat(4, 70px) auto; grid-template-rows: 90px; - grid-column-gap: 8px; + grid-column-gap: 17px; grid-row-gap: 0px; align-items: end; justify-items: center; } - .nav-bar { grid-area: 1 / 1 / 2 / 7; display: flex; @@ -79,6 +67,7 @@ ul { list-style-position: inside; } flex-direction:column; justify-content:flex-end; padding-bottom: 3px; + position: relative; } .nav-game { grid-area: 1 / 3 / 2 / 4; @@ -86,6 +75,7 @@ ul { list-style-position: inside; } flex-direction:column; justify-content:flex-end; padding-bottom: 3px; + position: relative; } .nav-diary { grid-area: 1 / 4 / 2 / 5; @@ -93,6 +83,7 @@ ul { list-style-position: inside; } flex-direction:column; justify-content:flex-end; padding-bottom: 3px; + position: relative; } .nav-presskit { grid-area: 1 / 5 / 2 / 6; @@ -100,100 +91,160 @@ ul { list-style-position: inside; } flex-direction:column; justify-content:flex-end; padding-bottom: 3px; + position: relative; } - -/* nav buttons */ - -.button { - background-color: #000000; - color: #ce50ce; - font-size: 16px; - border: 2px solid #f7dd8e; - height: 48px; - width: 70px; - text-decoration: none; - display: flex; - flex-direction:column; - justify-content:center; - align-items: center; +.nav-link { + position: absolute; + top: 45%; + left: 50%; + transform: translate(-50%, -50%) } - -.button:hover { - background-color: #723777; - color: #ce50ce; - font-size: 16px; - border: 2px solid #f7dd8e; - height: 48px; - width: 70px; - text-decoration: none; - display: flex; - flex-direction:column; - justify-content:center; - align-items: center; +.nav-link a { + font-size: 18px; +} +.nav-link a:link { + color: #66C7F4; +} +.nav-link a:visited { + color: #CB9CF2; +} +.nav-link a:hover { + color: #F9B3D7; +} +.nav-link a:active { + color: #f463ad; } /* Body */ .dir-row { - grid-area: 3 / 1 / 4 / 5; - background-color: #F5D7E3; + grid-area: 3 / 2 / 4 / 4; + background-color: #080410; + color: #F9B3D7; } .diary-dir { - grid-area: 3 / 2 / 4 / 4; - background-color: #900C3F; + grid-area: 3 / 1 / 4 / 5; + background-color: #080410; + color: #F9B3D7; + font-size: 20px; + padding-top: 5px; +} +.diary-dir a:link { + color: #C9C2D6; +} +.diary-dir a:visited { + color: #C9C2D6; +} +.diary-dir a:hover { + color: #F9B3D7; +} +.diary-dir a:active { + color: #f463ad; } .body-row { - grid-area: 4 / 1 / 8 / 5; - background-color: #b56c4d; + grid-area: 4 / 1 / 5 / 5; + background-color: #080410; } .diary-pages { - grid-area: 4 / 2 / 8 / 3; - background-color: #F4A5AE; - padding: 5px; + grid-area: 4 / 2 / 5 / 3; +} + +.snippet { + background-color: #C9C2D6; + color: #080410; + padding: 20px; + margin-top: 0px; + margin-bottom: 30px; +} +.snippet a:link { + color: #401231; +} +.snippet a:visited { + color: #401231; +} +.snippet a:hover { + color: #902771; +} +.snippet a:active { + color: #900C3F; } +.sidebar { + grid-area: 4 / 3 / 5 / 4; + display: grid; + grid-template-columns: auto; + grid-template-rows: repeat(4, auto); + grid-column-gap: 0px; + grid-row-gap: 0px; + align-content: start; + padding-left: 7px; +} +.sidebar a:link { + color: #C9C2D6; +} +.sidebar a:visited { + color: #C9C2D6; +} +.sidebar a:hover { + color: #F9B3D7; +} +.sidebar a:active { + color: #F9B3D7; +} .about-box { grid-area: 4 / 3 / 5 / 4; - background-color: #993759; + background-color: #581845; + color: #F9B3D7; text-align: center; + margin: 15px; + padding: 5px; + margin-top: 0px; + padding-bottom: 15px; } - .twitter-box { grid-area: 5 / 3 / 6 / 4; - background-color: #faa275; + background-color: #581845; + color: #F9B3D7; text-align: center; + margin: 15px; + padding: 5px; + padding-bottom: 15px; } - .latest { grid-area: 6 / 3 / 7 / 4; - background-color: #ff8c61; + background-color: #581845; + color: #F9B3D7; text-align: center; list-style-position: inside; + margin: 15px; + padding: 5px; } - .latest-text { - background-color: #512806; text-align: left; list-style-position: inside; - + padding: 5px; } - .disclosure { grid-area: 7 / 3 / 8 / 4; - background-color: #ce6a85; + background-color: #581845; + color: #F9B3D7; text-align: center; + margin: 15px; + padding: 5px; + padding-bottom: 15px; } .footer-row { - grid-area: 8 / 1 / 9 / 5; - background-color: #A8577E; + grid-area: 5 / 1 / 6 / 5; + background-color: #080410; } .footer-content { - background-color: pink; + background-color: #080410; + color: #F9B3D7; padding-top: 5px; padding-right: 25px; box-shadow: 0 100vh 0 100vh #581845; diff --git a/src/static/css/feature.css b/src/static/css/feature.css index 53b6a2a..54ce8ee 100644 --- a/src/static/css/feature.css +++ b/src/static/css/feature.css @@ -6,22 +6,7 @@ a { text-decoration: none; } -a:link { - color: red; -} -a:visited { - color: hotpink; -} -a:hover { - color: green; -} -a:active { - color: blue; -} -mark { - background-color: #900C3F; - color: hotpink; -} + ul { list-style-position: inside; } .grid { @@ -38,16 +23,20 @@ ul { list-style-position: inside; } flex-direction:column; justify-content:center; align-items: center; - background-color: #3B429F; + background-color: #900C3F; } -.blessfrey-logo { grid-area: 1 / 2 / 2 / 4; } +.blessfrey-logo { + grid-area: 1 / 2 / 2 / 4; + padding-top: 5px; + color: #FBDAEC; +} /* navigation pane */ .nav-row { grid-area: 2 / 1 / 3 / 5; - background-color: #AA7DCE; + background-color: #900C3F; } .nav-grid { @@ -58,18 +47,16 @@ ul { list-style-position: inside; } display: grid; grid-template-columns: auto repeat(4, 70px) auto; grid-template-rows: 90px; - grid-column-gap: 8px; + grid-column-gap: 17px; grid-row-gap: 0px; align-items: end; justify-items: center; } - .nav-bar { grid-area: 1 / 1 / 2 / 7; display: flex; flex-direction:column; justify-content:flex-end; - align-items: bottom; background-image: url(../img/ele/navbar.png); height: 86px; width: 800px; @@ -79,135 +66,165 @@ ul { list-style-position: inside; } display: flex; flex-direction:column; justify-content:flex-end; - align-items: bottom; padding-bottom: 3px; + position: relative; } .nav-game { grid-area: 1 / 3 / 2 / 4; display: flex; flex-direction:column; justify-content:flex-end; - align-items: bottom; padding-bottom: 3px; + position: relative; } .nav-diary { grid-area: 1 / 4 / 2 / 5; display: flex; flex-direction:column; justify-content:flex-end; - align-items: bottom; padding-bottom: 3px; + position: relative; } .nav-presskit { grid-area: 1 / 5 / 2 / 6; display: flex; flex-direction:column; justify-content:flex-end; - align-items: bottom; padding-bottom: 3px; + position: relative; } - -/* nav buttons */ - -.button { - background-color: #000000; - color: #ce50ce; - font-size: 16px; - border: 2px solid #f7dd8e; - height: 48px; - width: 70px; - text-decoration: none; - display: flex; - flex-direction:column; - justify-content:center; - align-items: center; +.nav-link { + position: absolute; + top: 45%; + left: 50%; + transform: translate(-50%, -50%) } - -.button:hover { - background-color: #723777; - color: #ce50ce; - font-size: 16px; - border: 2px solid #f7dd8e; - height: 48px; - width: 70px; - text-decoration: none; - display: flex; - flex-direction:column; - justify-content:center; - align-items: center; +.nav-link a { + font-size: 18px; +} +.nav-link a:link { + color: #66C7F4; +} +.nav-link a:visited { + color: #CB9CF2; +} +.nav-link a:hover { + color: #F9B3D7; +} +.nav-link a:active { + color: #f463ad; } /* Body */ .body-row { grid-area: 3 / 1 / 5 / 5; - background-color: #b56c4d; + background-color: #080410; } .diary-entry { grid-area: 3 / 2 / 4 / 3; - background-color: #aa2055; - padding: 5px; + background-color: #C9C2D6; + color: #080410; + padding: 20px; + margin-top: 40px; + margin-bottom: 30px; } -.sidebar ( +.sidebar { grid-area: 3 / 3 / 5 / 4; - background-color: #b56c4d; display: grid; grid-template-columns: auto; grid-template-rows: repeat(4, auto); grid-column-gap: 0px; grid-row-gap: 0px; -) - + align-content: start; + padding-left: 7px; + margin-top: 40px; +} +.sidebar a:link { + color: #C9C2D6; +} +.sidebar a:visited { + color: #C9C2D6; +} +.sidebar a:hover { + color: #F9B3D7; +} +.sidebar a:active { + color: #F9B3D7; +} .about-box { grid-area: 1 / 1 / 2 / 2; - background-color: #993759; + background-color: #581845; + color: #F9B3D7; + text-align: center; + margin: 15px; + padding: 5px; + margin-top: 0px; + padding-bottom: 15px; } - .twitter-box { grid-area: 2 / 1 / 3 / 2; - background-color: #faa275; + background-color: #581845; + color: #F9B3D7; + text-align: center; + margin: 15px; + padding: 5px; + padding-bottom: 15px; } - .latest { grid-area: 3 / 1 / 4 / 2; - background-color: #ff8c61; + background-color: #581845; + color: #F9B3D7; + text-align: center; + list-style-position: inside; + margin: 15px; + padding: 5px; } - .latest-text { - background-color: #512806; text-align: left; + list-style-position: inside; + padding: 5px; } - .disclosure { grid-area: 4 / 1 / 5 / 2; - background-color: #ce6a85; + background-color: #581845; + color: #F9B3D7; + text-align: center; + margin: 15px; + padding: 5px; + padding-bottom: 15px; } .recommend { grid-area: 4 / 2 / 5 / 3; - background-color: #F5D7E3; + background-color: #080410; + color: #F9B3D7; display: grid; - grid-template-columns: auto repeat(3, 100px) auto; - grid-template-rows: auto; + grid-template-columns: auto auto auto; + grid-template-rows: auto auto; grid-column-gap: 0px; grid-row-gap: 0px; padding: 5px; } +.more { grid-area: 1 / 1 / 2 / 4; } +.rec-box { grid-area: 2 / 2 / 3 / 3; } -.more { grid-area: 1 / 1 / 2 / 6; } -.snip1 { grid-area: 2 / 2 / 3 / 3; } -.snip2 { grid-area: 2 / 3 / 3 / 4; } -.snip3 { grid-area: 2 / 4 / 3 / 5; } +.snip { + width: 100px; + float: left; + margin: 50px; +} .footer-row { grid-area: 5 / 1 / 6 / 5; - background-color: #A8577E; + background-color: #080410; } .footer-content { - background-color: #5c374c; + background-color: #080410; + color: #F9B3D7; padding-top: 5px; padding-right: 25px; box-shadow: 0 100vh 0 100vh #581845; diff --git a/src/static/css/game.css b/src/static/css/game.css index 20cbe99..caa2f6c 100644 --- a/src/static/css/game.css +++ b/src/static/css/game.css @@ -1,31 +1,19 @@ * { padding:0; margin:0; + font-family: trebuchet ms; arial; calibri; gill sans; helvetica neue; candara; geneva; verdana; sans-serif; } a { text-decoration: none; } -a:link { - color: red; -} -a:visited { - color: hotpink; -} -a:hover { - color: green; -} -a:active { - color: blue; -} -mark { - background-color: #900C3F; - color: hotpink; -} ul { list-style-position: inside; } .textbox { margin: 20px; + padding: 20px; + background-color: #C9C2D6; + color: #080410; } .grid { @@ -42,27 +30,31 @@ ul { list-style-position: inside; } flex-direction:column; justify-content:center; align-items: center; - background-color: #3B429F; + background-color: #900C3F; } -.blessfrey-logo { grid-area: 1 / 2 / 2 / 3; } +.blessfrey-logo { + grid-area: 1 / 2 / 2 / 3; + padding-top: 5px; + color: #FBDAEC; +} /* navigation pane */ .nav-row { grid-area: 2 / 1 / 3 / 4; - background-color: #AA7DCE; + background-color: #900C3F; } .nav-grid { grid-area: 2 / 2 / 3 / 3; display: flex; - flex-direction:column; + flex-direction:row; justify-content:flex-end; display: grid; grid-template-columns: auto repeat(4, 70px) auto; grid-template-rows: 90px; - grid-column-gap: 8px; + grid-column-gap: 17px; grid-row-gap: 0px; align-items: end; justify-items: center; @@ -83,6 +75,7 @@ ul { list-style-position: inside; } flex-direction:column; justify-content:flex-end; padding-bottom: 3px; + position: relative; } .nav-game { grid-area: 1 / 3 / 2 / 4; @@ -90,6 +83,7 @@ ul { list-style-position: inside; } flex-direction:column; justify-content:flex-end; padding-bottom: 3px; + position: relative; } .nav-diary { grid-area: 1 / 4 / 2 / 5; @@ -97,6 +91,7 @@ ul { list-style-position: inside; } flex-direction:column; justify-content:flex-end; padding-bottom: 3px; + position: relative; } .nav-presskit { grid-area: 1 / 5 / 2 / 6; @@ -104,41 +99,35 @@ ul { list-style-position: inside; } flex-direction:column; justify-content:flex-end; padding-bottom: 3px; + position: relative; } - -/* nav buttons */ - -.button { - background-color: #000000; - color: #ce50ce; - font-size: 16px; - border: 2px solid #f7dd8e; - height: 48px; - width: 70px; - text-decoration: none; - display: flex; - flex-direction:column; - justify-content:center; - align-items: center; +.nav-link { + position: absolute; + top: 45%; + left: 50%; + transform: translate(-50%, -50%) } - -.button:hover { - background-color: #723777; - color: #ce50ce; - font-size: 16px; - border: 2px solid #f7dd8e; - height: 48px; - width: 70px; - text-decoration: none; - display: flex; - flex-direction:column; - justify-content:center; - align-items: center; +.nav-link a { + font-size: 18px; +} +.nav-link a:link { + color: #66C7F4; +} +.nav-link a:visited { + color: #CB9CF2; } +.nav-link a:hover { + color: #F9B3D7; +} +.nav-link a:active { + color: #f463ad; +} + +/* Body */ .body-row { grid-area: 3 / 1 / 4 / 4; - background-color: #d08d11; + background-color: #080410; } .pages { @@ -148,34 +137,34 @@ ul { list-style-position: inside; } grid-template-rows: repeat(4, auto); grid-column-gap: 0px; grid-row-gap: 0px; - background-color: #F0565C; + background-color: #080410; word-wrap: break-word; } .desc { grid-area: 1 / 1 / 2 / 2; - background-color: #F45693; + background-color:; } .story { grid-area: 2 / 1 / 3 / 2; - background-color: #D67476; + background-color:; } .system { grid-area: 3 / 1 / 4 / 2; - background-color: #F0787E; + background-color:; } .graphics { grid-area: 4 / 1 / 5 / 2; - background-color: #F75155; + background-color:; } .footer-row { grid-area: 4 / 1 / 5 / 4; - background-color: green; + background-color: #900C3F; } .footer-content { - background-color: pink; + background-color: #581845; padding-top: 5px; text-align: right; overflow: hidden; diff --git a/src/static/css/index.css b/src/static/css/index.css index 7e6e467..cea4705 100755 --- a/src/static/css/index.css +++ b/src/static/css/index.css @@ -1,27 +1,12 @@ * { padding:0; margin:0; + font-family: trebuchet ms; arial; calibri; gill sans; helvetica neue; candara; geneva; verdana; sans-serif; } a { text-decoration: none; } -a:link { - color: red; -} -a:visited { - color: hotpink; -} -a:hover { - color: green; -} -a:active { - color: blue; -} -mark { - background-color: #900C3F; - color: hotpink; -} .grid { display: grid; @@ -37,16 +22,20 @@ mark { flex-direction:column; justify-content:center; align-items: center; - background-color: #DAF7A6; + background-color: #900C3F; } -.blessfrey-logo { grid-area: 1 / 3 / 2 / 6; } +.blessfrey-logo { + grid-area: 1 / 3 / 2 / 6; + padding-top: 5px; + color: #FBDAEC; +} /* navigation pane */ .nav-row { grid-area: 2 / 1 / 3 / 8; - background-color: #FFC300; + background-color: #900C3F; } .nav-grid { @@ -57,7 +46,7 @@ mark { display: grid; grid-template-columns: auto repeat(4, 70px) auto; grid-template-rows: 90px; - grid-column-gap: 8px; + grid-column-gap: 17px; grid-row-gap: 0px; align-items: end; justify-items: center; @@ -77,6 +66,7 @@ mark { flex-direction:column; justify-content:flex-end; padding-bottom: 3px; + position: relative; } .nav-game { grid-area: 1 / 3 / 2 / 4; @@ -84,6 +74,7 @@ mark { flex-direction:column; justify-content:flex-end; padding-bottom: 3px; + position: relative; } .nav-diary { grid-area: 1 / 4 / 2 / 5; @@ -91,6 +82,7 @@ mark { flex-direction: column; justify-content: flex-end; padding-bottom: 3px; + position: relative; } .nav-presskit { grid-area: 1 / 5 / 2 / 6; @@ -98,43 +90,35 @@ mark { flex-direction: column; justify-content: flex-end; padding-bottom: 3px; + position: relative; } - -/* nav buttons */ - -.button { - background-color: #000000; - color: #ce50ce; - font-size: 16px; - border: 2px solid #f7dd8e; - height: 48px; - width: 70px; - text-decoration: none; - display: flex; - flex-direction:column; - justify-content:center; - align-items: center; +.nav-link { + position: absolute; + top: 45%; + left: 50%; + transform: translate(-50%, -50%) } - -.button:hover { - background-color: #723777; - color: #ce50ce; - font-size: 16px; - border: 2px solid #f7dd8e; - height: 48px; - width: 70px; - text-decoration: none; - display: flex; - flex-direction:column; - justify-content:center; - align-items: center; +.nav-link a { + font-size: 18px; +} +.nav-link a:link { + color: #66C7F4; +} +.nav-link a:visited { + color: #CB9CF2; +} +.nav-link a:hover { + color: #F9B3D7; +} +.nav-link a:active { + color: #f463ad; } /* Body */ .body-row { grid-area: 3 / 1 / 4 / 8; - background-color: #FF5733; + background-color: #080410; } .social { @@ -144,7 +128,7 @@ mark { .bg { grid-area: 3 / 3 / 4 / 6; - background-color: #C70039; + background-color:; background-image: url(../img/bg/homeBG.png); width: 650px; height: 457px; @@ -168,6 +152,7 @@ mark { display: flex; flex-direction:column; background-color: #581845; + color: #F9B3D7; height: 85px; overflow-y: scroll; margin-right: 0px; @@ -180,6 +165,19 @@ mark { padding-left: 8px; } +.news a:link { + color: #F9B3D7; +} +.news a:visited { + color: #F9B3D7; +} +.news a:hover { + color: #f463ad; +} +.news a:active { + color: #f463ad; +} + .headline { margin-right: 0px; margin-left: 0px; @@ -193,6 +191,7 @@ mark { .footer-content { background-color: #581845; + color: #F9B3D7; padding-top: 5px; text-align: right; overflow: hidden; diff --git a/src/static/css/presskit.css b/src/static/css/presskit.css index f968877..fa6e721 100644 --- a/src/static/css/presskit.css +++ b/src/static/css/presskit.css @@ -1,31 +1,19 @@ * { padding:0; margin:0; + font-family: trebuchet ms; arial; calibri; gill sans; helvetica neue; candara; geneva; verdana; sans-serif; } a { text-decoration: none; } -a:link { - color: red; -} -a:visited { - color: hotpink; -} -a:hover { - color: green; -} -a:active { - color: blue; -} -mark { - background-color: #900C3F; - color: hotpink; -} ul { list-style-position: inside; } .textbox { margin: 20px; + padding: 20px; + background-color: #C9C2D6; + color: #080410; } .grid { @@ -42,16 +30,19 @@ ul { list-style-position: inside; } flex-direction:column; justify-content:center; align-items: center; - background-color: #3B429F; + background-color: #900C3F; } -.blessfrey-logo { grid-area: 1 / 2 / 2 / 3; } +.blessfrey-logo { grid-area: 1 / 2 / 2 / 3; + padding-top: 5px; + color: #FBDAEC; +} /* navigation pane */ .nav-row { grid-area: 2 / 1 / 3 / 4; - background-color: #AA7DCE; + background-color: #900C3F; } .nav-grid { @@ -62,7 +53,7 @@ ul { list-style-position: inside; } display: grid; grid-template-columns: auto repeat(4, 70px) auto; grid-template-rows: 90px; - grid-column-gap: 8px; + grid-column-gap: 17px; grid-row-gap: 0px; align-items: end; justify-items: center; @@ -83,6 +74,7 @@ ul { list-style-position: inside; } flex-direction:column; justify-content:flex-end; padding-bottom: 3px; + position: relative; } .nav-game { grid-area: 1 / 3 / 2 / 4; @@ -90,6 +82,7 @@ ul { list-style-position: inside; } flex-direction:column; justify-content:flex-end; padding-bottom: 3px; + position: relative; } .nav-diary { grid-area: 1 / 4 / 2 / 5; @@ -97,6 +90,7 @@ ul { list-style-position: inside; } flex-direction:column; justify-content:flex-end; padding-bottom: 3px; + position: relative; } .nav-presskit { grid-area: 1 / 5 / 2 / 6; @@ -104,41 +98,36 @@ ul { list-style-position: inside; } flex-direction:column; justify-content:flex-end; padding-bottom: 3px; + position: relative; } - -/* nav buttons */ - -.button { - background-color: #000000; - color: #ce50ce; - font-size: 16px; - border: 2px solid #f7dd8e; - height: 48px; - width: 70px; - text-decoration: none; - display: flex; - flex-direction:column; - justify-content:center; - align-items: center; +.nav-link { + position: absolute; + top: 45%; + left: 50%; + transform: translate(-50%, -50%) +} +.nav-link a { + font-size: 18px; } -.button:hover { - background-color: #723777; - color: #ce50ce; - font-size: 16px; - border: 2px solid #f7dd8e; - height: 48px; - width: 70px; - text-decoration: none; - display: flex; - flex-direction:column; - justify-content:center; - align-items: center; +.nav-link a:link { + color: #66C7F4; +} +.nav-link a:visited { + color: #CB9CF2; +} +.nav-link a:hover { + color: #F9B3D7; } +.nav-link a:active { + color: #f463ad; +} + +/* Body */ .body-row { grid-area: 3 / 1 / 4 / 4; - background-color: orange; + background-color: #080410; } .pages { @@ -148,56 +137,48 @@ ul { list-style-position: inside; } grid-template-rows: repeat(9, auto); grid-column-gap: 0px; grid-row-gap: 0px; - background-color: #F0565C; + background-color: #; word-wrap: break-word; } .fact { grid-area: 1 / 1 / 2 / 2; - background-color: #F45693; } .desc { grid-area: 2 / 1 / 3 / 2; - background-color: #9b0017; } .features { grid-area: 3 / 1 / 4 / 2; - background-color: #f84c09; } .dev { grid-area: 4 / 1 / 5 / 2; - background-color: #900C3F; } .videos { grid-area: 5 / 1 / 6 / 2; - background-color: #ff8600; } .graphics { grid-area: 6 / 1 / 7 / 2; - background-color: #b61643; justify-content:center; align-items: center; } .contact { grid-area: 7 / 1 / 8 / 2; - background-color: #4f000b; } .credits { grid-area: 8 / 1 / 9 / 2; - background-color: #720026; } .permissions { grid-area: 9 / 1 / 10 / 2; - background-color: #fc60a8; } .footer-row { grid-area: 4 / 1 / 5 / 4; - background-color: green; + background-color: #080410; } .footer-content { - background-color: pink; + background-color: #080410; + color: #F9B3D7; padding-top: 5px; text-align: right; overflow: hidden; diff --git a/src/static/css/style.css b/src/static/css/style.css deleted file mode 100755 index 6779477..0000000 --- a/src/static/css/style.css +++ /dev/null @@ -1,45 +0,0 @@ -/* blessfrey css by chimchooree, written in xed */ - -body { - color: #4f000b; - font-family: lato; calibri; arial; sans-serif; - font-size: 20px; - background-color: #ff7f51; - background-image: url(https://i.imgur.com/Pp71lWt.png); - /*background-image: url(/res/img/medallion.png);*/ - background-size: 70px 70px; - background-repeat: repeat; - margin-right: 0px; - margin-left: 0px; - margin-top: 0px; - margin-bottom: 0px; -} - -/* nav buttons */ - -.button { - background-color: #000000; - color: #ce50ce; - font-size: 16px; - border: 2px solid #f7dd8e; - height: 48px; - width: 94px; - text-decoration: none; - display: flex; - flex-direction:column; - justify-content:center; - align-items: center; -} - -.button:hover { - background-color: #723777; - color: #ce50ce; - border: 2px solid #f7dd8e; - height: 48px; - width: 94px; - text-decoration: none; - display: flex; - flex-direction:column; - justify-content:center; - align-items: center; -} diff --git a/src/static/css/weekly.css b/src/static/css/weekly.css deleted file mode 100644 index 67e1e84..0000000 --- a/src/static/css/weekly.css +++ /dev/null @@ -1,186 +0,0 @@ -* { - padding:0; - margin:0; -} - -a:link { - color: red; -} -a:visited { - color: hotpink; -} -a:hover { - color: green; -} -a:active { - color: blue; -} -mark { - background-color: #900C3F; - color: hotpink; -} -ul { list-style-position: inside; } - -.textbox { - margin: 20px; -} - -.grid { - height: 100vh; - width: 100vw; - display: grid; - grid-template-columns: auto 800px auto; - grid-template-rows: 25px 90px 1fr 100px; - grid-column-gap: 0px; - grid-row-gap: 0px; -} - -.whitespace { - grid-area: 1 / 1 / 2 / 4; - display: flex; - flex-direction:column; - justify-content:center; - align-items: center; - background-color: #3B429F; -} - -.blessfrey-logo { grid-area: 1 / 2 / 2 / 3; } - -/* navigation pane */ - -.nav-row { - grid-area: 2 / 1 / 3 / 4; - background-color: #AA7DCE; -} - -.nav-grid { - grid-area: 2 / 2 / 3 / 3; - display: flex; - flex-direction:column; - justify-content:flex-end; - display: grid; - grid-template-columns: auto repeat(4, 70px) auto; - grid-template-rows: 90px; - grid-column-gap: 8px; - grid-row-gap: 0px; - align-items: end; - justify-items: center; -} - -.nav-bar { - grid-area: 1 / 1 / 2 / 7; - display: flex; - flex-direction:column; - justify-content:flex-end; - align-items: bottom; - background-image: url(../img/ele/navbar.png); - height: 86px; - width: 800px; -} -.nav-index { - grid-area: 1 / 2 / 2 / 3; - display: flex; - flex-direction:column; - justify-content:flex-end; - align-items: bottom; - padding-bottom: 3px; -} -.nav-game { - grid-area: 1 / 3 / 2 / 4; - display: flex; - flex-direction:column; - justify-content:flex-end; - align-items: bottom; - padding-bottom: 3px; -} -.nav-diary { - grid-area: 1 / 4 / 2 / 5; - display: flex; - flex-direction:column; - justify-content:flex-end; - align-items: bottom; - padding-bottom: 3px; -} -.nav-presskit { - grid-area: 1 / 5 / 2 / 6; - display: flex; - flex-direction:column; - justify-content:flex-end; - align-items: bottom; - padding-bottom: 3px; -} - -/* nav buttons */ - -.button { - background-color: #000000; - color: #ce50ce; - font-size: 16px; - border: 2px solid #f7dd8e; - height: 48px; - width: 70px; - text-decoration: none; - display: flex; - flex-direction:column; - justify-content:center; - align-items: center; -} - -.button:hover { - background-color: #723777; - color: #ce50ce; - font-size: 16px; - border: 2px solid #f7dd8e; - height: 48px; - width: 70px; - text-decoration: none; - display: flex; - flex-direction:column; - justify-content:center; - align-items: center; -} - -.body-row { - grid-area: 3 / 1 / 4 / 4; - background-color: #d08d11; -} - -.pages { - grid-area: 3 / 2 / 4 / 3; - display: grid; - grid-template-columns: 1fr; - grid-template-rows: repeat(4, auto); - grid-column-gap: 0px; - grid-row-gap: 0px; - background-color: #F0565C; - word-wrap: break-word; -} - -.desc { - grid-area: 1 / 1 / 2 / 2; - background-color: #F45693; -} -.story { - grid-area: 2 / 1 / 3 / 2; - background-color: #D67476; -} -.system { - grid-area: 3 / 1 / 4 / 2; - background-color: #F0787E; -} -.graphics { - grid-area: 4 / 1 / 5 / 2; - background-color: #F75155; -} - -.footer-row { - grid-area: 4 / 1 / 5 / 4; - background-color: #EC424A; - text-align: right; - padding-top: 5px; - padding-right: 25px; -} - -.footer { - background-color: #060d1a; -} diff --git a/src/static/extra/SimpleInputRec.cpp b/src/static/extra/SimpleInputRec.cpp new file mode 100644 index 0000000..03b4e43 --- /dev/null +++ b/src/static/extra/SimpleInputRec.cpp @@ -0,0 +1,288 @@ +/******************************************************************************/ +// SIMPLE INPUT RECORD/PLAYBACK +// (c) 2015 Brian Provinciano +// +// You are free to use this code for your own purposes, no strings attached. +// +// This is a very basic sample to record and playback button input. +// It's most useful when activated on startup, deactivated on shutdown for +// global button recording/playback. +// +// For details on more advanced implementations, see my GDC 2015 session: +// -> Automated Testing and Instant Replays in Retro City Rampage +// The slides and full video will be available on the GDC Vault at a later date. +/******************************************************************************/ + + +/******************************************************************************/ +// wrap it so it can be conditionally compiled in. +// for example, set INPUTREPLAY_CAN_RECORD to 1 to play the game and record the input, set it to 0 when done +// INPUTREPLAY_CAN_RECORD takes priority over INPUTREPLAY_CAN_PLAYBACK + +#define INPUTREPLAY_CAN_PLAYBACK 1 +#define INPUTREPLAY_CAN_RECORD 1 + +#define INPUTREPLAY_INCLUDED (INPUTREPLAY_CAN_PLAYBACK || INPUTREPLAY_CAN_RECORD) +/******************************************************************************/ + +#if INPUTREPLAY_INCLUDED + +#define INPUT_BUTTONS_TOTAL 32 // up to 32 +#define MAX_REC_LEN 0x8000 // the buffer size for storing RLE compressed button input (x each button) + +/******************************************************************************/ +typedef struct +{ + unsigned short *rledata; + unsigned short rlepos; + unsigned short datalen; + unsigned short currentrun; +} ButtonRec; +/******************************************************************************/ + +// if INPUTREPLAY_CAN_RECORD, as soon as this class is instanced, it will automatically record when instanced/created. +// statically creating this as a global will blanket the entire play session +// +// if INPUTREPLAY_CAN_PLAYBACK, playback will begin as soon as LoadFile() is used +// +class SimpleInputRec +{ + unsigned int m_buttonstate; + ButtonRec m_buttons[INPUT_BUTTONS_TOTAL]; + bool m_bRecording; + + unsigned char* m_data; + +public: + SimpleInputRec() + : m_buttonstate(0) + , m_data(NULL) + , m_bRecording(true) + { + } + + ~SimpleInputRec() + { + if(m_data) + { +#if INPUTREPLAY_CAN_RECORD + WriteToFile(); +#endif + delete[] m_data; + } + } + + // run each frame before the game uses the live button input. + // when recording, it saves the live input + // during playback, it overwrites the live input + void Update(bool bForce = false); + + // to start a playback +#if INPUTREPLAY_CAN_PLAYBACK + bool LoadFile(KSTR szfilename); +#endif + + // to finish recording +#if INPUTREPLAY_CAN_RECORD + void WriteToFile(); +#endif + +}; + +/******************************************************************************/ + +void SimpleInputRec::Update(bool bForce) +{ +#if INPUTREPLAY_CAN_RECORD + if(m_bRecording) + { + unsigned int newbuttons = nesinput.buttons; + + // allocate and initialize + if(!m_data) + { + m_data = new unsigned char[INPUT_BUTTONS_TOTAL * MAX_REC_LEN * 2]; + unsigned short* dataptr = (unsigned short*)m_data; + + for(int i=0; i>i)&1; + btn.rledata[btn.rlepos++] = (bit<<15) | btn.currentrun; + } + btn.currentrun = bForce? 0 : 1; + } + else + { + ++btn.currentrun; + } + } + + m_buttonstate = newbuttons; + } +#endif + +#if INPUTREPLAY_CAN_PLAYBACK + if(!m_bRecording) + { + bool bIsRunning = false; + for(int i=0; i>15)&1)<> 8, f); + } + for(int i=0; iattached. +// +// This is a very basic sample to record and playback button input. +// It's most useful when activated on startup, deactivated on shutdown for +// global button recording/playback. +// +// For details on more advanced implementations, see my GDC 2015 session: +// -> Automated Testing and Instant Replays in Retro City Rampage +// The slides and full video will be available on the GDC Vault at a later date. +/******************************************************************************/ + + +/******************************************************************************/ +// wrap it so it can be conditionally compiled in. +// for example, set INPUTREPLAY_CAN_RECORD to 1 to play the game and record the input, set it to 0 when done +// INPUTREPLAY_CAN_RECORD takes priority over INPUTREPLAY_CAN_PLAYBACK + +#define INPUTREPLAY_CAN_PLAYBACK 1 +#define INPUTREPLAY_CAN_RECORD 1 + +#define INPUTREPLAY_INCLUDED (INPUTREPLAY_CAN_PLAYBACK || INPUTREPLAY_CAN_RECORD) +/******************************************************************************/ + +#if INPUTREPLAY_INCLUDED + +#define INPUT_BUTTONS_TOTAL 32 // up to 32 +#define MAX_REC_LEN 0x8000 // the buffer size for storing RLE compressed button input (x each button) + +/******************************************************************************/ +typedef struct +{ + unsigned short *rledata; + unsigned short rlepos; + unsigned short datalen; + unsigned short currentrun; +} ButtonRec; +/******************************************************************************/ + +// if INPUTREPLAY_CAN_RECORD, as soon as this class is instanced, it will automatically record when instanced/created. +// statically creating this as a global will blanket the entire play session +// +// if INPUTREPLAY_CAN_PLAYBACK, playback will begin as soon as LoadFile() is used +// +class SimpleInputRec +{ + unsigned int m_buttonstate; + ButtonRec m_buttons[INPUT_BUTTONS_TOTAL]; + bool m_bRecording; + + unsigned char* m_data; + +public: + SimpleInputRec() + : m_buttonstate(0) + , m_data(NULL) + , m_bRecording(true) + { + } + + ~SimpleInputRec() + { + if(m_data) + { +#if INPUTREPLAY_CAN_RECORD + WriteToFile(); +#endif + delete[] m_data; + } + } + + // run each frame before the game uses the live button input. + // when recording, it saves the live input + // during playback, it overwrites the live input + void Update(bool bForce = false); + + // to start a playback +#if INPUTREPLAY_CAN_PLAYBACK + bool LoadFile(KSTR szfilename); +#endif + + // to finish recording +#if INPUTREPLAY_CAN_RECORD + void WriteToFile(); +#endif + +}; + +/******************************************************************************/ + +void SimpleInputRec::Update(bool bForce) +{ +#if INPUTREPLAY_CAN_RECORD + if(m_bRecording) + { + unsigned int newbuttons = nesinput.buttons; + + // allocate and initialize + if(!m_data) + { + m_data = new unsigned char[INPUT_BUTTONS_TOTAL * MAX_REC_LEN * 2]; + unsigned short* dataptr = (unsigned short*)m_data; + + for(int i=0; i>i)&1; + btn.rledata[btn.rlepos++] = (bit<<15) | btn.currentrun; + } + btn.currentrun = bForce? 0 : 1; + } + else + { + ++btn.currentrun; + } + } + + m_buttonstate = newbuttons; + } +#endif + +#if INPUTREPLAY_CAN_PLAYBACK + if(!m_bRecording) + { + bool bIsRunning = false; + for(int i=0; i>15)&1)<> 8, f); + } + for(int i=0; i
-

Contact

-

General + Business

+

contact

+

general + business

I would love to hear from you once blessfrey.me is functional and my dev email is set up. Won't be long.

- You can always reach me on Twitter as @lilchimchooree through DMs or mentions.
+ You can always reach me through Twitter as @lilchimchooree.

Press can snag a copy of my presskit at the presskit page.

diff --git a/src/views/credits.tpl b/src/views/credits.tpl new file mode 100644 index 0000000..387f5f4 --- /dev/null +++ b/src/views/credits.tpl @@ -0,0 +1,70 @@ +% rebase('frame.tpl') + +

Credits


+
+game + art by chimchooree
+(all assets are placeholder)
+
+game engine: godot engine, by Juan Linietsky, Ariel Manzur and contributors
+
+background music: "straight"
+Benjamin "Bensound" Tissot
+https://www.bensound.com/royalty-free-music/track/straight
+license: Creative Commons License
+
+background music: "energy"
+Benjamin "Bensound" Tissot
+https://www.bensound.com/royalty-free-music/track/energy
+license: Creative Commons License
+
+background music: "save"
+LokiF
+https://opengameart.org/content/gui-sound-effects
+license: Public Domain CC0
+
+door sound: "Abandoned Villa- Thailand! Door Knocker & Door Knocking Sound Effects"
+freetousesounds https://freetousesounds.bandcamp.com/album/abandoned-villa-thailand-door-knocker-door-knocking-sound-effects
+license: Attribution 3.0 Unported (CC BY 3.0)
+
+click sound: "Click 1" from the UI SFX set
+Kenney Vleugels
+https://www.kenney.nl/assets/ui-audio
+license: Public Domain CC0
+
+wrong sound: "Wrong 02"
+https://www.noiseforfun.com/2012-sound-effects/wrong-02/
+license: CC-BY-ND 3.0 Attribution license
+
+skill failure sound: "Negative" from the GUI Sound Effects set
+LokiF
+https://opengameart.org/content/gui-sound-effects
+license: Public Domain CC0
+
+appraise sound: "Shimmer Glimmer Magic"
+The Berklee College of Music
+submitted to Open Game Art by qubodup
+https://opengameart.org/content/shimmer-glitter-magic
+license: CC-BY 3.0
+
+summon sound: "Elemental Spell"
+Iwan "qubodup" Gabovitch
+https://opengameart.org/content/elemental-spell
+license: CC Attribution-ShareAlike 3.0 Unported
+Copyright 2012 Iwan 'qubodup' Gabovitch http://qubodup.net qubodup@gmail.com | License: CC Attribution-ShareAlike 3.0 Unported http://creativecommons.org/licenses/by-sa/3.0/
+
+bingo win sound: "Positive"
+Lokif
+https://opengameart.org/content/gui-sound-effects
+license: Public Domain CC0
+
+font: JFドットjiskan16 (JF Dot Jiskan16)
+Sony Corp
+http://jikasei.me/font/jf-dotfont/
+license: Public Domain, stored in art/Fonts/Documentation/JF Dot Jiskan16/readme.txt
+
+font: pixel joy
+chimchooree
+https://fontstruct.com/fontstructions/show/1596262/pixel-joy
+license: Public Domain
+

+ diff --git a/src/views/diary-boxes.tpl b/src/views/diary-boxes.tpl index 1349894..57a4c02 100644 --- a/src/views/diary-boxes.tpl +++ b/src/views/diary-boxes.tpl @@ -2,12 +2,12 @@ - +

disclosure

- blessfrey.me is not using sponsored posts or affiliate links right now. -
- blessfrey.me does not collect personal information + has no cookies.
+ blessfrey.me is not using sponsored posts or affiliate links.

- If this changes, sponsored content will be properly disclosed, cookies and analytics will comply with the GDPR and CCPA, etc.
+ blessfrey.me does not collect personal information + has no cookies.

- Thank you for following the development of blessfrey.
+ Thank you for following the development of blessfrey.
diff --git a/src/views/diary.tpl b/src/views/diary.tpl index 502651c..a1a4f75 100644 --- a/src/views/diary.tpl +++ b/src/views/diary.tpl @@ -1,5 +1,5 @@ % rebase('frame.tpl') - +% import re
@@ -76,11 +76,14 @@
{{!s[2]}} - • + • - • - - + % message = "Hey,+check+out+this+post:+" + s[1] + ".,+" + s[3] + % message = message.replace('+','\+') + % message = re.sub('\s+?','+', message) + % message = message.replace('\\','') + % message = re.sub('<.*?>','', message) + •