Giter Site home page Giter Site logo

huderlem / porymap Goto Github PK

View Code? Open in Web Editor NEW
403.0 21.0 83.0 32.98 MB

Map editor for pokeemerald, pokefirered, and pokeruby

Home Page: https://huderlem.github.io/porymap/

License: GNU Lesser General Public License v3.0

C++ 98.87% QMake 0.48% Makefile 0.05% Python 0.38% Batchfile 0.05% CSS 0.01% C 0.17%
c-plus-plus pokemon gui maps game-development map-editor map-editing tilesets qt tileset tileset-editor

porymap's Introduction

porymap's People

Contributors

bigbahss avatar blampharos avatar diegoisawesome avatar exposeed avatar garakmon avatar griffinrichards avatar huderlem avatar jakobdev avatar jiangzhengwenjz avatar melthelesbian avatar phase avatar phlosioneer avatar pkmnsnfrn avatar sbird1337 avatar sierraffinity avatar tustin2121 avatar ultima-soul avatar v-fexrt avatar vinnydiehl avatar yenatch avatar

Stargazers

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

Watchers

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

porymap's Issues

Suggestion: Make Collison Markers More Transparent

The collision view is too opaque, and it is difficult to see what tiles the collision is being set for. Additionally, some of the colors should be changed. For example, making 3 green when the vast majority of the time green grass will be underneath it is probably a bad idea, because it makes it more difficult to see through to the underlying tile.

I think AMap's movement permissions view is easier to see through in general because there's less going on. The letters/numbers on the collisions are not as thick or as large as porymap's, so they do not obscure the underlying tile as badly as porymap's does. While the big X through the impassible collision is great visually for maps that are already done, it is very difficult to see if it is placed on a tile it shouldn't be placed on because it obscures so much of the underlying tile.

Bug: Tileset Editor Changes Undone By Importing a Tileset Image Without Saving

Steps to reproduce this in the tileset editor:

  1. Edit as many metatiles as you want as long as you make at least one edit to a metatile.
  2. Without saving, import a new tileset image (if you don't have a random one lying around, you can reimport the same tileset)
  3. Any edits you made to the metatiles have now been undone, but they remain in your undo history, so you can hold down undo, then hold down redo to restore your work.

undo/redo buttons

Undo/Repo is already already implemented for painting map tiles. It would be nice to extend this feature to the other editing features of a map.

(originally from yenatch/pretmap#32)

Map Region Editor

If we're going to be adding new maps, we should be able to place where they are on the region map; which would imply some sort of region map editor.

(originally from yenatch/pretmap#22)

Suggestion: Allow Renaming and Reordering of Map Groups

Renaming Map Groups is tedious and prone to error, considering labels are spread across multiple files. A way to do this in porymap and have it update these instead of doing it manually for every map would be much appreciated. In addition, reordering maps in their groups/moving maps from group to group would be a welcome feature.

Detect base game version

porymap needs to operate differently depending on which base game the opened project is. For example, the MapHeader struct is different in pokeruby and pokeemerald, and pokefirered stores some map data slightly differently. There are many ways that this could be detected from reading various files in the projects, but all are somewhat flaky. The most solid way to do this is by having a piece of data dedicated to porymap. Rather than adding porymap-specific data to the main projects themselves, porymap will create its own config file in the project when it is opened the first time.

The proposal is this:

  1. User opens pokemerald project in porymap.
  2. porymap checks for the existence of porymap.cfg in the root-level of the pokeemerald project.
  3. If porymap.cfg does not exist, it gets created. If the base project name cannot be inferred from the project's name, then a prompt asks the user if the base game is pokeemerald or pokeruby.
  4. porymap then reads porymap.cfg to read the settings and load things approprirately.

Currently, porymap.cfg will only hold a single key-value pair.

base_game=[pokeemerald | pokeruby]

In the future, when engine hacks are popular and supported by porymap, it might look something like this:

base_game=[pokeemerald | pokefirered | pokeruby]
diego_daynight=[true | false]
triple_layer_metatiles=[true | false]

[Suggestion] Creation of New Groups and New Tilesets

Hi.

I'm sure this is planned for eventually and I apologize if there is already an open item for it. I'd like to suggest the ability to create new/blank groups and new/blank tilesets similar to how a new map can be created.

Allow to replicate already existing groups of tiles

I just thought about another one, let the user use the Color Picker tool to select an already existing group of tiles inside a map.
For example, holding the left click while the color picker tool is enabled, would allow you to copy X house or tree, and then by changing to the pencil tool and using the left click, you would be able to put as many copies of that house or tree as you want.

This could be particularly useful in some cases, like for example with Professor Birch's Laboratory in Littleroot Town which seems to be a huge pain in the butt to replicate manually.

(originally from yenatch/pretmap#35)

porymap can crash while changing the number of metatiles in a tileset

I encountered several crashes by continually changing the number of metatiles in the secondary tileset. I specifically remember having a crash after changing from 45 to 40. I was only reducing the number of metatiles, but the crash happens inconsistently so it was difficult to reproduce going the other way.

Suggestion for Smart Pathing

While smart pathing is amazing and will make things much easier in some cases, having it be fixed to 3x3 stretches is limiting. I would suggest a modifier that when held down draws 2x2 paths instead. Perhaps another modifier could be user determined, allowing the user to specify that they want nxn tile paths and the smart pathing will draw them accordingly.

Additionally (and I know this is known), support for FR style paths will be needed in the future. Mountains and stretches of water will need this support as well, as they also use corner tiles.

Thank you!

(originally from yenatch/pretmap#38)

Zooming / Moving Map Bug

Step 1: Zoom a few times
Step 2: Change current map to another map

Now the map is unusable and the move tool is not working.
Zooming is now broken at this point

Switching back to the first map and zooming in or out has fixed it for me.
Relaunching also works too..

Here are some screen shots:

Editor after project is loaded:
editor_normal

Bugs:
editor_bug

editor_bug2

editor_bug3

Bug: Don't crash on startup

Hi, I'm using yout tool to develop a proyect on pokeruby, but sth I really need is to know why pory don't want to open (if i've deleted something or whatever).

If you improve this on a future version it will be awesome.

Thx.

Bug: Out of Bounds Events Cannot Be Edited/Update Event Panel Suggestion

With the current Event Viewer, out of bounds events are unreachable and therefore can't be edited.

AMap skirts around this in two ways: first, it warns you on the bottom when events are outside of the map's range when in the event view. Second, even if you can't see the event, you can head to the right panel of the event viewer, select the type of event you're looking for, and then advance through the events until you see one that is clearly out of bounds and bring it back from there by editing its coordinates. Unfortunately, porymap's event panel on the right has nothing like this. I think that this way of going through the events is needed for porymap, not only for cases where things are out of bounds but for general event editing. If you were to add this, some form of warning displayed on this panel when the event you're looking at is out of bounds would be appreciated as well.

Here is an example of AMap's Event panel. Arrow is the dropdown for the event type, circle allows you to go through each event of that type without clicking them on the map, the bracket is the event list and how AMap allows you to add or remove multiple events at a time.

image

Make Mapping Efficient by Copying Shortcuts From A-Map

The build you uploaded to Mediafire is good, but mapping with pretmap is a much clunkier and slower experience than mapping with A-Map.

In my opinion, the following suggestions are vital to 1.0:
*Right-Click to copy a tile from the map.
*Middle-Click to fill.
*Ctrl+Right-Click+Drag to copy a group of tiles from the map.

As of right now, you need to move your mouse up to the top of the window, select eyedropper to copy, head back down to the map, copy a single tile, then head back up so you can draw on the map, and then back down to draw that tile. That's incredibly inefficient. Furthermore, ALL clicks perform the currently selected action. I don't need three buttons to do the same thing. Spread that functionality out so that mapping is more streamlined and less tedious, perferably in a way that doesn't break existing muscle memory.

There is functionality to copy a group of tiles from the tileset, but not from the map. If my house tiles, say, are not all together on the tileset so that I can copy them in one group, I have to reassemble them every time I want to put down a house with the current implementation, something A-Map avoids by allowing us to multi-select tiles from the map to copy and plop down.

Miscellaneous Suggestions:
*Shift+Left-Click+Drag to draw multiple tiles using smart-pathing logic instead of the by-grid style.
*Implement the map shifting functionality from EliteMap.
*Make some delineation between the open map and the connections/border. I am inadvertently trying to draw on them without realizing that they're not my current map because they are so seamless.
*Ability to open an event's script file with defined text editor/IDE.

(originally from yenatch/pretmap#59)

Bug: flags member of MapHeader struct is not handled correctly for pokeemerald

In Ruby, MapHeader.flags is only used for enabling the map name popup. In Emerald, it is a bitfield that holds 4 values:
Bit 0: biking allowed
Bit 1: escape rope allowed
Bit 2: running shoes allowed
Bit 3: map name popup enabled

Porymap needs to show these extra checkboxes for Emerald, and update the save logic accordingly.

General Quality of Life Suggestions

  • Support for FR-style paths in smart pathing. https://cdn.discordapp.com/attachments/442464874287726594/489954758254395392/unknown.png is an example usage. They are also used in Slateport City in RSE, with corner tiles when the path changes direction.
  • Opening map scripts could open right to the line of the open entity's script. Probably could wait for a standard pret script editor.
  • It seems that mouseclicks to copy, draw, etc. are disabled with any tool but the pencil manually selected. Not sure if that's intended behavior. Weird to have my shortcuts not work because I'm in eyedropper mode.
  • Add Ctrl+Mousewheel Scroll as a shortcut to zoom in or out on a map, like standard browsers.
  • When selecting where a warp would lead to, perhaps separate the maps by bank and allow those banks to be expanded? There's a LOT of scrolling involved in getting warps correct.
  • Perhaps show a movement "radius" for NPCs that can move to see how their pathing is. Like, select an NPC and tiles that they can move on with their current movement type are highlighted.

Suggestion: Change Save Prompt When Exiting Tileset Editor

The way porymap handles asking to save when exiting the tileset editor is backwards, in my opinion. The vast majority of the time someone opens the tileset editor, makes an edit, and then tries to exit, they will want that change saved.

So, instead of asking whether or not to discard and then forcing us to manually save when we say no, ask us whether we want to save when we exit the tileset editor with unsaved changes. If yes, save and exit. If no, just exit. If cancel, return to the tileset editor. You will save people a ton of time with this simple change.

Add documentation about Event fields

Add proper documentation at some point down the road, on what does each field of each section inside PretMap do.
For example, right now I do not entirely understand things like Location or Visibility inside the Header at the Attributes Tab, or the Replacement and Property fields when seeing an NPC's data,

(originally from yenatch/pretmap#34)

Bug: extra data appended to layouts_table.inc

In pokeemerald, the #define MAP_GROUPS_COUNT 34 line if maps.h is not written, so this breaks pokeemerald compilation.

layouts_table.inc has a bunch of extra data written--unclear if these two are related.

A document providing a change log

Title is self-explanatory. It'd be nice to have a... say, CHANGELOG.md file with a register of the big or most important features that are getting added to PretMap, for everyone's convenience.

Toggle showing connected maps

just like you have a box for "show grid" it would be great to have a feature that shows the neighbouring maps after clicking on a box. the neighbour maps should be greyed out to distinct them from the active map.

(originally from yenatch/pretmap#30)

Suggestion: Allow Naming the Map When Creating a New One

The functionality to add a map is great, if not obscure. It really needs to be able to be named by the user instead of defaulting to NewMap#, though. For people who want to keep their maps organized and easily to tell what is what at a glance, this is essential.

Add ability to delete maps

This one might be a bit tricky because there are many places in the decompilation projects that would be affected. And what if another map has a warp that points to the deleted map? Lots of things to consider.

@ProjectRevoTPP

ProjectRevoTPP commented on Feb 19
from the Discord:

in a better map editor there might be an option to "Delete Anyway"
but default is no
that way someone can do quick work of a bunch of maps by deleting anyway
so they dont need to hand delete a bunch for each
like if someone is redoing a region
they want the whole region deleted
it would be really slow to do one at a time
so i think a "Delete anyway" option would work, but it should be not easy to misclick
and a confirmation Yes/No after
with no default highlighted, of course

(originally from yenatch/pretmap#9)

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.