Fixed data path for character select.

This commit is contained in:
genxium 2023-02-12 23:04:20 +08:00
parent d623916b3c
commit 2751569e0c
5 changed files with 60 additions and 20 deletions

View File

@ -30,14 +30,14 @@
"_active": true,
"_components": [
{
"__id__": 75
"__id__": 76
},
{
"__id__": 76
"__id__": 77
}
],
"_prefab": {
"__id__": 77
"__id__": 78
},
"_opacity": 255,
"_color": {
@ -2612,7 +2612,7 @@
}
],
"_prefab": {
"__id__": 74
"__id__": 75
},
"_opacity": 255,
"_color": {
@ -2808,15 +2808,21 @@
"__id__": 68
},
"_enabled": true,
"_normalMaterial": null,
"_normalMaterial": {
"__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
},
"_grayMaterial": null,
"duration": 0.1,
"zoomScale": 1.2,
"clickEvents": [],
"clickEvents": [
{
"__id__": 74
}
],
"_N$interactable": true,
"_N$enableAutoGrayEffect": false,
"_N$transition": 2,
"transition": 2,
"_N$transition": 3,
"transition": 3,
"_N$normalColor": {
"__type__": "cc.Color",
"r": 255,
@ -2872,6 +2878,16 @@
},
"_id": ""
},
{
"__type__": "cc.ClickEvent",
"target": {
"__id__": 1
},
"component": "",
"_componentId": "dd92bKVy8FJY7uq3ieoNZCZ",
"handler": "onModeButtonClicked",
"customEventData": ""
},
{
"__type__": "cc.PrefabInfo",
"root": {
@ -2906,6 +2922,7 @@
"__id__": 46
}
],
"chosenSpeciesId": 0,
"_id": ""
},
{

View File

@ -461,7 +461,7 @@
"array": [
0,
0,
223.42897822823446,
210.59754059453806,
0,
0,
0,

View File

@ -14,16 +14,14 @@ cc.Class({
type: cc.Node,
default: []
},
chosenSpeciesId: {
type: cc.Integer,
default: 0
},
},
// LIFE-CYCLE CALLBACKS:
onLoad() {
const modeBtnClickEventHandler = new cc.Component.EventHandler();
modeBtnClickEventHandler.target = this.mapNode;
modeBtnClickEventHandler.component = "Map";
modeBtnClickEventHandler.handler = "onGameRule1v1ModeClicked";
this.modeButton.clickEvents.push(modeBtnClickEventHandler);
},
onLoad() {},
onSpeciesSelected(evt, val) {
for (let cell of this.characterSelectCells) {
@ -32,7 +30,12 @@ cc.Class({
comp.chosenFlag.node.active = false;
} else {
comp.chosenFlag.node.active = true;
this.chosenSpeciesId = val;
}
}
},
onModeButtonClicked(evt) {
this.mapNode.getComponent("Map").onGameRule1v1ModeClicked(this.chosenSpeciesId);
},
});

View File

@ -1230,9 +1230,10 @@ othersForcedDownsyncRenderFrame=${JSON.stringify(othersForcedDownsyncRenderFrame
self.enableInputControls();
},
onGameRule1v1ModeClicked(evt, cb) {
onGameRule1v1ModeClicked(chosenSpeciesId) {
const self = this;
self.battleState = ALL_BATTLE_STATES.WAITING;
window.chosenSpeciesId = chosenSpeciesId; // TODO: Find a better way to pass it into "self.initAfterWSConnected"!
window.initPersistentSessionClient(self.initAfterWSConnected, null /* Deliberately NOT passing in any `expectedRoomId`. -- YFLu */ );
self.hideGameRuleNode();
},

View File

@ -58,10 +58,21 @@ window.getBoundRoomCapacityFromPersistentStorage = function() {
return (null == boundRoomCapacityStr ? null : parseInt(boundRoomCapacityStr));
};
window.getChosenSpeciesIdFromPersistentStorage = function() {
const boundRoomIdExpiresAt = parseInt(cc.sys.localStorage.getItem("boundRoomIdExpiresAt"));
if (!boundRoomIdExpiresAt || Date.now() >= boundRoomIdExpiresAt) {
window.clearBoundRoomIdInBothVolatileAndPersistentStorage();
return null;
}
const chosenSpeciesIdStr = cc.sys.localStorage.getItem("chosenSpeciesId");
return (null == chosenSpeciesIdStr ? 0 : parseInt(chosenSpeciesIdStr));
};
window.clearBoundRoomIdInBothVolatileAndPersistentStorage = function() {
window.boundRoomId = null;
cc.sys.localStorage.removeItem("boundRoomId");
cc.sys.localStorage.removeItem("boundRoomCapacity");
cc.sys.localStorage.removeItem("chosenSpeciesId");
cc.sys.localStorage.removeItem("boundRoomIdExpiresAt");
};
@ -84,6 +95,7 @@ window.handleHbRequirements = function(resp) {
window.boundRoomCapacity = resp.bciFrame.boundRoomCapacity;
cc.sys.localStorage.setItem('boundRoomId', window.boundRoomId);
cc.sys.localStorage.setItem('boundRoomCapacity', window.boundRoomCapacity);
cc.sys.localStorage.setItem('chosenSpeciesId', window.chosenSpeciesId);
cc.sys.localStorage.setItem('boundRoomIdExpiresAt', Date.now() + 10 * 60 * 1000); // Temporarily hardcoded, for `boundRoomId` only.
}
console.log(`Handle hb requirements #3`);
@ -179,6 +191,13 @@ window.initPersistentSessionClient = function(onopenCb, expectedRoomId) {
}
}
if (null == window.chosenSpeciesId) {
window.chosenSpeciesId = getChosenSpeciesIdFromPersistentStorage();
}
if (null != window.chosenSpeciesId) {
urlToConnect = urlToConnect + "&speciesId=" + window.chosenSpeciesId;
}
const clientSession = new WebSocket(urlToConnect);
clientSession.binaryType = 'arraybuffer'; // Make 'event.data' of 'onmessage' an "ArrayBuffer" instead of a "Blob"
@ -230,9 +249,9 @@ window.initPersistentSessionClient = function(onopenCb, expectedRoomId) {
const peerAddrList = resp.rdf.peerUdpAddrList;
console.log(`Got DOWNSYNC_MSG_ACT_PEER_UDP_ADDR peerAddrList=${JSON.stringify(peerAddrList)}; boundRoomCapacity=${window.boundRoomCapacity}`);
for (let j = 0; j < 3; ++j) {
setTimeout(()=> {
DelayNoMore.UdpSession.upsertPeerUdpAddr(peerAddrList, window.boundRoomCapacity, window.mapIns.selfPlayerInfo.JoinIndex); // In C++ impl it actually broadcasts the peer-punching message to all known peers within "window.boundRoomCapacity"
}, j*500);
setTimeout(() => {
DelayNoMore.UdpSession.upsertPeerUdpAddr(peerAddrList, window.boundRoomCapacity, window.mapIns.selfPlayerInfo.JoinIndex); // In C++ impl it actually broadcasts the peer-punching message to all known peers within "window.boundRoomCapacity"
}, j * 500);
}
}
break;