Commit Graph

148 Commits

Author SHA1 Message Date
jacob1
a3eae58120 fix (msvc) compile error 2018-11-17 19:33:16 -05:00
jacob1
2929264885 embed event api compatibility lua script
probably temporary, can't deprecate and remove an extremely common api in the same version.
lua script embed code mostly copied from my mod
2018-11-17 00:09:48 -05:00
Tamás Bálint Misius
e48bd482f6 Add close event 2018-11-16 23:02:05 -05:00
Tamás Bálint Misius
3de68c4346 Fix event objects not being freed 2018-11-16 23:02:05 -05:00
Tamás Bálint Misius
531229daa9 Move EventTypes inside LuaEvents to prevent global scope pollution 2018-11-16 23:02:05 -05:00
jacob1
a8489ba6f5 add new events api, replaces legacy event functions
event.register(event.mousedown, function(...) print(...) end)
event.unregister(event.mousedown, somefunc)

mouseclick event split into mousedown, mouseup, mousemove, mousewheel
keypress event split into keypress, keyrelease, textinput. key* events only contain keycode and scancode, don't attempt to represent a letter (was very broken at this before). Also have helpful shift/ctrl/alt flags passed in. textinput just represents inserted text, can probably even handle foreign characters.
register_step replaced with event.tick event

All legacy register_* and unregister_ functions are removed. There is a compatibility lua script, might embed it later. tpt.set_shortcuts / tpt.test also removed. event.getmodifiers added, just a misc function to get the currently held modifiers

Lots of code duplication to handle each event is removed, it's not handled in a more generic way. Although the Event class / child classes could use some work.
2018-11-16 00:07:26 -05:00
jacob1
48bc6e02ba Fix gcc 8 warnings 2018-11-03 19:36:07 -04:00
jacob1
276098f9db fix crash when using elem.element on windows 2018-09-17 23:03:05 -04:00
jacob1
92244f78bb initialize some variables to fix -Werror=maybe-uninitialized warnings
most aren't actually bugs, but gcc isn't able to determine that the paths it can follow guarantee they are initialized
2018-07-08 00:49:35 -04:00
jacob1
e5230b5b9f upgrade to SDL 2
Still currently in process, there are some issues:
Windows version doesn't work, mac version might not work, opengl might not work
Icon doesn't work (on Linux at least)
Lua will need some changes, there are some sdl 1.2 hacks in there
When entering fullscreen, the window loses focus
When holding down mouse out of bounds, mouse move events stop being sent
When letting go of mouse out of bounds, mouseup event doesn't take into account double scale mode
Clicking on startup without moving mouse will draw at 0,0 for a frame
Renderer probably won't compile because USE_SDL doesn't entirely work

... and maybe others

Some nice things were done though:
no more blit2, sdl can do the scaling itself
3d effect removed, no reason to support this joke any longer
No need to support copy/paste ourselves, sdl does it now
text handling done much better now, separate events for key presses and text input
when a new window is shown, all events ignored until next tick (ignore textinput event if window shown from key press event like console)
2018-05-25 21:19:44 -04:00
mniip
30dd49235d Add ToLower/ToUpper 2018-05-14 05:12:32 +03:00
jacob1
36a545124e fix setting element properties in legacy lua api 2018-05-13 16:16:14 -04:00
mniip
a87acf56b7 Replace strdup with mystrdup 2018-05-10 10:34:45 +03:00
jacob1
8a8cbb81e4 fix getting/setting description in elements api 2018-05-10 00:27:55 -04:00
mniip
f8586ea3a2 Remove ByteString::Stream 2018-05-04 23:10:39 +03:00
mniip
5ff8cefca4 Replace String::Stream parsing with number splitting 2018-05-03 04:11:43 +03:00
mniip
d1610c5127 Add string partitioning methods 2018-05-02 23:42:34 +03:00
mniip
6c9cb174fb Change some uses of String::Stream to StringBuilder 2018-05-02 22:11:41 +03:00
mniip
a121c62c3b Add some helper methods and rewrite some of the string manipulation code 2018-05-02 01:32:04 +03:00
mniip
ff27d69424 Switch from std::string to String/ByteString in most of the code
Also switch SimulationData from weird arrays to std::vector
2018-04-30 21:13:24 +03:00
jacob1
fbe81baca3 make Platform::ExecutableName return std::string (fixes minor memory leak)
update code is untested
2018-04-21 19:28:47 -04:00
wolfy1339
27f6a6b297 Strip whitespace from files in repo (#553) 2018-04-03 21:46:01 -04:00
jacob1
67bc12de97 Fix issue where TPT was bought by EA 2018-04-01 15:26:13 -04:00
jacob1
40d2850ff7 TPT has now gone free to play! Many elements are unlocked by default, but by using Powdercoins you can unlock new elements and promote your saves to front page! 2018-03-31 22:40:23 -04:00
jacob1
a0a7281cc7 add TOOL_CYCL lua constant, change ID to 7 2018-02-14 22:19:31 -05:00
jacob1
07988147b9 prevent compiling if pmap doesn't have enough space, make lua elements favor 1 byte IDs 2018-01-01 00:31:44 -05:00
jacob1
0c8c4de125 convert all of the rest of the things except GameSave.cpp and pipe/ray elements
also add sim.PMAPBITS and sim.PMAPMASK constants
2017-12-29 21:01:28 -05:00
jacob1
ac24810da5 add some defines to reduce usages of hardcoded r>>8 2017-12-28 12:03:26 -05:00
jacob1
63c13bda89 fix use of deprecated luaL_getn function 2017-11-23 22:34:22 -05:00
LBPHacker
be29fad7e8 Add support for window scale modes other than 1 and 2
Window scale can now be anything between 1 and 10 (suggest something other than 10 for maximum scale?). This required a number of subtle changes:

 * made blit2 (PowderToySDL.cpp) handle scale modes correctly (it really only handled scale:2 correctly before)
 * replaced `bool scale` with `int scale` everywhere in the options view/model/controller
 * replaced the _large screen_ checkbox with a _window scale_ textbox in the options view

The new scale is only checked and applied when the options view is closed. There's no reason to not apply it live, I just chose not to.

This commit does *not* make TPT able to figure out an optimal scale mode at first run. It still suggests using scale:2 if it makes sense though.

I had doubts about using a second loop in blit2 but it doesn't seem to be an issue. If there's a more optimal way of going about what blit2 does, I haven't figured it out.

(Sublime seems to have eaten a few trailing spaces, hence there are a few seemingly identical pairs of lines in the diff.)
2017-11-23 12:24:34 -05:00
jacob1
1b19e042b2 fix crash when using tpt.start_getPartIndex 2017-11-04 13:22:22 -04:00
jacob1
6bd068713e recording improvements
remove 'r' record shortcut
add tpt.record function. Still gives the user a confirm prompt
recordings now go into recordings/<timestamp>/, where timestamp is the time the recording was started. <timestamp> is returned by the tpt.record function. Each new recording starts the filenames over at 0 again.

you probably still need a lua script to use the recording feature, this should make it easier for those
2017-09-04 14:06:28 -04:00
QuanTech0
07e879e74c fix buffer overflow in opt_meth_setoption (#496) 2017-09-03 19:48:28 -04:00
jacob1
c34b54d974 add sim.takeSnapshot lua function 2017-08-31 23:48:00 -04:00
jacob1
1ceae1ba43 fix interface api in lua5.2 2017-08-20 18:13:46 -04:00
jacob1
6931f35520 hold shift when saving or loading stamps to not save / load pressure, closes #491 2017-08-03 00:13:06 -04:00
jacob1
adb39b91a9 attempt to reduce "script is not responding" when debugging (valgrind / breakpoints) 2017-07-28 20:32:46 -04:00
jacob1
8064d3b467 remove useless debug print in !set 2017-07-25 20:11:57 -04:00
jacob1
ad5a2a0972 tpt.parts: only prevent writing to dead particles, not reading 2017-07-16 11:43:50 -04:00
jacob1
b8ce522779 sim.signs.delete() api function 2017-07-16 10:42:53 -04:00
jacob1
6d141b0722 add new PhotonReflectWavelengths property, add reflection color for POLO 2017-07-16 00:07:32 -04:00
jacob1
5ee10d14e4 reduce unnecessary #include dependency chains
for example, elements no longer include Client.h or Graphics.h, and interface stuff won't include Window.h or Graphics.h unless requested
2017-07-13 23:24:35 -04:00
jacob1
f3a7d966d2 potential fix in sim.partCreate, also 2017-07-13 20:55:03 -04:00
LBPHacker
7dd538b82c Fix tpt.parts being unsafe
`tpt.parts` does check whether the particle ID it gets is valid, but it doesn't check whether that particle ID is used. One could potentially modify the life property of dead particles to break the linked list of free particle IDs, thus potentially gaining the ability to read from or write to arbitrary addresses in memory.
2017-07-13 20:33:46 -04:00
jacob1
8e5b0c760e Add logging inside saves which remembers which other saves material was taken from
The logging is saved inside the bson data in all online saves, local saves, stamps, and clipboard pieces. It is loaded back when reloading each of those.

See #474 for the format of the data. It is the same format for the bson data. Note that "links" is an array of objects. It can be recursive.

There is some effort to not duplicate information, we don't care if you loaded a stamp 10 times or if you are using the clipboard in your own save. Extra information is mostly not saved for your own stuff, only when you take material from other saves.

Press ctrl+a in debug builds to show what info it is currently saving in Client. Also enabled in snapshots for now.

There is one unrelated change in here, which fixes a crash pointed out by QuanTech. It was also save related and it was too close to the other changes to separate it into another commit. It fixes a crash when saving signs with invalid unicode. the BSON library doesn't like this, it was returning an error but we ignored it, which caused a crash. It now notices those errors. I also had to update several Serialize calls to check if it actually returned save data, or else it then would have started crashing there instead.
Also some debug prints were removed
2017-07-13 00:19:35 -04:00
jacob1
ec417095b9 add sim.TOOL_MIX, fixes #414 2017-05-09 21:59:15 -04:00
jacob1
ce054bfc3f fix misc. errors reported by clang static analyzer 2017-05-06 20:02:23 -04:00
jacob1
cdc8f64896 fix clang compile warnings, fixes #406
also, sim.ambientAirTemp takes floats now
2017-04-27 23:08:06 -04:00
jacob1
866289c179 remove duplicate function, fix Simulation::GetParticleType, fixes #402 2017-04-21 20:24:24 -04:00
jacob1
e712a8dbec make last 3 arguments to sim.brush optional, for convenience 2017-04-17 23:28:12 -04:00