Giter Club home page Giter Club logo

scout's Introduction

Logo

About Turtle Scout

Turtle Scout is a web application intended to easily facilitate the sharing of Hunt Mobs in Final Fantasy XIV Online. Features include:

  • Point and click user interface
  • One button sharing of collected mob lists
  • Import of mob lists from in-game chat log messages
  • Positioning of custom spawn points in zones that do not yet have fully identified spawn locations.

About the Author

I'm Kaiden Alenko of Adamantoise! I'm a full time pharmacist and occasional hobby coder. Thus, my code is far from professional but I do hope it gets the job done. If you have suggestions for improvements, feel free to find me in the Aether Hunts Discord. (https://discord.gg/aetherhunts)

Under the Hood

Turtle Scout is based on the laravel framework, a PHP based framework. (Yes, I'm an old head and PHP was the first language I learned, so I've just kinda stuck with it.) This project started about 8 days before the launch of Dawntrail, when we needed a tool relatively quickly to coordinate Hunt Trains post-launch, so, owing to the fact that it was done quickly, there may be bugs. Feel free to submit issues on the Issues tab. I will try to get to any pressing problems while working on the MSQ.

The frontend is done with Vue.js in concert with the Inertiajs adaptor to link it to the laravel backend without creating a full API.

Please note, this was my first time using Vue on a production build, as I wanted a new learning experience. As such, there may be wildly inefficient bits of code or things that may not make sense, so I apologize to all who read this code.

Cloning/Building Your Own

For local development, Laravel Sail is used to make things a bit easier. (Follow the Laravel sail guide for setting up the sail alias)

  • Clone the repository to your local drive
  • Install php dependencies with composer install
  • Run php artisan sail up from the root directory and Sail should build the proper docker containers and services
  • Run sail artisan key:generate to generate an application key (used for encrypting sessions and other Laravel specific data)
  • Run sail artisan migrate to set up the initial DB schema
  • Run sail npm ci to install node dependencies
  • To have hot module reloading/local development, run sail npm run dev to have live changes reflected. For full static build, run sail npm run build
  • Visit http://localhost and you should see the site up and running.
  • If everything looks good, you'll want to seed initial data into your database
    • Run sail artisan db:seed InitialDataSeeder to import Expacs, Zones, and Mob data from resources/json/zones.js
    • Run sail artisan db:seed SpawnPointDataSeeder to import SpawnPoints from resources/json/spawn_points_hunthelper.js, sourced from the wonderful HuntHelper plogon.
    • Run sail artisan db:seed SpawnPointMobSeeder to import old expansion spawn point mob assignments, which I manually built in resources/csv/SPAWN_POINT_MOBS.csv

If a new expansion launches and I'm retired, you can use the script in resources/python/get_hunts.py to grab new hunt marks from future builds. It will create the contents of zones.json in the expected format and extract any new maps as long as the Data file formats don't change too much

Contributing

At this time, contributions will not be accepted, just because I'll be busy with Dawntrail things. Once life settles down a bit, I'll open things up.

Code of Conduct

Please be nice.

License

The framework is open-sourced software licensed under the MIT license.

scout's People

Contributors

pm-wobbuffet avatar

Stargazers

Julian avatar

Watchers

Lucian avatar  avatar

scout's Issues

Clicking pins in a shared sessions too quickly can make marks unclickable

We had two separate people run into this problem when trying this tool out, and I was unable to reproduce it for standard sessions so seems to be limited to sessions that have been shared.

When cycling through the mobs too quickly it will lock one of the options out for everyone in the session. You can continue this until the map enters a state where no further marks can be added.

A workaround exists where refreshing the page will reset the map for that user, and updates they push through are propagated without further issues.

chrome_1Bkj7eQlk5

Refactor MapContainer.vue and ZoneMap.vue

Listen, I was in a gigantic rush to get these working, so if things worked, I just kinda rolled with it. I need to pull a few things out into their own components, especially things like Aetherytes, MobButtons, and MobList.
I also need to pull out a lot of the javascript functions into their own helpers and tidy up the .vue files. There's also lots of room to fix logic, since I was still trying to get my head around the reactive data system in Vue.

However, everything works for now so this is kinda low priority backburner stuff. If it ain't broke, don't "enhance" the functionality out of it.

Document work in progress API spec

Was approached by a plugin author wanting to integrate with turtle scout and so made some quickly thrown together APIs for creating/updating scouting reports. Need to document the endpoints so others can create integrations if they so desire.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.