Skip to content
This repository was archived by the owner on Feb 21, 2019. It is now read-only.

Commit 6185766

Browse files
committed
Merge pull request #70 from vthibault/party-and-friends
Party and friends UI
2 parents b7dfa83 + bd51f40 commit 6185766

File tree

26 files changed

+2027
-50
lines changed

26 files changed

+2027
-50
lines changed

src/Controls/EntityControl.js

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ define(function( require )
2121
var Preferences = require('Preferences/Controls');
2222
var Camera = require('Renderer/Camera');
2323
var Session = require('Engine/SessionStorage');
24+
var Friends = require('Engine/MapEngine/Friends');
2425
var PACKET = require('Network/PacketStructure');
2526
var Network = require('Network/NetworkManager');
2627
var Cursor = require('UI/CursorManager');
@@ -29,6 +30,7 @@ define(function( require )
2930
var ContextMenu = require('UI/Components/ContextMenu/ContextMenu');
3031
var Pet = require('UI/Components/PetInformations/PetInformations');
3132
var Trade = require('UI/Components/Trade/Trade');
33+
var getModule = require;
3234

3335

3436
/**
@@ -210,6 +212,7 @@ define(function( require )
210212
switch (this.objecttype) {
211213
case Entity.TYPE_PET:
212214
if (Session.petId === this.GID) {
215+
ContextMenu.remove();
213216
ContextMenu.append();
214217
ContextMenu.addElement( DB.getMessage(596), Pet.ui.show.bind(Pet.ui)); // check pet status
215218
ContextMenu.addElement( DB.getMessage(592), Pet.reqPetFeed); // Feed pet
@@ -221,20 +224,34 @@ define(function( require )
221224

222225
case Entity.TYPE_PC:
223226
/// TODO: complete it :
224-
/// - check for party leader action (invite)
225227
/// - check for guild leader action (invite, ally, ...)
226228
/// - check for admin action (kick, mute, ...)
227229

230+
ContextMenu.remove();
228231
ContextMenu.append();
229232
//ContextMenu.addElement( DB.getMessage(1362), checkPlayerEquipment);
230233

231234
// Trade option
232235
ContextMenu.addElement( DB.getMessage(87).replace('%s', this.display.name), function(){
233236
Trade.reqExchange(entity.GID, entity.display.name);
234237
});
235-
//ContextMenu.nextGroup();
238+
236239
//ContextMenu.addElement( DB.getMessage(360), openPrivateMessageWindow);
237-
//ContextMenu.addElement( DB.getMessage(358), sendFriendInvitation);
240+
241+
if (!Friends.isFriend(this.display.name)) {
242+
ContextMenu.nextGroup();
243+
ContextMenu.addElement( DB.getMessage(358), function(){
244+
Friends.addFriend(entity.display.name);
245+
});
246+
}
247+
248+
if (Session.hasParty && Session.isPartyLeader) {
249+
ContextMenu.nextGroup();
250+
ContextMenu.addElement( DB.getMessage(88).replace('%s', this.display.name), function(){
251+
getModule('Engine/MapEngine/Group').onRequestInvitation(entity.GID, entity.display.name);
252+
});
253+
}
254+
238255
//ContextMenu.nextGroup();
239256
//ContextMenu.addElement( DB.getMessage(315), blockUserPrivateMessage);
240257
break;

src/Controls/ProcessCommand.js

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ define(function( require )
3131
* Process command
3232
*/
3333
return function processCommand( text ){
34-
var pkt;
34+
var pkt, matches;
3535
var cmd = text.split(' ')[0];
3636

3737
switch (cmd) {
@@ -170,6 +170,30 @@ define(function( require )
170170
case 'q':
171171
getModule('UI/Components/ChatRoom/ChatRoom').remove();
172172
return;
173+
174+
case 'leave':
175+
getModule('Engine/MapEngine/Group').onRequestLeave();
176+
return;
177+
178+
case 'invite':
179+
matches = text.match(/^invite\s+(")?([^"]+)(")?/);
180+
if (matches && matches[2]) {
181+
getModule('Engine/MapEngine/Group').onRequestInvitation(0, matches[2]);
182+
return;
183+
}
184+
break;
185+
186+
case 'organize':
187+
matches = text.match(/^organize\s+(")?([^"]+)(")?/);
188+
if (matches && matches[2]) {
189+
getModule('Engine/MapEngine/Group').onRequestCreationEasy(matches[2]);
190+
return;
191+
}
192+
break;
193+
194+
case 'hi':
195+
getModule('Engine/MapEngine/Friends').sayHi();
196+
return;
173197
}
174198

175199

src/Engine/MapEngine.js

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ define(function( require )
4747
var ChatRoomCreate = require('UI/Components/ChatRoomCreate/ChatRoomCreate');
4848
var Emoticons = require('UI/Components/Emoticons/Emoticons');
4949
var SkillList = require('UI/Components/SkillList/SkillList');
50+
var PartyFriends = require('UI/Components/PartyFriends/PartyFriends');
5051

5152

5253
/**
@@ -135,13 +136,14 @@ define(function( require )
135136
require('./MapEngine/Item').call();
136137
require('./MapEngine/PrivateMessage').call();
137138
require('./MapEngine/Storage').call();
138-
require('./MapEngine/Group').call();
139+
require('./MapEngine/Group').init();
139140
require('./MapEngine/Guild').call();
140141
require('./MapEngine/Skill').call();
141142
require('./MapEngine/ChatRoom').call();
142143
require('./MapEngine/Pet').call();
143144
require('./MapEngine/Store').call();
144145
require('./MapEngine/Trade').call();
146+
require('./MapEngine/Friends').init();
145147
}
146148

147149

@@ -176,6 +178,11 @@ define(function( require )
176178
Session.Entity = new Entity( Session.Character );
177179
Session.Entity.onWalkEnd = onWalkEnd;
178180

181+
// Reset
182+
Session.petId = 0;
183+
Session.hasParty = false;
184+
Session.isPartyLeader = false;
185+
179186
BasicInfo.update('blvl', Session.Character.level );
180187
BasicInfo.update('jlvl', Session.Character.joblevel );
181188
BasicInfo.update('zeny', Session.Character.money );
@@ -250,13 +257,18 @@ define(function( require )
250257
ChatRoomCreate.append();
251258
Emoticons.append();
252259
SkillList.append();
260+
PartyFriends.append();
253261

254262
// Map loaded
255263
Network.sendPacket(
256264
new PACKET.CZ.NOTIFY_ACTORINIT()
257265
);
258266
};
259267

268+
if (!PartyFriends.__loaded) {
269+
PartyFriends.prepare();
270+
}
271+
260272
MapRenderer.setMap( pkt.mapName );
261273
}
262274

@@ -378,6 +390,7 @@ define(function( require )
378390
StatusIcons.clean();
379391
ChatBox.clean();
380392
ShortCut.clean();
393+
PartyFriends.clean()
381394
MapRenderer.free();
382395
Renderer.stop();
383396
onRestart();
@@ -394,7 +407,10 @@ define(function( require )
394407
switch (pkt.result) {
395408
// Disconnect
396409
case 0:
410+
StatusIcons.clean();
397411
ChatBox.clean();
412+
ShortCut.clean();
413+
PartyFriends.clean()
398414
Renderer.stop();
399415
onExitSuccess();
400416
break;

0 commit comments

Comments
 (0)