Commit Graph

88 Commits

Author SHA1 Message Date
jacob1
3519dfa83a
Fix pmap not being updated when setting x / y from Lua 2023-01-01 20:42:03 -05:00
catsoften
510424363b
Replace max/min pressure with constants (#870) 2022-12-07 12:07:46 +01:00
Tamás Bálint Misius
59354731df
Remove all PTI code, use libpng to load avatars and thumbnails
Also write PNGs with libpng, and BMPs with SDL, and have the renderer only generate a large PNG thumbnail, and disable HTTP/2 multiplexing for now so we don't get banned when loading avatars.

simon pls reply to the stupid emails already.
2022-10-23 20:21:05 +02:00
jacob1
6338da7cb7
Fix empty string being discarded at beginning of lua log/return lists 2022-10-19 17:28:13 -04:00
Tamás Bálint Misius
304cc3a47b
Move Read/WriteFile from Client to Platform 2022-10-05 19:55:04 +02:00
Tamás Bálint Misius
e54df0e6ad
More Lua API 8-bit-cleanliness changes
Round 2 of what I started in 36d034dc2e, mostly fixing c_str usage where it's not sensible.
2022-10-05 11:38:35 +02:00
Tamás Bálint Misius
513d2cae3e
Update tpt-libs
Also restructure meson.build and the ghactions workflow a bit, and enable -ffunction-sections and -fdata-sections.

Note that starcatcher uploads have not been tested and most likely don't work.
2022-09-03 07:01:21 +02:00
Tamás Bálint Misius
36d034dc2e
Fix 8-bit-uncleanliness of most of the Lua API
This fixes bugs like "type\0hello mom" being a property name sim.partProperty accepts and half-fixes bugs like text formatting codes making gfx.drawText exit prematurely.
2022-08-22 19:42:51 +02:00
jacob1
79f6fd728c
Fix, Deprecate, Remove, and Replace tpt.element_func / tpt.graphics_func 2022-06-04 22:16:45 -04:00
jacob1
c8c0f90871
Use date in screenshot filenames to ensure each screenshot's filename is unique 2022-05-06 01:27:33 -04:00
Tamás Bálint Misius
df7bbd3b8e
Prevent SaveRenderer from calling into Lua
Also clear SaveRenderer graphics cache along with the main Renderer's when needed, and revert to built-in element callbacks rather than nothing at all when assigning nil to a callback slot in Lua.
2022-02-23 22:22:10 +01:00
jacob1
44590d82e9
Add a few more Lua functions
sim.replaceModeFlags
sim.listCustomGol
sim.addCustomGol
sim.removeCustomGol
tpt.perfectCircleBrush
sim.floodDeco
2021-08-27 23:57:55 -04:00
jacob1
d1016cf58d
move Platform.cpp to common/, seems to fit in a little better there 2021-06-26 00:58:37 -04:00
jacob1
5eb2495d61
Ensure tpt.set_wallmap is called with 3, 5, or 7 arguments 2021-06-08 23:11:25 -04:00
Tamás Bálint Misius
48d1226f59
Rewrite tpt.set_wallmap, it can now set WL_FAN velocity 2021-05-28 11:58:25 +02:00
Tamás Bálint Misius
dfc8dc80bd
Write prefs every time they change (fixes #770) 2021-04-18 12:23:31 +02:00
jacob1
ffb88259d6 Split Simulation::IsValidElement into IsElement and IsElementOrNone
Allows finer control over whether you want none included or not.
Fixes some invalid things being allowed for element 0 in legacy lua api
Fixes {ctype} signs showing 0 instead of NONE
2021-04-11 23:20:33 -04:00
Tamás Bálint Misius
4b7e85c2fb
Fix a metric ton of MSVC warnings 2021-02-15 21:24:44 +01:00
Tamás Bálint Misius
360297c338
Mesonification 2020-12-14 20:16:52 +01:00
Vladimir
f137bad7f8
Limit redrawing frequency (#693)
Co-authored-by: Tamás Bálint Misius <lbphacker@gmail.com>
2020-10-11 11:58:52 +02:00
Tamás Bálint Misius
fd032eff36
Fix LuaSmartRefs acting on dead Lua states
This fixes problems with degenerate cases such as:

	local button
	assert(coroutine.resume(coroutine.create(function()
		button = Button(10, 10, 20, 20)
	end)))
	button:action(function()
		print("hi")
	end)
2020-08-21 11:16:11 +02:00
jacob1
459790ffe0 also allow nil here 2019-11-24 23:20:22 -05:00
jacob1
876a9b3096 Fix crashes if returning invalid arguments from graphics or ctypeDraw lua functions 2019-11-24 23:12:22 -05:00
jacob1
e280fea031 arbitrary gravity code cleanup
Was working on modernizing the code in my mod, copied all the changes here too
2019-08-05 00:08:06 -04:00
jacob1
7a3c0c1d9a Fix tpt.eltransition.<elem>.presHighType 2019-07-31 22:10:35 -04:00
Tamás Bálint Misius
07b0d52f90
Add more transition type checks and fix tpt.eltransition
Though I'm quite sure nobody actually cares about that table. It's been broken for a
very long time.

The PROP tool now properly calls part_change_type when type is being set.
2019-06-03 19:27:06 +02:00
jacob1
20c98e9b48 Add sim.CELL constant + some other change I made a while ago for some reason 2019-05-15 00:21:17 -04:00
Tamás Bálint Misius
0179cefc78
Flatten include trees 2019-04-20 15:36:11 +02:00
Tamás Bálint Misius
06e2836726
Fix Lua reference leaks (fixes #638) 2019-04-09 15:28:40 +02:00
jacob1
c7ae820f1c Add MotD when using a broken alternate update server 2019-03-23 11:01:32 -04:00
Tamás Bálint Misius
5bc3c03082 Change scheme to https everywhere 2019-03-18 23:50:38 -04:00
jacob1
2e17b848b1 Make element names a String (unicode support)
This won't be used by official elements, but mods or lua scripts could and do use unicode
2019-03-12 00:10:43 -04:00
Tamás Bálint Misius
30c7f6ded7 Rename Download* to Request* and move HTTP stuff inside src/client/http 2019-03-07 22:56:08 -05:00
Tamás Bálint Misius
53f2018c7e Turn RequestBroker::RetrieveAvatar into a request derived from Download
Also add http namespace because classes clashed a lot.
2019-03-07 22:56:08 -05:00
Tamás Bálint Misius
8b5cf394e0 Replace http_* calls with Download calls in non-RequestBroker stuff 2019-03-07 22:56:08 -05:00
jacob1
1536736b33 allow using element names as argument 2 to tpt.set_property again 2019-02-23 18:05:11 -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
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
f8586ea3a2 Remove ByteString::Stream 2018-05-04 23:10:39 +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
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
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
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