Code Monkey home page Code Monkey logo

arcreator's People

Contributors

borisblizzard avatar ryex avatar soulshaker3 avatar tcrane20 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

Forkers

johndpope

arcreator's Issues

Remove unnecessary str.format uses

str.format is a very verbose and powerful way to invoke the string format operator %
most of its current uses are unnecessary and hard to read these should be searched out and their necessity evaluated. they should be removed and replaces with the % operator is they can

RMXP Project importer

A Project importer than can load and reformat RPG Maker XP project should be provided with ARC.

Currently there is a ruby implemented one but it has to be compiled and distributed separately. Using the Ruby Marshal reading ability provided by #38 we should be able to create an imported that works directly in Welder

should make use of File Handlers form #32

Import other project formats

ARC should allow for the creation of Project Importers. special Project handlers that can reformats the data form a project to one ARC can work with

add multiple action stacks to the Action framework

the current action framework has only one stack for actions to be done and undone from.
This could be problematic as it doesn't make since to press undo twice and have one mapping action undone and one databases action undone.

as such I'm think that a system for an arbitrary number of stacks should be included.

that way each database panel and every open map can have it's own stack?

thoughts?

Finish Script Editor

Script Editor Tasks

  • Syntax highlighting
  • Code finding
  • Control for configuring styling
  • Auto indent
  • Easy script ordering
  • General appearence

Interface database panels

Make panels refelct selected data [PARTIAL]

  • Actors Panel
  • Classes Panel
  • Skills Panel
  • Items Panel
  • Weapons Panel
  • Armors Panel
  • Enemies Panel
  • Troops Panel
  • States Panel
  • Animations Panel
  • Tilesets Panel
  • Common Events Panel (requires even editor)
  • System Panel

Make editing data in a panel update the changes to a panel

  • Actors Panel
  • Classes Panel
  • Skills Panel
  • Items Panel
  • Weapons Panel
  • Armors Panel
  • Enemies Panel [PARTIAL]
  • Troops Panel
  • States Panel
  • Animations Panel
  • Tilesets Panel
  • Common Events Panel (requires even editor)
  • System Panel

Make it so that editing data in a panel generates an action and applys it

  • Actors Panel
  • Classes Panel
  • Skills Panel
  • Items Panel
  • Weapons Panel
  • Armors Panel
  • Enemies Panel
  • Troops Panel
  • States Panel
  • Animations Panel
  • Tilesets Panel
  • Common Events Panel (requires event editor)
  • System Panel

Map Editor

Map Editor tasks

  • #23 Map List Viewer
  • Display of Map layers with option to darken layers
  • Display of tile cursor and selections
  • Display of event layer (grid and event charset preview)
  • updating of display when map data changes [PARTIAL]
  • Appearance overall (toolbars ect.)
  • #25 Brush Framework

Refactor the _arc_panel_info* properties

The panel dispatcher uses class properties of the panel to be dispatched like _arc_panel_info_string and _arc_panel_info_data to determine how the resulting panel should be displayed in the AUI interface, where it should be initially positioned etc.

these properties should be refactored into a single dict property. this will make them easier to manage (and it will look better)

Event Editor

Tasks to the event editor

  • #25 Event commands
  • event exporter to XML
  • event XML parser
  • editor panel via virtual HTML list [PARTIAL]

If there is no center panel editor loses ability to dock panels

This is a bug that has plagued the editor form the beginning, at one point I thought I had solved it but turns out the answer was no, so I tried to force the presence of a shadow panel that didn't work, so i tried to create the start panel and keep it there permanently but that still didn't work. I mak have to dig into wx.lib.agu.aui's code and see what i can do

Implement Event Comands

Implement following event commands:

  • Show Text
  • Show Choices
  • Input Number
  • Change Text Options
  • Button Input Processing
  • Wait
  • Comment
  • Conditional Branch
  • Loop
  • Break loop
  • Exit Event Processing
  • Erase Event
  • Call Common Event
  • Label
  • Jump To Label
  • Control Switches
  • Control Variables
  • Control Self Switch
  • Control Timer
  • Change Gold
  • Change Items
  • Change Weapons
  • Change Armor
  • Change Party Member
  • Change Window Skin
  • Change Battle BGM
  • Change Battle End ME
  • Change Save Access
  • Change Menu Access
  • Change Encounters
  • Transefer Player
  • Set Event Location
  • Scroll Map
  • Change Map Settings
  • Change Fog Color Tone
  • Change Fog Opacity
  • Show Animation
  • Change Transparent Flag
  • Set Move Route
  • Wait For Move's Compleation
  • Prepare for Transition
  • Execute Transition
  • Chagne Screen Color Tone
  • Screen Flash
  • Screen Shake
  • Show Picture
  • Move Picture
  • Rotate Picture
  • Change Picture Color Tone
  • Erase Picture
  • Set Weather Effects
  • Play BGM
  • Fade Out BGM
  • Play BGS
  • Fade out BGS
  • Memorise BGM/BGS
  • Restore BGM/BGS
  • Play ME
  • Play SE
  • Stop SE
  • Battle Processing
  • Shop Processing
  • Name Input Processing
  • Change HP
  • Change SP
  • Change State
  • Recover All
  • Change EXP
  • Change Level
  • Change Parameters
  • Change Skill
  • Change Equipment
  • Change Actor Name
  • Change Actor Calss
  • Change Actor Graphic
  • Change Enemy HP
  • Change Enemy SP
  • Change Enemy State
  • Enemy Recover All
  • Enemy Appearence
  • Enemy Transform
  • Show Battle Animation
  • Deal Damage
  • Force Action
  • Abort Battle
  • Call Menu Screen
  • Call Save Screen
  • Game Over
  • Return to Title Screen
  • Script

Refactor of Project System to use File Handlers

The current project system uses a Project object and some save and open functions. this should be refactored to Use Project and File handlers

A Project Handler will manages a layout and format of a Project and employs File handlers to load Project files and add their data to the project

A File Handler when given a File path will load and save data to that file. intended to work by using a serializer format like ARC Data.

support command line arguments

there is currently no support of command line arguments.

it doesn't need to be anything too complex I'm pretty sure just taking the first argument as a path and attempting to open it as a project should work.

Brush Framework

Brush Framework tasks

  • Panels for selecting tile to draw
  • Three brush source modes (paint form tileset selection, brush, or from map selection)
  • Tools
    • Pencil
    • Rectangle
    • Eclipus
    • Fill
    • Selection
  • Bind brushes to an action to apply the changes to the project
  • Tie brush framework to map editor

Move PanelManager out of GlobalObjects

Frankly, we all know Global Object are a bad Idea, but until I have Pyitect it simply wasn't practical to share data across plugins with out a global object.

Now that it's far more practical to have a Singleton as a plugin component and store that simi global data inside I think It would make more sense to move the Panel manager out of the Globa lobject manager and into a singalton

Mention the move to GitHub on the Google Code page

Hi there,

I was browsing Google Code for dead projects that might need archiving on GitHub (I'm running @LibreGameArchive) when I found arcreator. It doesn't seem dead at all, but it would be nice if you could mention the move to GitHub on the Google Code main page, so that it's clear to anyone landing on this page.

I only noticed that you had a GitHub repo after I had cloned the whole SVN repo and seen the "ARC HAS MOVED.txt" file :)

Ruby Marshal

As the old file has been found and the old issues recognized and overcome in the creation of the ARC Data format it is now possible to re implement Marshal loading without having to write it form scratch

https://gist.github.com/Ryex/1a4758ccaa01af496557

This will help the creation of a RMXP importer built into the editor

Should we be using the issues section

Personally I find it quite useful to make use of the issues section here on github.
I very much like to get everyone using it if at all possible. thoughts?

Map of Event Commands

I had a shower thought as to how to greatly simplify the management of the Event Editor.

Everything would just be so much simpler if I had a central map/structure of the event commands and their params for reference, at which point I could employ some meta programming and implement the formater, processor, properties panel etc. all in one class a piece instead of a new class for every single command.

The map should probably be made with YAML. the goal here is to map each command to a map of it's positional params and their types

for example in YAML command 132 "Change Battle BGM" would look like so in yaml

xxx: # where xxx in the command number
    name: # name of the command
    x: # where x is a peram index
        cond:
        name:
        type:
            - switch_id
            - variable_id
            - item_id
            - weapon_id
            - armor_id
            - ect.
            - int
            - float
            - num # (int or float)
            - str
            - num_str # (entered as text but will atempt to parse a num, if faisl defaults to string)
            - color
            - tone
            - image
            - bgs
            - me
            - se
            # and more if appropriate
        map: # a mapping of stored values to display values
        # if of appropriate type clamps the value inclusively, if either top or bottom is null unclamps on that end
        # default is no clamping
        limit: [top, bottom] 
        display: # usd to help the editor for gui purposes
            - box
            - dropdown
            - spinner
            - radio
            - check
            # the default is box which is a basic editable entry box
            # some types inply a display, dropdown for example is implied by all *_id types, spinner by a clamped int or num
        # used to help interperate values
        # oper_logic for example would hint the editor to conver things like == and >= to `equal too` and `greater than or equal to`
        # timer would tell the editor to use a pair of spinners for minutes and seconds but store as the total seconds
        hint: 
        text: #a displayed label for the value
    cond: # condition all other properties at teh same level are processed first
        # can have any of the folowing sets
        #--------------
        if:
            #------
            param:
            value:
            # OR
            paramL:
            paramR:
            #------
            oper: # set to a string operator of the form == <= >= != < >
            # Optional
            # and has presadence over or, the full and branch will be processed apending conditions before the or branch
            and:
                # all possible values of if except then
            or:
                # all possible values of if except then including more and / or's
            then: # all the properties of branch must past
                x: # sets the properties of param index x
        elseifx: # elseifx are processed in order from elseif1 untill a consecutive elseifx can not be found
            # all possible values of if
        else: # fall through, then is implied
            x: #set properties of param index x
        #---------------
        switch: # property keys are values param can take
            param:
            y: # y is replaced with arbatrary or number or string that param can take
                cond:
                x: # sets the properties of param index x
        else:
            x: # set x if none of the switch cases are true
        #---------------

This task will require actually opening a copy of rpgmaker xp and running some inspection on what different Event commands commands look like. I think the formater.py file list every command but there may be some that are unknown. if you need help figuring out what the event commands look like I'm sure we can come up with a script to drop into XP and (so long as you have an event on the map with every event command used in it) dump a representation out to a file.

This task will also require you to read the xp event interpreter script to decipher the meaning of each positional param. Just remember that there are some commands that are completely ignored by the interpreter as they are place holders

There are cases where the properties of a param change based on what came before it in which case the values should be under keys with conditional statements, the exact syntax of this should be a topic of discussion in this thread.

an example of this case is command 111 the Conditional Branch
param[0] is the command mode and bases on it's value subsequent params may refer to switches, variables, self switches etc. and some params might not even exist

in the case where a param is an int but maps to different operations or modes there should be a "map" key that maps the modes. for example if the param refers to what math operator to use the map should have a map key like so

xxx:
    x:
        type: int
        name: operator
        map: { 0: '==', 1: '>=', 2: '<=', 3: '>', 4: '<', 5: '!='}

If there are any question or you would like to help out in making this map, please post below. [b]You don't have to contribute all of the map to be helpful![/b], even if you only contribute one command, or even one param for a command it's helpful

Current Progress:

  • Show Text
  • Show Choices
  • Input Number
  • Change Text Options
  • Button Input Processing
  • Wait
  • Comment
  • Conditional Branch
  • Loop
  • Break loop
  • Exit Event Processing
  • Erase Event
  • Call Common Event
  • Label
  • Jump To Label
  • Control Switches
  • Control Variables
  • Control Self Switch
  • Control Timer
  • Change Gold
  • Change Items
  • Change Weapons
  • Change Armor
  • Change Party Member
  • Change Window Skin
  • Change Battle BGM
  • Change Battle End ME
  • Change Save Access
  • Change Menu Access
  • Change Encounters
  • Transefer Player
  • Set Event Location
  • Scroll Map
  • Change Map Settings
  • Change Fog Color Tone
  • Change Fog Opacity
  • Show Animation
  • Change Transparent Flag
  • Set Move Route
  • Wait For Move's Compleation
  • Prepare for Transition
  • Execute Transition
  • Chagne Screen Color Tone
  • Screen Flash
  • Screen Shake
  • Show Picture
  • Move Picture
  • Rotate Picture
  • Change Picture Color Tone
  • Erase Picture
  • Set Weather Effects
  • Play BGM
  • Fade Out BGM
  • Play BGS
  • Fade out BGS
  • Memorise BGM/BGS
  • Restore BGM/BGS
  • Play ME
  • Play SE
  • Stop SE
  • Battle Processing
  • Shop Processing
  • Name Input Processing
  • Change HP
  • Change SP
  • Change State
  • Recover All
  • Change EXP
  • Change Level
  • Change Parameters
  • Change Skill
  • Change Equipment
  • Change Actor Name
  • Change Actor Calss
  • Change Actor Graphic
  • Change Enemy HP
  • Change Enemy SP
  • Change Enemy State
  • Enemy Recover All
  • Enemy Appearence
  • Enemy Transform
  • Show Battle Animation
  • Deal Damage
  • Force Action
  • Abort Battle
  • Call Menu Screen
  • Call Save Screen
  • Game Over
  • Return to Title Screen
  • Script

Map list viewer

Map list viewer tasks

  • Create a map list viewer in the map editor
  • Easy ordering of maps
  • Easy naming and property changing

Use ImageSource in bitmaps

Use an ImageSource for loading a Bitmap instead of a texture and then rendering on the original texture

Remove of global variables usage

While this has been fixed in many place there are still some places that need to be fixed
the implementation of the Database panels leftover from F0's efforts made use of g global variables to make project data and configuration available to the class, initialising them in the init method of the class

this is bad practice and counter productive to the modular design of the system.

these usages should be replaced with a proper access of the Project object stored in Kernel.GlobalObjects for each use of project data and
Kernel.Config for configuration

Internationalization of Editor

Python provides the convenient gettext function that can be mapped to _() and wxFormBuilder has the ability to generate with all strings wrapped in _().

Preparing for internationalization is a simple as wrapping al remaining relevant strings in the source code with _() importing gettext in those modules and mapping it to _

after that we can later use a tool like poEdit to extract all _() strings and create a pot file, translators can then create translations for us.

use pep8 module name conventions

Capitals are not supposed to be used for module named according to pep8, the reason? cross platform support. this bit me in the ass last week..

Move Project configuration files away form INI to JSON

Currently project files look like this in INI format

Default Project.arcproj:

[Project]
Title=Default Project
[Files]
list=Actors|Classes|Skills|Items|Weapons|Armors|Enemies|Troops|States|Animations|Tilesets|CommonEvents|System|MapInfos

in order for internal consistency and the ability to add new features to the files easier the format should be changed to JSON.

{
    "Project": {
        "Title": "Default Project"
    },
    "Files": {
        "list": ["Actors", "Classes", "Skills", "Items", "Weapons", "Armors", "Enemies", "Troops", "States", "Animations", "Tilesets", "CommonEvents", "System", "MapInfos"]
    }
}

this effort shold coencide with the efforts in issue #32 to rework the project system to FileHandelers

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.