Commit graph

238 commits

Author SHA1 Message Date
Gregoire Parant e0ae79eaf1 Fini quill box 2020-09-21 00:34:25 +02:00
Gregoire Parant 45ad4bbb36 Send and play audio message 2020-09-20 17:12:27 +02:00
David Négrier b148ca3708 Linting 2020-09-18 18:16:26 +02:00
David Négrier df0636c513 Migrating user position messages to protobuf 2020-09-18 15:51:15 +02:00
David Négrier e9ca8721a6 Migrating userId to "int32" to save some space and adding userMoves message in protobuf 2020-09-18 13:57:38 +02:00
Gregoire Parant e59cbcfaa7 Create console global message
- Add style
- Create zone and button to show the admin console
2020-09-16 21:50:04 +02:00
Gregoire Parant 509196785b Initialise global message
- Create new class to manager global message. My idea is that this class permit to manage audio or text message.
 - Update html to have main content id and inject html in this.
 - Create front event to receive startMessage and stopMessage.
 - Delete impoted variable not used.
2020-09-16 18:38:50 +02:00
David Négrier f5f9dcac04 Making groups part of zones 2020-09-16 16:06:43 +02:00
David Négrier 3a9196fb82 Merge 2020-09-16 11:41:03 +02:00
David Négrier d24ec0bd75 Plugin PositionNotifier into the main application. 2020-09-15 16:21:41 +02:00
David Négrier 9b702c75e3 Adding batched messages + the notion of notifier / zones (not plugged in the system yet) 2020-09-15 10:06:11 +02:00
David Négrier e418e8fd09 Setting the depth of the chat mode / presentation mode to 99999 to avoid melting buttons with map. 2020-09-10 09:31:53 +02:00
David Négrier f70ba1411a Hiding cam details when entering a Jisti room 2020-09-01 14:43:21 +02:00
David Négrier 9351719873 Adding the notion of silent zone 2020-08-31 14:10:01 +02:00
David Négrier df7b5cc2e3 Adding a "silent" notion (triggered in Jitsi meets) 2020-08-31 14:03:40 +02:00
David Négrier 0a8ba37049 Adding Jitsi meet support 2020-08-31 12:18:00 +02:00
David Négrier 01319b50ca Adding a "openWebsite" property that opens websites when we walk over the zone. 2020-08-30 17:37:38 +02:00
David Négrier 168697eb46 Adding a GameMap class that helps tracking when the properties of the tiles the user is changes (when the user moves) 2020-08-30 15:44:22 +02:00
David Négrier fca93663b4 Merge branch 'develop' of github.com:thecodingmachine/workadventure into outline 2020-08-24 18:15:44 +02:00
David Négrier 044495cf05 Centering character in free space
This commit adds the ability to put the character where there is free space when a discussion is hapening (either in presentation or chat mode)
2020-08-24 14:19:36 +02:00
David Négrier 2e61c2ef62 Getting back code in compilable fashion after huge rebase 2020-08-18 00:12:38 +02:00
David Négrier 6b970adc6c Merge branch 'develop' of github.com:thecodingmachine/workadventure into outline
# Conflicts:
#	front/src/Phaser/Game/GameScene.ts
#	front/src/Phaser/Player/Player.ts
#	front/src/index.ts
#	front/yarn.lock
2020-08-17 22:51:37 +02:00
David Négrier 6516e621b0 Adding display / hide of layout buttons when a meet start / ends 2020-08-17 16:12:53 +02:00
David Négrier 7fe2cc19c3 Adding buttons to switch mode 2020-08-17 15:20:03 +02:00
David Négrier 88c099fc13 Improving layout
Fixing left-right switch on all cameras (except current player camera)
2020-08-16 23:19:04 +02:00
David Négrier 24fb605f50 Switching to definitely assigned parameters
This allows us to go in "full strict mode" (yeah!)
See https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-7.html#strict-class-initialization
2020-08-07 23:39:06 +02:00
David Négrier bc929615d1 Fixing problem when switching scenes with container 2020-07-29 11:42:18 +02:00
David Négrier 84529d6e99 Propagating customized sprites all over the game 2020-07-28 17:45:55 +02:00
David Négrier ee612f6585 Adding event support to items 2020-07-27 22:36:58 +02:00
David Négrier d48d5b0285 Fix CS 2020-07-23 18:47:28 +02:00
David Négrier ed146226cf Adding Outline capabilities and a ActionableItem notion. 2020-07-23 18:09:24 +02:00
David Négrier 6879418098 Adding a 404 page when resources loading fails 2020-07-07 22:52:22 +02:00
David Négrier 55767f2c78 Fixing image tileset key
If 2 maps share the same tileset name (even if they use 2 different URLs for the tileset), the tileset image will be reused wrongly.

This commit fixes the tileset key to make it equal to the image URL.
2020-07-07 18:22:10 +02:00
David Négrier 67e07c04f8 Fixing loading of tilesets with margin or padding 2020-07-05 17:10:08 +02:00
David Négrier d78006e106 Fixing memory leak with listeners
The listeners from MediaManager and SimplePeer were never removed, leading to a huge amount of listeners all over the applications when switching regularly of scene.
2020-06-23 15:02:35 +02:00
David Négrier a5514ce78a Code cleanup and removing exception in favor of console error 2020-06-22 18:42:54 +02:00
David Négrier 407c6db070 Fixing difference between MapKey and scene key (prevented proper caching of resources) 2020-06-22 17:18:24 +02:00
David Négrier 3f927280a6 Lint 2020-06-22 16:11:48 +02:00
David Négrier 9b174836cd Making sure connection is established again EVEN if the tab is not displayed 2020-06-22 16:11:02 +02:00
David Négrier f88f28db3f Refactoring reconnection: putting it into the GameScene directly. 2020-06-22 15:00:23 +02:00
David Négrier d785a8a1bf Refactoring connection to be part of a GameScene
Most of the refactoring issues we are seeing are probably due to the fact that we are trying to manipulate a ScenePlugin out of a Scene (the GameManager is not a Scene and holds a reference to a ScenePlugin coming from a Scene that might get invalidated by Phaser 3).
Furthermore, if we want in the future to be able to scale, scenes could be hosted on different servers. Therefore, it makes no sense to have one connexion for the whole application.
Instead, we should have one connexion for each scene.
2020-06-22 11:58:07 +02:00
David Négrier 4496c49621 Fix linting 2020-06-19 18:51:58 +02:00
David Négrier 2b820c7d56 Adding an event queue in the GameScene.
Events are processed only in the 'update' method.
We hope this will solve a number of null pointer errors. See #194
2020-06-19 18:18:43 +02:00
David Négrier e2be99490b Finishing removing any reference to "any" in the front. 2020-06-19 16:36:40 +02:00
David Négrier 39928b46f9 Removing any in the front 2020-06-19 14:30:34 +02:00
David Négrier 8348d13bfe Fixing use const instead of let 2020-06-19 14:30:34 +02:00
David Négrier 54f2518b5e Enabling stricter lint on front 2020-06-19 14:29:29 +02:00
David Négrier 80fddb3c69 Removing dead code 2020-06-10 16:01:01 +02:00
David Négrier 43e4489d4d Fixing start position on disconnect 2020-06-10 14:57:32 +02:00
David Négrier 5042f2f82c Lint 2020-06-07 23:00:05 +02:00
David Négrier c0809e28db Adding support for putting the hash in a map referenced in an exit scene. 2020-06-07 22:57:32 +02:00
David Négrier db3ef81842 Adding the ability to add several entry points
We can now have several start layers and choose an entry point using a # in the URL
2020-06-07 13:23:32 +02:00
David Négrier b82b13e351 Finalizing strict mode fixes 2020-06-04 18:56:59 +02:00
David Négrier 6f69a62d4d More strict fixes 2020-06-04 18:56:59 +02:00
David Négrier 082a11b0cd Allowing ill defined initializers (because of the way Phaser 3 is designed) 2020-06-04 18:56:59 +02:00
David Négrier 82e2c0d985
Merge pull request #149 from thecodingmachine/multiple_start_positions_in_layer
Allowing several start positions in a given start layer
2020-06-03 11:20:57 +02:00
David Négrier 69d2fa6944 Allowing several start positions in a given start layer
If more than one tile was set in the "start" layer, the last tile would be selected.
Now, the tile is selected at random among available tiles.

Also, a message is issued if no tiles have been put on the "start" layer.
2020-06-03 11:14:04 +02:00
David Négrier 9ddf22d36b Removing GameScene from the list of known GameScene when leaving
This is important because when we come back to the GameScene later, some properties of the GameScene object might be initialized with the values of the previous GameScene.
Like the position if the user previously disconnected.

Closes #146
2020-06-03 10:45:25 +02:00
David Négrier d72e60610e Adding PlayersPositionInterpolator to interpolate/extrapolate players positions 2020-06-02 13:44:42 +02:00
David Négrier 077b29bfbd Sending position only every 200ms while moving 2020-06-01 22:42:18 +02:00
David Négrier 21576946f0 Commenting out the notion of status in the GameManager
It seems to be useless
2020-05-25 22:37:07 +02:00
David Négrier 17e7f1b37a Removing dead code from previous messaging system
Remvoing messages that were no more used in the new messaging system (the code used to handle the message that sent the position of all users on the front side)
2020-05-25 22:36:44 +02:00
David Négrier 1fa39b0781 Fixing typos.
Replaced connexion with connection and LogincScene with LoginScene
2020-05-24 23:14:12 +02:00
David Négrier 2448fef53a Adding a notion of instances per mapAdding a notion of instances to room
The URL signature becomes:

https://workadventu.re/_/[instance]/[path_to_map.json]

This allows us to create many instances of the same map (and therefore to create several different worlds for different people)

An exit on a map can target another "instance" by passing the "exitInstance" property.
2020-05-23 17:45:49 +02:00
David Négrier 080e08eeef
Merge pull request #122 from thecodingmachine/reconnecting_scene
Adding a special scene to wait for server reconnection
2020-05-23 17:12:36 +02:00
Gregoire Parant f4ed2e52bf Fix CI 2020-05-23 16:50:17 +02:00
David Négrier 36858f8747 Adding a special scene to wait for server reconnection 2020-05-23 15:43:26 +02:00
Gregoire Parant ab32021fc0 Fix mediam stream manage and server back down 2020-05-23 14:00:36 +02:00
David Négrier ab798b1c09 Changing the "Point" notion to add a notion of "moving" in addition to the notion of direction.
Also, refactoring JOIN_ROOM event to add complete position.
2020-05-22 23:04:45 +02:00
David Négrier f44a44c109 Removing logs 2020-05-20 12:30:17 +02:00
David Négrier 125a4d11af Refactored and optimized messages
Now, when a user moves, only his/her position is sent back to the other users. The position of all users is not sent each time.

The messages sent to the browser are now:

- the list of all users as a return to the join_room event (you can send responses to events in socket.io)
- a "join_room" event sent when a new user joins the room
- a "user_moved" event when a user moved
- a "user_left" event when a user left the room

The GameScene tracks all these events and reacts accordingly.

Also, I made a number of refactoring in the classes and removed the GameSceneInterface that was useless (it was implemented by the LogincScene for no reason at all)
2020-05-19 19:11:12 +02:00
David Négrier 4d1c3517ec When sharing user position, only position is sent now! 2020-05-15 23:47:00 +02:00
David Négrier 4de552437d Completely getting rid of "userid"
Previously, userid was generated by the "/login" route and passed along.
This commit completely removes the uuid "userid" (and disables the LoginController too and any Jwt check).

"userid" is replaced by the "socket id" of the connection.
So a user is now identified using a socket id, which is unique for a given connection.
2020-05-14 23:20:43 +02:00
gparant ec297e3912 Auto-reconnect 2020-05-13 20:22:42 +02:00
David Négrier faadacddb6 Redirecting to the correct map after login screen based on URL provided 2020-05-13 00:06:58 +02:00
David Négrier daa559738b Adding history support
Arriving on a new map now changes the URL.
All URLs starting with _ are automatically redirected to index.html by the web server
2020-05-12 22:38:44 +02:00
David Négrier 9417e4a4d2 Refactoring/centralizing map loading in GameManager 2020-05-12 22:38:44 +02:00
David Négrier 0daddb3669
Merge pull request #93 from thecodingmachine/fix-recette-grp
Fix recette GRP
2020-05-11 22:59:22 +02:00
David Négrier 98628957a4 Refactoring "exit" to allow multiple maps
Adding several layers named "exit" causes issues with Phaser 3.
This PR makes any possible layer being an exit layer (it only depends on the exitUrl property)

Also, fixing start position (it takes into account the layer width now)
2020-05-11 18:49:20 +02:00
gparant e35c188854 Fix update world back end and deleting group in front end 2020-05-11 13:17:02 +02:00
gparant 141280e691 Fix url to get the next map in GameScene 2020-05-11 00:25:06 +02:00
gparant 58b65030bd Fix feedback @moufmouf strategy of maps managing by back. 2020-05-10 18:34:55 +02:00
gparant 68ac145882 Fix feedback @moufmouf on circle texture 2020-05-10 17:55:30 +02:00
gparant 029a7a9a64 Correct feedback @moufmouf 2020-05-10 14:49:49 +02:00
gparant 5f11b065e1 Permit to dissociate data by room
- Update share room id.
 - Join room when a scene is loaded.
 - Add a room in constant variable.
2020-05-10 13:58:32 +02:00
gparant 27c6034661 Manage multi scene
- Create position and check if user is in position to switch in the next scene.
 - When scene is load, we load all scene in the layer of name "exit".
 - Layer "exit" of map.json have a parametter "exitSceneKey" to identify next scene.
 - Add layer "start", the player could start in the scene on the object present in the layer of name "start".
2020-05-09 21:28:50 +02:00
gparant fb8d9bf9a8 Multi Scene in back end
- Change maps url to get maps
 - Change GameScene to create scene with file since back end
 - Change LoginScene to upload scene and start game
2020-05-09 19:41:21 +02:00
gparant 4157a12f5d Update name map
- Change name in game scene and login scene
2020-05-09 16:47:55 +02:00
gparant 59127534ac Fix User depth
- Update strategy layers depth
 - Add depth to manager layers positions between all users
2020-05-08 17:35:40 +02:00
David Négrier c59d693f6e
Merge pull request #83 from thecodingmachine/cleanup_rename_frame
Cleanup: renaming "frame" to "character"
2020-05-08 16:21:16 +02:00
David Négrier e4824fe34d
Merge pull request #81 from thecodingmachine/display_groups
Adding the display of a circle around the group
2020-05-08 16:20:56 +02:00
David Négrier b2a5cb1720 Refactoring display of circle around group
The circle is now a sprite and not generated on every frame using a giant "graphics" object
2020-05-08 16:09:50 +02:00
David Négrier 492196b333 Cleanup: renaming "frame" to "character"
The "frame" variable actually contains a string pointing to the character selected.
It has nothing to do with a frame which is usually a particular image in an animation.

I'm renaming the variable accross the application to avoid confusion.
2020-05-08 15:18:22 +02:00
gparant 8991b6f817 Add layer override 2020-05-08 13:18:34 +02:00
David Négrier 02e6b50b16 Adding the display of a circle around the group
This PR adds the display of a circle around groups. This is useful to view where you need to go to speak to someone but also to debug.

Note: implementation is suboptimal, relying on a "graphics" object that is known to be slow. In the future, we need to use a circle as a sprite instead.
2020-05-08 00:35:36 +02:00
gparant 3ec167ee44 Merge branch 'master' into feature/login-page
# Conflicts:
#	front/src/Phaser/Game/GameScene.ts
#	front/src/Phaser/Login/LogincScene.ts
2020-05-06 02:20:28 +02:00
gparant 5a6415607d Send event and play animation with user frame 2020-05-06 01:50:01 +02:00
David Négrier ad3484285b Fixing Cypress tests 2020-05-04 18:38:04 +02:00
gparant b65e37c468 Name of map users
- Add name on user
 - Delete NonPlayer class not used
2020-05-03 22:24:14 +02:00
David Négrier b260dc32b5 Merge from master 2020-05-03 18:04:01 +02:00
gparant fb255140e5 Add feature to mute or switch off cam 2020-05-03 17:19:42 +02:00
David Négrier df5b183cba Merge 2020-05-03 15:51:16 +02:00
David Négrier 76b745ebea Putting the name in GameManager rather than passing it from scene to scene. 2020-05-03 15:29:40 +02:00
kharhamel ad65de75fd used the vent system to remove the dependency of Player on Connexion 2020-05-02 16:56:36 +02:00
David Négrier 0c04d4305b Displaying the name of a player above its head (names are not passed through the network yet) 2020-05-01 23:38:09 +02:00
David Négrier 42ddd8b858 Changed font from text
Input name can only be 4 characters long
Passing name to next scene
2020-05-01 23:19:51 +02:00
kharhamel 62d2498e34 remove the GameSceneInterface from LoginScene 2020-04-30 19:18:35 +02:00
kharhamel ee4a59578a first step in simplification: remove the concept of room in the front end 2020-04-27 15:03:05 +02:00
kharhamel d691b58d0b basic login page with a text input and a click button 2020-04-26 17:54:56 +02:00
David Négrier 33bcbd4650
Merge pull request #44 from thecodingmachine/map-v0
My first map representing TCM office grand floor without KEN office
2020-04-24 19:08:08 +02:00
David Négrier 46fcb86b28 Computing movement amount from framerate
Depending on the amount of power a computer has, the framerate will not be the same.
Hence, the amount of movement of a user should be constant on each frame.
If a frame was slow to print, the movement should be higher to keep a constant speed.

This PR takes the framerate into account when moving the players.
2020-04-18 17:16:39 +02:00
David Négrier db605d100e Merge 2020-04-16 22:44:31 +02:00
David Négrier 9175682f32 Backporting master changes 2020-04-15 23:57:36 +02:00
David Négrier 2037147d18 First working version of the office map! Yay! 2020-04-15 23:31:39 +02:00
David Négrier 8ddd4656e6 Adding automatic loading of layers 2020-04-15 23:10:12 +02:00
David Négrier 5f118c2a4a Removing all reference to 'Tiles' constant in code 2020-04-15 19:39:26 +02:00
David Négrier 1dd66b4998 Merging 2020-04-15 19:30:49 +02:00
David Négrier 482a344f45 Autoload tiles
This commit adds a listener in the preload function that will be triggered as soon as the map is loaded.
This function will load the resources from the map (tilesets) defined in the map.
That way, we don't have to define manually the list of tiles that have to be loaded (at the expense of a slight delay in loading since we must wait for the map to be loaded to start loading the tiles).
2020-04-15 19:23:06 +02:00
kharhamel a2ed7164e4 implemented basic e2e testing 2020-04-14 20:04:55 +02:00
NIP c42dbc3f95 Fix JS issue regarding multiple tilesets 2020-04-13 21:24:48 +02:00
NIP 84f0420694 Change GameScene to import new png, change map name and add missing png files 2020-04-13 20:34:19 +02:00
NIP f00d10d56a Change calque names into game scene TS file 2020-04-13 20:05:13 +02:00
kharhamel 1774594e76 deleted cameraManager, use camera follow code instead 2020-04-13 19:57:14 +02:00
kharhamel 33c58874e0 create an env variable for debug mode 2020-04-13 19:40:10 +02:00
gparant d6653c61cc Add comment talk when user have a collision & comment collision shwon 2020-04-13 16:56:06 +02:00
gparant ab70b28bb3 Fix, current player say 2020-04-13 15:35:38 +02:00
gparant 2afe6b4b6e Fix feadback @Kharhamel 2020-04-13 15:34:09 +02:00
gparant 01dbff7aee Merge branch 'interaction' into kharhamel-interaction
# Conflicts:
#	front/src/Phaser/Game/CameraManager.ts
#	front/src/Phaser/Game/GameScene.ts
#	front/src/Phaser/Game/MapManager.ts
#	front/src/Phaser/Player/Player.ts
2020-04-13 13:42:21 +02:00
kharhamel c51f5f4aa9 added som ebasic speech bubbles 2020-04-12 19:35:51 +02:00
kharhamel 05379c8001 the other playes now run away from the player on contact 2020-04-12 19:06:31 +02:00
kharhamel 97a55ab66c fixed the player animations 2020-04-12 18:28:05 +02:00
kharhamel d1106d757d made the player pushable by other models 2020-04-12 17:13:33 +02:00
kharhamel 2b2b615e7b added other players models and fixed collision with other entities 2020-04-12 17:08:28 +02:00
kharhamel 6e27377b07 rewrote the app code to more easily allow for collisions 2020-04-12 16:12:08 +02:00
kharhamel 241cbd720a added a rock 2020-04-11 18:17:36 +02:00
gparant d257b2b944 Multi players on the map
- Fix share user position
 - Fix initialise map
 - Create function to add user on the map with back end data
2020-04-10 12:54:05 +02:00
gparant aba3322188 Fix CI 2020-04-07 20:46:30 +02:00
gparant bac1e804ad Refactor to include connexion 2020-04-07 20:41:35 +02:00
Renamed from front/src/Phaser/GameScene.ts (Browse further)