private IEnumerator GetMapList() { while (!_campaign) { yield return(null); } while (_campaign.maps.Count == 0) { yield return(null); } while (!_campaign.activeMap) { yield return(null); } _cachedId = _campaign.activeMap.id; _cachedMapsCount = _campaign.mapsInfo.Count; while (true) { foreach (Transform child in mapItemsParent) { Destroy(child.gameObject); } currentMapInput.text = _campaign.activeMap.name; foreach (var mapData in _campaign.mapsInfo) { var mapItem = Instantiate(mapItemPrefab, mapItemsParent).GetComponent <MapItem>(); mapItem.mapName.text = $"{mapData.name}"; mapItem.selected.SetActive(_campaign.activeMap.id == mapData.id); mapItem.deleteMapButton.gameObject.SetActive(_campaign.activeMap.id != mapData.id); mapItem.changeMapButton.gameObject.SetActive(_campaign.activeMap.id != mapData.id); mapItem.deleteMapButton.onClick.AddListener(delegate { StartCoroutine(DeleteMap(mapData.id)); }); mapItem.changeMapButton.onClick.AddListener(delegate { StartCoroutine(_campaign.ChangeActiveMap(mapData.id)); }); mapItem.changeAllMapButton.onClick.AddListener(delegate { ChangeAllMapButton(mapData.id); }); } while (_cachedMapsCount == _campaign.mapsInfo.Count && _cachedId == _campaign.activeMap.id && !_resetMapList) { yield return(null); } _cachedId = _campaign.activeMap.id; _cachedMapsCount = _campaign.mapsInfo.Count; _resetMapList = false; } }
public void ResolveAction(Action action) { if (action.players.Any()) { var player = campaign.playersInfo.FirstOrDefault(x => x.name == Campaign.playerName); if (player != null && !action.players.Contains(player.id)) { return; } } if (action.map.Any() && action.map != campaign.activeMap.id) { return; } try { switch (action.name) { // campaign actions case ActionNames.AddMessage: var strings = action.strings; Chat.instance.NewMessage(strings[0], strings[1], strings[2], strings[3]); break; // map actions case ActionNames.ChangeMap: StartCoroutine(campaign.ChangeActiveMap(action.strings[0])); break; case ActionNames.RefreshPermissions: StartCoroutine(RefreshPermissionsCoroutine()); break; // tiles actions case ActionNames.ChangeTiles: ChangeTiles(action.tiles); break; case ActionNames.ShowTiles: if (!Campaign.playerIsMaster) { ShowTiles(action.strings[0]); } break; case ActionNames.HideTiles: if (!Campaign.playerIsMaster) { HideTiles(action.strings[0]); } break; // entity actions case ActionNames.ChangeEntity: foreach (var entity in action.entities) { ChangeEntity(entity); } break; case ActionNames.DeleteEntity: foreach (var entity in action.entities) { DeleteEntity(entity); } break; } } catch (Exception e) { Debug.LogError($"Action (name={action.name}, map={action.map}) throws error: {e}"); } finally { action.done = true; } }