/// <summary> /// Here we handle an unloaded flag and we load it into the game /// </summary> private void HandleFlag(ExtendedFlagInfo flagInfo) { //We have a flag with the same name! if (FlagExists(flagInfo.FlagName)) { return; } var flagTexture = new Texture2D(4, 4); if (flagTexture.LoadImage(flagInfo.FlagData)) { //Flags have names like: Squad/Flags/default flagTexture.name = flagInfo.FlagName; var textureInfo = new GameDatabase.TextureInfo(null, flagTexture, true, true, false) { name = flagInfo.FlagName }; GameDatabase.Instance.databaseTexture.Add(textureInfo); LunaLog.Log($"[LMP]: Loaded flag {flagTexture.name}"); } else { LunaLog.LogError($"[LMP]: Failed to load flag {flagInfo.FlagName}"); } }
public void HandleMessage(IServerMessageBase msg) { if (!(msg.Data is FlagBaseMsgData msgData)) { return; } switch (msgData.FlagMessageType) { case FlagMessageType.ListResponse: { var data = (FlagListResponseMsgData)msgData; for (var i = 0; i < data.FlagCount; i++) { var extendedFlagInfo = new ExtendedFlagInfo(data.FlagFiles[i]); System.ServerFlags.TryAdd(extendedFlagInfo.FlagName, extendedFlagInfo); } MainSystem.NetworkState = ClientState.FlagsSynced; } break; case FlagMessageType.FlagData: { var data = (FlagDataMsgData)msgData; var extendedFlagInfo = new ExtendedFlagInfo(data.Flag); System.ServerFlags.AddOrUpdate(extendedFlagInfo.FlagName, extendedFlagInfo, (key, existingVal) => extendedFlagInfo); } break; } }