Giter Site home page Giter Site logo

ludevnet / lu-explorer Goto Github PK

View Code? Open in Web Editor NEW
12.0 4.0 5.0 3.57 MB

An angular.io webapp that displays LEGO Universe game data

Home Page: https://lu-dev.net/lu-explorer/

TypeScript 74.08% JavaScript 0.23% HTML 22.08% CSS 3.53% SCSS 0.06% Shell 0.02%
angular angular-cli lego-universe webapp

lu-explorer's Introduction

LuExplorer

General

This project was generated with Angular CLI.

Prerequisites

  • git
  • npm to build the app
  • cargo to build the API server
  • A copy of a LEGO Universe client.

Development setup

Generally, LU-Explorer needs a datasource, which is provided by the Paradox Server. That server provides the data from the game database to the web interface, which makes it a core component of this app.

This needs a paradox.toml config file in the working directory โ€“ a minimal example is provided here. The most important part is to point the explorer_spa key to the docs folder in this repo and the cdclient and locale key to a copy of CDClient.fdb and locale.xml respectively.

  1. install npm and cargo (via https://rustup.rs)

  2. install the API server binary with

    $ cargo install --git https://github.com/Xiphoseer/lu-res-api-server.git --branch main
  3. Then, clone this repo and create lu-res and client folders next to it

    $ git clone https://github.com/Xiphoseer/lu-explorer.git
    $ mkdir lu-res client
  4. Put at least locale/locale.xml and res/cdclient.fdb from an LU client into this client folder

  5. You can now build the lu-explorer web-app continuously with

    $ cd lu-explorer
    $ npm install
    $ ng build --watch
  6. Finally, run the API server, which will also serve the web-app

    $ RUST_LOG=info paradox-server

For now, you need to restart that server whenever you change the lu-explorer source. (Issue #1)

Minimal setup

The alternative is to:

  1. point data.apiUrl in src/environments/environment.ts to an existing API server.
  2. point /lu-res in src/proxy.conf.json to a matching version of lu-res.

Then run

$ npm install
$ ng serve

Docker Setup

  1. Build: docker build -t paradox-server
  2. Deploy:

Replace the paths on the left of the mappings to reflect your system:

  docker run -it --rm \
    --name paradox-server \
    -e DOMAIN=your.domain.tld \
    -e USERNAME=<username> \
    -e PASSWORD=<password> \
    -v /path/to/client:/luclient \
    -v /path/to/cache:/cache/lu-res \
    -p 3030:3030 \
    paradox-server

Code scaffolding

Run ng generate component component-name to generate a new component. You can also use ng generate directive|pipe|service|class|guard|interface|enum|module.

Build

Run ng build to build the project. The build artifacts will be stored in the docs/ directory. Use the --configuration production flag for a production build. For building to github pages also use --base-href=/lu-explorer/.

Usually, the ng build --configuration production command is used.

Running unit tests

Run ng test to execute the unit tests via Karma.

Running end-to-end tests

Run ng e2e to execute the end-to-end tests via Protractor.

Further help

To get more help on the Angular CLI use ng help or go check out the Angular CLI README.

lu-explorer's People

Contributors

aronwk-aaron avatar dependabot[bot] avatar emosewamc avatar enteryournamehere avatar lcdr avatar xiphoseer avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

lu-explorer's Issues

ENH: Comparison interface between versions of of the client

Having a convenient way to easily compare different version of the client would be very useful to se how the game evolved over time. whether it be via paradox supporting reading from multiple clients, or lu-explorer being able to connect to multiple paradoxServer backends.

Interactive LootMatrix examples

Create a component that consumes a LootMatrix and can generate a realistic random instance of executing that loot matrix.

Improve object search

It's extremely difficult to find items right now, likely because it's searching against the locale table (which seems to not even have entries for a bunch of things?)

Also, case insensitivity would probably be smart. I'll also throw out the idea of using AND as a special keyword to specify two substrings that may not be next to each other

Integrate Minimaps

TODO:

  • add the minimap images to lu-res, which would help a lot with upcoming changes to the zone view

BrickColors validTypes

From reverse engineering, it appears validTypes is not a bit field, but an enum which is then manually mapped to character creation hair, shirt, or pants.

Filing this so I can remember to get back to it when I've got time.

Feature request: mission / achievement distinction in mission list view

Right now the mission list view only displays mission ID and name, it would be helpful if it also showed whether the mission is a true mission or an achievement, or if there were separate groups for each.

Even cooler but optional would be to replicate the client's passport UI entirely.

ENH: Show buff info for ApplyBuff Behavior

ApplyBuff applies a buff ID that corresponds to data in BuffParameters and BuffDefinitions
I would be super nice if the behavior viewer to show what these values are, and potentially use the buff icon(which is in BuffDefinitions)

Over time behavior action interpreted incorrectly

We've been interpreting the OverTime behavior's action key as referring to a behavior so far, but new findings indicate that it actually refers to a skill. Gotta update LU-X's behavior view to reflect this.

WhatsCoolNew

  • What's cool: Item Spotlight
  • What's cool: News & Tips

Misc TODO

  • Figure out why some MissionTasks are null?
  • What does 'taskParam1' for an ObtainItem task?
  • Add locStatus, localized to mission tasks
  • Add links to racing mission tasks
  • Figure out what the ids in quickbuild tasks are
  • Investigate QuickBuild vs Minigame in mission 1434
  • Investigate emote rewards in Mission 1750 - fixed by #75
  • Mission Texts offerNPCIcon
  • display MissionTasks localization (e.g. Mission 282)

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.