diff --git a/books.html b/books.html new file mode 100644 index 0000000..48cbdbb --- /dev/null +++ b/books.html @@ -0,0 +1,95 @@ + + + + + + + fateforge-tools + + + + + + + + + + + + + +

FateforgeTools

+ + + +
View cell 2
+ + + + + + + + + + + + + \ No newline at end of file diff --git a/css/flickity.css b/css/flickity.css new file mode 100644 index 0000000..87891d9 --- /dev/null +++ b/css/flickity.css @@ -0,0 +1,137 @@ +/*! Flickity v2.3.0 +https://flickity.metafizzy.co +---------------------------------------------- */ + +.flickity-enabled { + position: relative; + } + + .flickity-enabled:focus { outline: none; } + + .flickity-viewport { + overflow: hidden; + position: relative; + height: 100%; + } + + .flickity-slider { + position: absolute; + width: 100%; + height: 100%; + } + + /* draggable */ + + .flickity-enabled.is-draggable { + -webkit-tap-highlight-color: transparent; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + } + + .flickity-enabled.is-draggable .flickity-viewport { + cursor: move; + cursor: -webkit-grab; + cursor: grab; + } + + .flickity-enabled.is-draggable .flickity-viewport.is-pointer-down { + cursor: -webkit-grabbing; + cursor: grabbing; + } + + /* ---- flickity-button ---- */ + + .flickity-button { + position: absolute; + background: hsla(0, 0%, 100%, 0.75); + border: none; + color: #333; + } + + .flickity-button:hover { + background: white; + cursor: pointer; + } + + .flickity-button:focus { + outline: none; + box-shadow: 0 0 0 5px #19F; + } + + .flickity-button:active { + opacity: 0.6; + } + + .flickity-button:disabled { + opacity: 0.3; + cursor: auto; + /* prevent disabled button from capturing pointer up event. #716 */ + pointer-events: none; + } + + .flickity-button-icon { + fill: currentColor; + } + + /* ---- previous/next buttons ---- */ + + .flickity-prev-next-button { + top: 50%; + width: 44px; + height: 44px; + border-radius: 50%; + /* vertically center */ + transform: translateY(-50%); + } + + .flickity-prev-next-button.previous { left: 10px; } + .flickity-prev-next-button.next { right: 10px; } + /* right to left */ + .flickity-rtl .flickity-prev-next-button.previous { + left: auto; + right: 10px; + } + .flickity-rtl .flickity-prev-next-button.next { + right: auto; + left: 10px; + } + + .flickity-prev-next-button .flickity-button-icon { + position: absolute; + left: 20%; + top: 20%; + width: 60%; + height: 60%; + } + + /* ---- page dots ---- */ + + .flickity-page-dots { + position: absolute; + width: 100%; + bottom: -25px; + padding: 0; + margin: 0; + list-style: none; + text-align: center; + line-height: 1; + } + + .flickity-rtl .flickity-page-dots { direction: rtl; } + + .flickity-page-dots .dot { + display: inline-block; + width: 10px; + height: 10px; + margin: 0 8px; + background: #333; + border-radius: 50%; + opacity: 0.25; + cursor: pointer; + } + + .flickity-page-dots .dot.is-selected { + opacity: 1; + } \ No newline at end of file diff --git a/css/style.css b/css/style.css new file mode 100644 index 0000000..0f757bf --- /dev/null +++ b/css/style.css @@ -0,0 +1,126 @@ +/**** BOOK 3D***/ +*, +:after, +:before { + box-sizing: border-box; + border: 0 solid #e5e7eb; +} + +* { + -webkit-box-sizing: border-box; + box-sizing: border-box; +} + +.book-container { + display: flex; + align-items: center; + justify-content: center; + perspective: 600px; + flex-direction: column; +} + +.book-container .book { + width: 200px; + height: 300px; + position: relative; + transform-style: preserve-3d; + transform: rotateY(-30deg); + transition: transform 1s ease; + animation: 1s ease 0s 1 initAnimation-fd6a; + margin-bottom: 15px; + margin-top: 39px; +} + +.book-container .book > :first-child { + position: absolute; + top: 0; + left: 0; + width: 200px; + height: 283px; + transform: translateZ(25px); + background-color: #01060f; + border-radius: 0 2px 2px 0; + box-shadow: 5px 5px 20px #aaaaaa9d; + background-color: #01060f; +} + +.book-container .book::before { + position: absolute; + content: " "; + left: 0; + top: 3px; + width: 48px; + height: 277px; + transform: translateX(172px) rotateY(90deg); + background: linear-gradient( + 90deg, + #fff 0%, + #f9f9f9 5%, + #fff 10%, + #f9f9f9 15%, + #fff 20%, + #f9f9f9 25%, + #fff 30%, + #f9f9f9 35%, + #fff 40%, + #f9f9f9 45%, + #fff 50%, + #f9f9f9 55%, + #fff 60%, + #f9f9f9 65%, + #fff 70%, + #f9f9f9 75%, + #fff 80%, + #f9f9f9 85%, + #fff 90%, + #f9f9f9 95%, + #fff 100% + ); +} +.book-container .book:hover { + transform: rotateY(0deg); +} + +.book-container .book::after { + position: absolute; + top: 0; + left: 0; + content: " "; + width: 200px; + height: 283px; + transform: translateZ(-25px); + background-color: #01060f; + border-radius: 0 2px 2px 0; + box-shadow: -05px 0 20px 10px #aaaaaa9d; +} + +.book-container .book-title { +} + +/**** Slideshow***/ + +.gallery { + background: #01060f00; + margin-bottom: 40px; +} + +.gallery-cell { + width: 66%; + + margin-right: 10px; + + counter-increment: gallery-cell; +} + +.flickity-viewport { + background-color: #01060f00; +} +.flickity-page-dots .dot { + background: #0093cd; +} +.flickity-prev-next-button { + border-radius: 6px; +} +.flickity-button { + background: #588597; +} diff --git a/img/books/ADV1_BC_EN.jpg b/img/books/ADV1_BC_EN.jpg new file mode 100644 index 0000000..e202355 Binary files /dev/null and b/img/books/ADV1_BC_EN.jpg differ diff --git a/img/books/ADV1_BC_FR.png b/img/books/ADV1_BC_FR.png new file mode 100644 index 0000000..4a59016 Binary files /dev/null and b/img/books/ADV1_BC_FR.png differ diff --git a/img/books/ADV1_BC_Textless.jpg b/img/books/ADV1_BC_Textless.jpg new file mode 100644 index 0000000..65e5a1b Binary files /dev/null and b/img/books/ADV1_BC_Textless.jpg differ diff --git a/img/books/ADV1_DR_Textless.jpg b/img/books/ADV1_DR_Textless.jpg new file mode 100644 index 0000000..7146370 Binary files /dev/null and b/img/books/ADV1_DR_Textless.jpg differ diff --git a/img/books/Box_DR.jpg b/img/books/Box_DR.jpg new file mode 100644 index 0000000..e6bb3e5 Binary files /dev/null and b/img/books/Box_DR.jpg differ diff --git a/img/books/Box_DR_2.jpg b/img/books/Box_DR_2.jpg new file mode 100644 index 0000000..f6cd77c Binary files /dev/null and b/img/books/Box_DR_2.jpg differ diff --git a/img/books/Box_GV.jpg b/img/books/Box_GV.jpg new file mode 100644 index 0000000..9c941e1 Binary files /dev/null and b/img/books/Box_GV.jpg differ diff --git a/img/books/Box_GV_2.jpg b/img/books/Box_GV_2.jpg new file mode 100644 index 0000000..9c941e1 Binary files /dev/null and b/img/books/Box_GV_2.jpg differ diff --git a/img/books/Box_GV_3.jpg b/img/books/Box_GV_3.jpg new file mode 100644 index 0000000..25e8b04 Binary files /dev/null and b/img/books/Box_GV_3.jpg differ diff --git a/img/books/CRE2_BC.png b/img/books/CRE2_BC.png new file mode 100644 index 0000000..d98319f Binary files /dev/null and b/img/books/CRE2_BC.png differ diff --git a/img/books/CRE2_DR.png b/img/books/CRE2_DR.png new file mode 100644 index 0000000..2f5d34d Binary files /dev/null and b/img/books/CRE2_DR.png differ diff --git a/img/books/ECR_GV.jpg b/img/books/ECR_GV.jpg new file mode 100644 index 0000000..0b91b55 Binary files /dev/null and b/img/books/ECR_GV.jpg differ diff --git a/img/books/ENC1_BC.png b/img/books/ENC1_BC.png new file mode 100644 index 0000000..f8bf14c Binary files /dev/null and b/img/books/ENC1_BC.png differ diff --git a/img/books/ENC1_BC_EN.png b/img/books/ENC1_BC_EN.png new file mode 100644 index 0000000..edd57e8 Binary files /dev/null and b/img/books/ENC1_BC_EN.png differ diff --git a/img/books/ENC1_DR.png b/img/books/ENC1_DR.png new file mode 100644 index 0000000..0fdd3d3 Binary files /dev/null and b/img/books/ENC1_DR.png differ diff --git a/img/books/ENC2_DR.png b/img/books/ENC2_DR.png new file mode 100644 index 0000000..39fc30b Binary files /dev/null and b/img/books/ENC2_DR.png differ diff --git a/img/books/GRI1_BC.jpg b/img/books/GRI1_BC.jpg new file mode 100644 index 0000000..d5b943c Binary files /dev/null and b/img/books/GRI1_BC.jpg differ diff --git a/img/books/GRI1_BC_EN.jpg b/img/books/GRI1_BC_EN.jpg new file mode 100644 index 0000000..89a9e00 Binary files /dev/null and b/img/books/GRI1_BC_EN.jpg differ diff --git a/img/books/GRI1_BC_Textless.jpg b/img/books/GRI1_BC_Textless.jpg new file mode 100644 index 0000000..d7f6903 Binary files /dev/null and b/img/books/GRI1_BC_Textless.jpg differ diff --git a/img/books/GRI1_DR_Textless.jpg b/img/books/GRI1_DR_Textless.jpg new file mode 100644 index 0000000..d7f6903 Binary files /dev/null and b/img/books/GRI1_DR_Textless.jpg differ diff --git a/img/books/GUI1_BC.jpg b/img/books/GUI1_BC.jpg new file mode 100644 index 0000000..c26627f Binary files /dev/null and b/img/books/GUI1_BC.jpg differ diff --git a/img/books/GUI1_BC_EN.jpg b/img/books/GUI1_BC_EN.jpg new file mode 100644 index 0000000..d938265 Binary files /dev/null and b/img/books/GUI1_BC_EN.jpg differ diff --git a/img/books/GUI2_BC.jpg b/img/books/GUI2_BC.jpg new file mode 100644 index 0000000..0a7761b Binary files /dev/null and b/img/books/GUI2_BC.jpg differ diff --git a/img/books/LEG1_BC_Textless.jpg b/img/books/LEG1_BC_Textless.jpg new file mode 100644 index 0000000..9b02dfc Binary files /dev/null and b/img/books/LEG1_BC_Textless.jpg differ diff --git a/img/books/LEG2.png b/img/books/LEG2.png new file mode 100644 index 0000000..4d2c4fe Binary files /dev/null and b/img/books/LEG2.png differ diff --git a/img/books/LEG3.png b/img/books/LEG3.png new file mode 100644 index 0000000..872b0c3 Binary files /dev/null and b/img/books/LEG3.png differ diff --git a/lang/main-en.json b/lang/main-en.json index 797d67d..bf683b0 100644 --- a/lang/main-en.json +++ b/lang/main-en.json @@ -9,5 +9,6 @@ "btn-items": "Magic Items", "CUVD": "Unofficial site for Fateforge RPG. Uses copyrighted content © Agate RPG, courtesy of the publisher under the CUVD license.", "link": "Join the community: https://fateforge.org/en", - "btn-books": "Books" + "btn-books": "Books", + "book-CRE2": "
Creature : Netherworld
" } diff --git a/lang/main-fr.json b/lang/main-fr.json index abb898f..ec77865 100644 --- a/lang/main-fr.json +++ b/lang/main-fr.json @@ -14,5 +14,6 @@ "somatic": "Gestuelle", "gridColumns":{ "components": "Composants" - } + }, + "book-CRE2": "
Créature : Inframonde
" } diff --git a/lib/flickity.hash.js b/lib/flickity.hash.js new file mode 100644 index 0000000..1ca7df3 --- /dev/null +++ b/lib/flickity.hash.js @@ -0,0 +1,121 @@ +/*! + * Flickity hash v1.0.3 + * Enable hash navigation for Flickity + */ + +/*jshint browser: true, undef: true, unused: true, strict: true*/ + +( function( window, factory ) { + // universal module definition + /*jshint strict: false */ /*globals define, module, require */ + if ( typeof define == 'function' && define.amd ) { + // AMD + define( [ + 'flickity/js/index', + ], factory ); + } else if ( typeof module == 'object' && module.exports ) { + // CommonJS + module.exports = factory( + require('flickity') + ); + } else { + // browser global + factory( + window.Flickity + ); + } + +}( window, function factory( Flickity ) { + +'use strict'; + +Flickity.createMethods.push('_createHash'); + +var proto = Flickity.prototype; + +proto._createHash = function() { + if ( !this.options.hash ) { + return; + } + this.connectedHashLinks = []; + // hash link listener + // use HTML5 history pushState to prevent page scroll jump + this.onHashLinkClick = function( event ) { + event.preventDefault(); + this.selectCell( event.currentTarget.hash ); + history.replaceState( null, '', event.currentTarget.hash ); + }.bind( this ); + + // events + this.on( 'activate', this.activateHash ); + this.on( 'deactivate', this.deactivateHash ); +}; + +proto.activateHash = function() { + this.on( 'change', this.onChangeHash ); + + // overwrite initialIndex + if ( this.options.initialIndex === undefined && location.hash ) { + var cell = this.queryCell( location.hash ); + if ( cell ) { + this.options.initialIndex = this.getCellSlideIndex( cell ); + } + } + + this.connectHashLinks(); +}; + + +proto.deactivateHash = function() { + this.off( 'change', this.onChangeHash ); + this.disconnectHashLinks(); +}; + +proto.onChangeHash = function() { + var id = this.selectedElement.id; + if ( id ) { + var url = '#' + id; + history.replaceState( null, '', url ); + } +}; + + +proto.connectHashLinks = function() { + var links = document.querySelectorAll('a'); + for ( var i=0; i < links.length; i++ ) { + this.connectHashLink( links[i] ); + } +}; + +// used to test if link is on same page +var proxyLink = document.createElement('a'); + +proto.connectHashLink = function( link ) { + if ( !link.hash ) { + return; + } + // check that link is for the same page + proxyLink.href = link.href; + if ( proxyLink.pathname != location.pathname ) { + return; + } + var cell = this.queryCell( link.hash ); + if ( !cell ) { + return; + } + link.addEventListener( 'click', this.onHashLinkClick ); + this.connectedHashLinks.push( link ); +}; + +proto.disconnectHashLinks = function() { + this.connectedHashLinks.forEach( function( link ) { + link.removeEventListener( 'click', this.onHashLinkClick ); + }, this ); + this.connectedHashLinks = []; +}; + +// ----- ----- // + +return Flickity; + +})); diff --git a/lib/flickity.pkgd.min.js b/lib/flickity.pkgd.min.js new file mode 100644 index 0000000..b4e882f --- /dev/null +++ b/lib/flickity.pkgd.min.js @@ -0,0 +1,56 @@ +/*! + * Flickity PACKAGED v2.3.0 + * Touch, responsive, flickable carousels + * + * Licensed GPLv3 for open source use + * or Flickity Commercial License for commercial use + * + * https://flickity.metafizzy.co + * Copyright 2015-2021 Metafizzy + */ +(function(e,i){if(typeof define=="function"&&define.amd){define("jquery-bridget/jquery-bridget",["jquery"],function(t){return i(e,t)})}else if(typeof module=="object"&&module.exports){module.exports=i(e,require("jquery"))}else{e.jQueryBridget=i(e,e.jQuery)}})(window,function t(e,r){"use strict";var o=Array.prototype.slice;var i=e.console;var u=typeof i=="undefined"?function(){}:function(t){i.error(t)};function n(h,s,c){c=c||r||e.jQuery;if(!c){return}if(!s.prototype.option){s.prototype.option=function(t){if(!c.isPlainObject(t)){return}this.options=c.extend(true,this.options,t)}}c.fn[h]=function(t){if(typeof t=="string"){var e=o.call(arguments,1);return i(this,t,e)}n(this,t);return this};function i(t,r,o){var a;var l="$()."+h+'("'+r+'")';t.each(function(t,e){var i=c.data(e,h);if(!i){u(h+" not initialized. Cannot call methods, i.e. "+l);return}var n=i[r];if(!n||r.charAt(0)=="_"){u(l+" is not a valid method");return}var s=n.apply(i,o);a=a===undefined?s:a});return a!==undefined?a:t}function n(t,n){t.each(function(t,e){var i=c.data(e,h);if(i){i.option(n);i._init()}else{i=new s(e,n);c.data(e,h,i)}})}a(c)}function a(t){if(!t||t&&t.bridget){return}t.bridget=n}a(r||e.jQuery);return n});(function(t,e){if(typeof define=="function"&&define.amd){define("ev-emitter/ev-emitter",e)}else if(typeof module=="object"&&module.exports){module.exports=e()}else{t.EvEmitter=e()}})(typeof window!="undefined"?window:this,function(){function t(){}var e=t.prototype;e.on=function(t,e){if(!t||!e){return}var i=this._events=this._events||{};var n=i[t]=i[t]||[];if(n.indexOf(e)==-1){n.push(e)}return this};e.once=function(t,e){if(!t||!e){return}this.on(t,e);var i=this._onceEvents=this._onceEvents||{};var n=i[t]=i[t]||{};n[e]=true;return this};e.off=function(t,e){var i=this._events&&this._events[t];if(!i||!i.length){return}var n=i.indexOf(e);if(n!=-1){i.splice(n,1)}return this};e.emitEvent=function(t,e){var i=this._events&&this._events[t];if(!i||!i.length){return}i=i.slice(0);e=e||[];var n=this._onceEvents&&this._onceEvents[t];for(var s=0;s