Tue, 29 May 2012 22:33:10 +0200 Medo Merge
Wed, 30 May 2012 19:01:19 +0400 unc0rr merge
Wed, 30 May 2012 18:00:29 +0400 unc0rr Render drawn maps 10-500 times faster
Tue, 29 May 2012 22:21:19 +0400 unc0rr Oops, forgot to set 'erasing' flag on decoding
Mon, 28 May 2012 22:42:59 +0400 unc0rr Fix a bug with wrong state of teams list when color isn't changed manually
Mon, 28 May 2012 14:20:51 -0400 nemo Remove a couple more timers, should mean alpha matches old pulse time now
Mon, 28 May 2012 14:11:50 -0400 nemo also change specialists
Mon, 28 May 2012 14:01:23 -0400 nemo Set air attack to active by default, make time look a bit nicer, avoid plane buzz activating.
Mon, 28 May 2012 19:33:57 +0200 Xeli change the array which represents the keyboard state to be a boolean array rather than byte array
Mon, 28 May 2012 19:15:51 +0200 Xeli Don't allow for multiple key up(or down) events, it will ignore the excess events
Mon, 28 May 2012 12:21:54 -0400 nemo Also change Highlander and Racer
Mon, 28 May 2012 10:38:27 +0200 Wolfgang Steffens moved generic matrix code to uMatrix.pas
Mon, 28 May 2012 20:04:49 +0400 unc0rr merge
Mon, 28 May 2012 10:34:33 +0200 Wolfgang Steffens merge
Mon, 28 May 2012 01:51:50 -0400 nemo Add onGameTick20 to try and encourage lua to be a bit more efficient. Rewrite Space Invasion to use it. Top speed of aliens is 25% higher now, although that could be changed, I kinda liked it. Change parameter order of div().
Mon, 28 May 2012 17:54:23 +0400 unc0rr Some improvements to pas2c
Mon, 28 May 2012 00:44:51 +0400 unc0rr Fix a remote crasher
Fri, 25 May 2012 15:35:48 +0400 unc0rr - Fix some AI stupidness factors
Mon, 28 May 2012 00:43:36 +0400 unc0rr Make frontend compile with clang
Sun, 27 May 2012 23:42:43 +0400 unc0rr - Allow switching colors with mouse wheel
Fri, 25 May 2012 09:00:54 +0200 Wolfgang Steffens initial GLSL1.2 test version
Sat, 26 May 2012 16:50:51 -0400 nemo Minor freezer changes, allow snow to accumulate on indestructible terrain too.
Fri, 25 May 2012 08:51:54 +0200 Wolfgang Steffens Removed lazy update: workaround for R7103
Sat, 26 May 2012 22:27:57 +0400 unc0rr Bring leftTeams back (with a fix) as it is apparently needed for spectators.
Fri, 25 May 2012 08:42:26 +0200 Wolfgang Steffens merge
Fri, 25 May 2012 00:06:42 +0400 unc0rr - Restore pre-r9257cf8e7af2 behavior
Wed, 23 May 2012 22:46:37 +0200 Medo Merge
Wed, 23 May 2012 16:51:37 -0400 nemo Fix reported in bug #327, comment #3 - untested but seems reasonable/safe.
Wed, 23 May 2012 16:34:12 -0400 nemo http://www.demoties.com/wp-content/uploads/2011/03/mar-01-6.jpg
Wed, 23 May 2012 23:30:50 +0400 unc0rr Mark team for deletion when letting others know it has left during game. Should help with quitters problem.
Wed, 23 May 2012 23:24:03 +0400 unc0rr Don't remove already removed team
Wed, 23 May 2012 21:19:15 +0200 Xeli wops add this too
Wed, 23 May 2012 21:16:44 +0200 Xeli reimplemented ResetKbd and calling it when exiting gsChat status, this restores behavior from.17: You can now walk -> press t/chat -> type some stuff while still walking -> exit gsChat and stop walking at that moment
Wed, 23 May 2012 19:56:14 +0200 Xeli android: fix the default make target
Wed, 23 May 2012 19:54:53 +0200 Xeli Android: add freezer commit message
Wed, 23 May 2012 02:39:30 +0200 koda add NOPNG to cmake to explicitly disable PNG dependency
Wed, 23 May 2012 01:53:25 +0200 koda add GHC and GHFLAGS from cmake too
Wed, 23 May 2012 01:39:31 +0200 koda rename a few internal cmake variables (for consistency and readability)
Tue, 22 May 2012 09:25:03 +0200 Wolfgang Steffens Replaced matrix related FFP code with explicit matrix calculations.
Tue, 22 May 2012 11:19:32 +0200 Medo Merge
Wed, 23 May 2012 00:45:37 +0200 koda there a libSDLMain.a in the bundled SDL framework
Tue, 22 May 2012 09:18:46 +0200 Wolfgang Steffens Merge
Tue, 22 May 2012 00:41:26 +0200 Xeli android: possible fix for bitmap recycle errors
Tue, 22 May 2012 00:40:43 +0200 Xeli fixed wheelup/down
Mon, 21 May 2012 22:54:34 +0200 koda add a nilcheck
Mon, 21 May 2012 16:46:24 -0400 nemo checksum
Tue, 22 May 2012 00:29:32 +0400 unc0rr Feel free to add real checksum function
Mon, 21 May 2012 06:34:17 +0200 koda better lazy loading for cScaleFactor
Sun, 20 May 2012 19:42:55 -0400 nemo Ok. I think *this* should flip it correctly...
Sun, 20 May 2012 21:09:13 +0200 Xeli android: added an unsigned target to the makefile, to help automate signing
Sun, 20 May 2012 17:17:21 +0200 Xeli remove the need to qt and co when using cmake with -DANDROID=1
Sun, 20 May 2012 10:55:58 -0400 nemo Minor tweaks to freezer, mostly to simplify current state to laptop
Sun, 20 May 2012 10:45:16 -0400 nemo clean up pngs
Sun, 20 May 2012 10:54:52 +0200 mikade merge
Sun, 20 May 2012 00:08:26 +0200 mikade + Trivial update.
Sat, 19 May 2012 17:15:12 +0200 mikade A few scripts to try out. 2x challenge, 1x GSoC training, 1x user mission.
Sun, 20 May 2012 01:00:00 -0400 nemo Bit more freezer.
Fri, 18 May 2012 13:35:22 -0400 nemo Add an emergency return to the timebox in the case of death of rest of team. Also add a small visual effect to AI survival
Thu, 17 May 2012 20:23:58 -0400 nemo Might help if this was actually its own unique weapon
Thu, 17 May 2012 18:22:20 -0400 nemo Provide training/campaign with a random seed to ignore/use.
Thu, 17 May 2012 20:19:35 +0200 Xeli remove ProcessKdb references all together, removed movecursor() because it doesnt seem to do anything
Thu, 17 May 2012 20:01:56 +0200 Xeli first attempt at fixing controller/gamepad, it works with the android controller but it doesnt have hats/buttons, needs testing
Thu, 17 May 2012 16:52:17 +0200 Xeli dont allow choosing weapons when the AI is playing
Thu, 17 May 2012 16:51:54 +0200 Xeli android typo/sabotage
Thu, 17 May 2012 15:58:24 +0200 Xeli fix sdl13 build
Mon, 14 May 2012 22:14:17 +0200 Wolfgang Steffens readded optimization for SetScale
Thu, 17 May 2012 15:58:04 +0200 Xeli unbreak android build
Mon, 14 May 2012 19:48:34 +0200 Wolfgang Steffens Replaced FFP code that sets up orthogonal projection with explicit matrix
Tue, 15 May 2012 21:07:47 +0200 Xeli android: add missing graphics, only placeholders tho..
Mon, 14 May 2012 19:26:50 +0200 Wolfgang Steffens Refactored TTexture to allow encoding sprite(s) at an arbitrary location within
Mon, 14 May 2012 22:47:56 +0400 unc0rr Learn hask^Wpascal, dudes!
Sun, 13 May 2012 18:50:04 -0400 nemo AI can't use cWindSpeedf since it now does a smooth transition
Sun, 13 May 2012 18:31:05 -0400 nemo oops
Sun, 13 May 2012 14:56:05 -0400 nemo Dammit Xeli
Sun, 13 May 2012 21:46:50 +0400 unc0rr '\xd7af' -> 0xd7af
Sun, 13 May 2012 21:39:20 +0400 unc0rr Make uUtils.c compile
Sun, 13 May 2012 01:54:26 +0400 unc0rr help pas2c
Sun, 13 May 2012 00:50:45 +0400 unc0rr More magic
Sat, 12 May 2012 16:45:06 -0400 nemo unc0rr's magic macro
Sun, 13 May 2012 00:40:01 +0400 unc0rr oops, wrong type
Sat, 12 May 2012 23:55:09 +0400 unc0rr pas2c stuff again
Sat, 12 May 2012 22:50:33 +0400 unc0rr Get rid of cripple SendIPCc
Sat, 12 May 2012 22:44:39 +0400 unc0rr A solution to char vs string problem: mark single-letter strings with _S macro
Sat, 12 May 2012 22:13:56 +0400 unc0rr Make pas2c even more happier with uGears.c, allow assigning arrays in some cases
Sat, 12 May 2012 00:25:49 +0400 unc0rr Add missing identifiers
Fri, 11 May 2012 16:09:11 -0400 nemo Fix casing and type for gl
Fri, 11 May 2012 23:36:42 +0400 unc0rr sysutils -> SysUtils
Fri, 11 May 2012 23:34:35 +0400 unc0rr Recognize length on arrays as a separate function
Fri, 11 May 2012 23:22:01 +0400 unc0rr More tolerance to pas2c
Fri, 11 May 2012 23:03:28 +0400 unc0rr Properly track type in ref2CF, this fixes issues with functions returning strings used in expression (like "a" + line())
Fri, 11 May 2012 22:54:19 +0400 unc0rr Define NOCONSOLE for pas2c
Fri, 11 May 2012 22:50:52 +0400 unc0rr uCommandHandlers now compiles
Fri, 11 May 2012 22:35:09 +0400 unc0rr Support operator 'in', replace it with equality checks against each element of set
Fri, 11 May 2012 22:17:39 +0400 unc0rr Recognize (hwFloat op int) expressions
Fri, 11 May 2012 22:09:34 +0400 unc0rr Convert "unit.function()" properly
Fri, 11 May 2012 21:10:58 +0400 unc0rr Function to compare string to char ftw
Fri, 11 May 2012 20:01:57 +0400 unc0rr Make pas2c happier with uSound
Fri, 11 May 2012 19:33:21 +0400 unc0rr Be more wise about constant initialization expressions being not arrays
Fri, 11 May 2012 11:08:50 -0400 nemo Avoid returning an array for the sake of pas2c
Fri, 11 May 2012 00:11:01 +0200 koda fix building with lua (i think)
Fri, 11 May 2012 00:05:47 +0200 koda minor changes for warnings and a variables scope
Thu, 10 May 2012 23:21:56 +0200 koda the ios port runs again, although with a few things to sort out
Thu, 10 May 2012 22:15:31 +0200 koda ios: this commit just removes the overlay class files (with all submenus and resources) while working on a proper restoration
Fri, 11 May 2012 01:01:29 +0400 unc0rr Fix identifiers case in uLandTemplates (too lazy to make proper implementation in pas2c)
Fri, 11 May 2012 00:36:32 +0400 unc0rr Declare Param* functions
Fri, 11 May 2012 00:33:14 +0400 unc0rr Fix for Int type and sysutils in hwengine.pas
Fri, 11 May 2012 00:28:06 +0400 unc0rr Some work to make more units compile after conversion to c
Thu, 10 May 2012 23:51:05 +0400 unc0rr Support overloaded operators on (hwFloat op hwFloat) calls
Thu, 10 May 2012 22:55:13 +0400 unc0rr More definitions and mess with pascal code
Thu, 10 May 2012 13:45:47 +0400 unc0rr Render function variables in struct with no mangling. 13 C units are compilable now.
Thu, 10 May 2012 13:41:18 +0400 unc0rr Handle function type differently
Thu, 10 May 2012 13:16:31 +0400 unc0rr Some more definitions and slight fixes
Thu, 10 May 2012 11:29:18 +0400 unc0rr uAmmos.c now compiles (3 warnings though)
Thu, 10 May 2012 11:12:06 +0400 unc0rr Implement built-in functions Low() and High()
Wed, 09 May 2012 17:33:25 -0400 nemo Reflects change in previous revision to uTypes
Thu, 10 May 2012 00:58:05 +0400 unc0rr (PointerTo (SimpleType _)) could be a pointer to a non-struct type
Tue, 08 May 2012 00:17:02 +0400 unc0rr Prepend unit name to function identifiers
Mon, 07 May 2012 23:48:24 +0400 unc0rr Mangle overloaded functions (only different number of parameters is supported)
Mon, 07 May 2012 14:53:08 +0200 koda when Lua is not found, fallback to compiling the one that comes bundled in our sources
Mon, 07 May 2012 11:59:09 +0200 koda invert LUA symbol meaning and avoid hints when compiling without it
Mon, 07 May 2012 10:51:32 +0200 koda add support for FPC and FPFLAGS cmake arguments (helps crosscompiling)
Sat, 05 May 2012 19:04:59 +0100 koda old typed const moved to their proper unit
Sat, 05 May 2012 18:10:41 +0100 koda the scope cleanup continues...
Sat, 05 May 2012 17:29:04 +0100 koda split OnDestroy across the appropriate modules (this doen't cause leaks on mobile, right?)
Sat, 05 May 2012 17:19:33 +0100 koda revisit isTerminated in hwengine
Sat, 05 May 2012 16:53:46 +0100 koda fix more breakage
Sat, 05 May 2012 16:41:14 +0200 Xeli removed the default argument in uWorld
Sat, 05 May 2012 16:38:41 +0200 Xeli fix breakage
Sat, 05 May 2012 15:17:16 +0100 koda adjust the scope of a few uSound variables and functions
Thu, 03 May 2012 22:48:02 +0200 Medo Merge
Sat, 05 May 2012 00:01:12 +0400 unc0rr Convert namespace from list into map in preparation for implementation of overloaded functions support. Greatly improve speed of rendering as a side effect (parse + render time reduced from 5:20 to 0:20)
Thu, 03 May 2012 19:00:17 +0200 sheepluva some tweaks/fixes/etc to the map preview and reload stuff
Thu, 03 May 2012 14:21:53 +0200 sheepluva visually indicate when map preview generation is in progress.
Thu, 03 May 2012 16:04:38 +0100 koda HAPPY 7000th COMMIT HEDGEWARS
Thu, 03 May 2012 13:25:40 +0200 sheepluva add DLC button to net game room
Thu, 03 May 2012 12:33:08 +0200 sheepluva + display lack of map in a nice way, don't generate bogus preview in the background
Thu, 03 May 2012 12:21:16 +0400 unc0rr Get rid of overloaded functions in uRenderUtils
Thu, 03 May 2012 00:21:17 -0400 nemo merge
Thu, 03 May 2012 03:18:10 +0200 sheepluva small tweaks/fixes to room list header saving and restore...
Thu, 03 May 2012 00:20:58 -0400 nemo Switch effects to longint for convenience of tracking ice states. I could add a new Hedgehog value, but since we have this effects list being all useless as booleans anyway...
Thu, 03 May 2012 15:34:26 +0200 Medo Updated android support library to the latest version (r8)
Thu, 03 May 2012 02:45:08 +0200 sheepluva fix a previewmap-related QObject::disconnect segfault
Wed, 02 May 2012 19:16:12 -0400 nemo Initial stub for freezer
Wed, 02 May 2012 23:53:45 +0200 Medo Merge
Thu, 03 May 2012 01:18:29 +0200 sheepluva fix: issue with playing team list vertically collapsing
Wed, 02 May 2012 18:36:27 -0400 nemo Workaround for stuck pages.
Wed, 02 May 2012 21:45:55 +0200 sheepluva tweak how the header customization is stored in the settings file
Wed, 02 May 2012 22:51:42 +0400 unc0rr Render float consts into defines
Wed, 02 May 2012 22:12:58 +0400 unc0rr GetRandom -> GetRandomf
Wed, 02 May 2012 19:36:23 +0200 sheepluva allow F5 magic to refresh demos/saves list too
Wed, 02 May 2012 16:36:11 +0100 koda rename a few Draw* routines
Wed, 02 May 2012 14:41:21 +0100 koda wut?
Wed, 02 May 2012 14:35:54 +0100 koda remove old ukeys hooks from pascalexport (definitely breaking the ios port, will have to work on that, but for now sheepluva and xeli will be happy *hopefully*)
Wed, 02 May 2012 15:33:34 +0200 sheepluva rooms list
Wed, 02 May 2012 14:30:22 +0200 sheepluva roomslist: reimplement filters
Wed, 02 May 2012 07:39:25 -0400 nemo remove IFDEF 0 for sake of poor parser
Wed, 02 May 2012 13:00:10 +0200 sheepluva room list: replace magic table column indexes with enum. makes future changes to the room list format way easier.
Wed, 02 May 2012 11:43:43 +0100 koda marked a couple of functions as inline
Wed, 02 May 2012 12:24:44 +0200 sheepluva make search filter field have a useable size on low frontend resolution
Wed, 02 May 2012 10:53:13 +0100 koda change every return value into a more pascal-ish form, using the name of the fucntion (helps the parser and macpas compaitilibity)
Wed, 02 May 2012 11:28:38 +0200 sheepluva make column sorting three-state: asc -> dsc -> off/default (= by room state)
Wed, 02 May 2012 10:57:36 +0200 sheepluva sort by room state by default
Wed, 02 May 2012 10:47:21 +0200 sheepluva allow custom sorting of roomslist (by clicking on header sections)
Wed, 02 May 2012 08:07:17 +0100 koda add support for default pascal mode by removing default arguments value (maybe this also helps the parser)
Tue, 01 May 2012 17:33:28 -0400 nemo Removing maps can cause desyncs. This is why we still have Cheese, Sticks, Sheep etc.
Tue, 01 May 2012 23:03:25 +0200 sheepluva remove map: Sticks
Tue, 01 May 2012 21:24:04 +0200 sheepluva roomslistmodel: prettier names for map +rnd+ etc.; point out unavailable maps
Tue, 01 May 2012 19:56:55 +0200 koda breaking news, we don't support typed consts anymore
Tue, 01 May 2012 20:54:30 +0400 unc0rr Hopefully this change doesn't break anything
Tue, 01 May 2012 20:54:02 +0400 unc0rr Better type deriving
Tue, 01 May 2012 19:29:47 +0400 unc0rr Declare const ints as enums
Tue, 01 May 2012 19:28:30 +0400 unc0rr Make Str2PChar more pas2c-friendly
Tue, 01 May 2012 16:16:09 +0200 sheepluva adjust column widths
Tue, 01 May 2012 16:20:12 +0200 koda oops^2
Tue, 01 May 2012 15:29:48 +0200 koda oops
Tue, 01 May 2012 15:23:11 +0200 koda minor changes for more compatibilities with other compilers
Tue, 01 May 2012 14:57:40 +0200 sheepluva RoomsListModel:
Tue, 01 May 2012 11:39:24 +0100 koda remove SDL_SCANCODE_*
Tue, 01 May 2012 11:25:44 +0100 koda add NULL definition and align types to their correct bitwidth
Tue, 01 May 2012 11:39:11 +0200 sheepluva display haxx0red teams colors correctly.
Tue, 01 May 2012 00:22:10 +0200 sheepluva made the hog count thingy prettier when on low space... have fun squishing hogs!
Mon, 30 Apr 2012 23:14:40 +0200 sheepluva Qt: fix issue with hog count being not visible on low resolutions/long team names and hard to read on very high resolutions
Mon, 30 Apr 2012 23:35:40 +0400 unc0rr Support recurrent function calls. The code is kinda hackish and ugly, but I really spent a few hours thinking on a good solution.
Mon, 30 Apr 2012 20:12:43 +0200 sheepluva add missing copyright headers to roomslistmodel
Mon, 30 Apr 2012 17:43:21 +0400 unc0rr Rework string init macro
Mon, 30 Apr 2012 16:55:02 +0400 unc0rr Raise exception when .inc file isn't found
Sun, 29 Apr 2012 21:17:27 +0200 Xeli wops
Sun, 29 Apr 2012 21:05:09 +0200 Xeli implement switch for the touch interface
Sun, 29 Apr 2012 18:08:46 +0200 Xeli hide utilitywidget when changing turns, this also fixes some inconsistency when using targetting weapons
Sun, 29 Apr 2012 20:52:10 +0200 sheepluva map, theme & style selection won't be lost on data updata now (except the selected map/theme/style is deleted ofc). enabling F5 key to reload data :>
Sun, 29 Apr 2012 17:23:05 +0200 sheepluva make it auto-update (whoops,forgot)
Sun, 29 Apr 2012 17:12:49 +0200 sheepluva hello GameStyleModel
Sun, 29 Apr 2012 16:09:42 +0200 Xeli target using the utility button, this fixes bee
Sun, 29 Apr 2012 14:10:59 +0200 Xeli enabled grenade timer, needs a button image
Sat, 28 Apr 2012 15:18:30 +0200 Xeli wops, removed some writeln
Sat, 28 Apr 2012 15:03:52 +0200 Xeli changed uKeys to uInputHandler to better reflect its function
Sun, 29 Apr 2012 14:00:35 +0200 sheepluva * make HatModel update automatically (also renamed class and files)
Sat, 28 Apr 2012 18:56:31 +0200 sheepluva license header year range adjustments
Sat, 28 Apr 2012 14:41:40 +0200 Xeli - changed targetting, to launch an airstrike move the cursor/pointer to a location and then press the firebutton
Sat, 28 Apr 2012 12:46:57 +0200 Xeli -Fixed FingerHasMoved function, still might need a little tweaking
Fri, 27 Apr 2012 23:39:01 +0200 Xeli remove last boolean keys references and using only ParseCommand in uTouch now
Sat, 28 Apr 2012 12:35:29 +0200 sheepluva various comment tweaks/fixes
Sat, 28 Apr 2012 11:56:09 +0200 sheepluva MapModel: add getters for random maps based on type, so that the mapContainer does not have to magically know how maps and separators are ordered within the model
Sat, 28 Apr 2012 09:25:30 +0200 sheepluva fix for issue 186 ("Screen gets messed up when selecting Hand Drawn Map")
Sat, 28 Apr 2012 00:08:12 -0400 nemo unbreak snowball
Fri, 27 Apr 2012 22:25:26 -0400 nemo Ok, 20,000 was a bit much. Arbitrary multiplier that seems to shove things off enough.
Sat, 28 Apr 2012 00:24:37 +0200 sheepluva MapModel: comments/docs, small tweaks
Fri, 27 Apr 2012 23:17:11 +0200 Xeli reimplement the quit engine+frontend keys
Fri, 27 Apr 2012 23:09:27 +0200 Xeli add ammoprop to enable to up and down buttons on for the touch interface
Fri, 27 Apr 2012 23:10:48 +0200 sheepluva decouple current theme from map theme (fixes theme confusion bugs of last commit)
Fri, 27 Apr 2012 22:22:04 +0200 sheepluva MapModel converted to QStandardItemList; separators fixed; changed used data format (human-readable struct instead of magic list) for map info in HwMapContainer (+ various small cleanups in that class)
Fri, 27 Apr 2012 11:47:37 +0200 sheepluva MapModel, various cleanups. TODO/FIXME: QComboBox separator not working with custom models
Thu, 26 Apr 2012 16:15:37 +0200 sheepluva messing with the theme model a bit (gets now auto-updated after DLC download too)
Fri, 27 Apr 2012 16:57:54 -0400 nemo theme tweaks
Fri, 27 Apr 2012 22:15:08 +0400 unc0rr Show number of points in drawn map
Fri, 27 Apr 2012 00:43:48 +0400 unc0rr Cursor for DrawMapScene. Feel free to ajust its look.
Thu, 26 Apr 2012 09:48:52 +0200 sheepluva mapContainer: use DataManager, reload maps after data update (e.g. by DLC)
Thu, 26 Apr 2012 09:47:35 +0200 sheepluva make DLC trigger data reload
Thu, 26 Apr 2012 07:44:44 +0200 sheepluva make DataManager a QObject with reload() slot that emits signal updated()
Thu, 26 Apr 2012 07:22:05 +0200 sheepluva renaming HWDataManager -> DataManager
Wed, 25 Apr 2012 17:44:48 +0200 sheepluva reimplement auto-kick for ignored players (it was temporarily removed during refactoring)
Wed, 25 Apr 2012 08:23:48 +0200 sheepluva nemo said I was boring for removing the "hello" randomizer on room join.
Tue, 24 Apr 2012 17:16:18 -0400 nemo Oh, and I guess this is needed as well, although if many other places in the code do this, pas2c will need
Tue, 24 Apr 2012 16:58:19 -0400 nemo Make adler32 friendlier for pas2c - this should work the same (needs testing ofc)
(0) -3000 -1000 -224 +224 +1000 +3000 tip