private void FillArenasCollection(ArenaCollection arenasCollection, SkinDefinitionContext skinDefinitionContext) { var arenasElementsByType = GetArenasGroupedByType(); foreach (var arenaGroup in arenasElementsByType) { var arenaType = skinDefinitionContext.GetArenaType(arenaGroup.Key); var arena = new Arena(arenaType.Id, arenaType.Name, arenaGroup.Value.Any(element => ConvertDynamicValue <bool>(element.newGame) == true)); foreach (var arenaLayoutElement in arenaGroup.Value) { //make sure the JPVisible attribute is always there var attributes = JsonUtils.ExtractAllAttributes((JObject)arenaLayoutElement); if (!attributes.Any(a => a.Name == JsonNames.jpVisible)) { attributes.Add(new AttributeValue(JsonNames.jpVisible, "false")); } var arenaLayout = new ArenaLayout(ExtractPlayerStatus(arenaLayoutElement.playerStatus), attributes); FillArenaLayout(arenaLayout, arenaLayoutElement, skinDefinitionContext); arena.Layouts.Add(arenaLayout); } arenasCollection.Add(arena); } }
private void LoadArenas(ArenaCollection arenas) { _skinDefinition.Arenas = new ArenaCollectionViewModel(_serviceLocator); foreach (var arena in arenas) { var arenaViewModel = new ArenaViewModel(arena.Type, arena.Name, arena.IsNewGameArena, _skinDefinition.Triggers, _serviceLocator); LoadArenaLayouts(arena, arenaViewModel); _skinDefinition.Arenas.Add(arenaViewModel); } }
void ConvertLabyrinthToStampCollection() { arenaCollection = GetComponent <ArenaCollection> () as ArenaCollection; StampCollection rootStampCollection = this.transform.parent.GetComponentInChildren <StampCollection> () as StampCollection; foreach (LabyrinthRoom room in finishedRoomList) { //GameObject newCircleStamp = Instantiate (circleHoleStampPrefab, room.GetPosition(), Quaternion.identity); GameObject newArenaStamp = Instantiate(arenaCollection.GetRandomArena(), room.GetPosition(), Quaternion.identity); float horFlip = 1; float vertFlip = 1; //Flip horizontally or vertically randomly. if (Random.Range(0, 1) > 0.5f) { horFlip = -1; } if (Random.Range(0, 1) > 0.5f) { vertFlip = -1; } newArenaStamp.transform.localScale = new Vector3(room.GetDiameter() * horFlip, room.GetDiameter() * vertFlip, 1f); //Rotate 90 degrees half the time if (Random.Range(0, 1) > 0.5f) { newArenaStamp.transform.rotation = Quaternion.LookRotation(transform.forward, room.GetUpVector()); } else { newArenaStamp.transform.rotation = Quaternion.LookRotation(transform.forward, room.GetRightVector()); } rootStampCollection.AddChildStamp(newArenaStamp); } foreach (LabyrinthTunnel tunnel in tunnelList) { GameObject newRectStamp = Instantiate(rectHoleStampPrefab, tunnel.GetPosition(), Quaternion.identity); newRectStamp.transform.localScale = new Vector3(tunnel.GetWidth(), tunnel.GetLength(), 1f); newRectStamp.transform.rotation = Quaternion.LookRotation(transform.forward, (tunnel.GetStart() - tunnel.GetEnd())); rootStampCollection.AddChildStamp(newRectStamp); } AddBoundingStamps(rootStampCollection); }
private void FillArenasCollection(ArenaCollection arenasCollection, SkinDefinitionContext skinDefinitionContext) { var arenasElementsByType = ReadArenasXmlElements().Where(element => XmlValues.lobby != element.GetAttributeValue(XmlNames.type)) .GroupBy(element => element.GetAttributeValue <int>(XmlNames.type)) .ToDictionary(g => g.Key, g => g.ToList()); foreach (var arenaGroup in arenasElementsByType) { var arenaType = skinDefinitionContext.GetArenaType(arenaGroup.Key); var arena = new Arena(arenaType.Id, arenaType.Name, arenaGroup.Value.Any(element => element.GetAttributeValue(XmlNames.newGame, false) == true)); foreach (var arenaXmlElement in arenaGroup.Value) { //make sure the JPVisible attribute is always there var attributes = arenaXmlElement.ExtractAllAttributes(); if (!attributes.Any(a => a.Name == XmlNames.JPVisible)) { attributes.Add(new AttributeValue(XmlNames.JPVisible, "false")); } var arenaLayout = new ArenaLayout(arenaXmlElement.GetAttributeValue(XmlNames.playerStatus), attributes); FillArenaLayout(arenaLayout, arenaXmlElement, skinDefinitionContext); arena.Layouts.Add(arenaLayout); } arenasCollection.Add(arena); } }
private dynamic CreateLobbyArenaElement(Lobby lobby, ArenaCollection arenas) { dynamic newLobbyArenaElement = new JObject(); newLobbyArenaElement.playerStatus = BuildPlayerStatusArray(lobby.PlayerStatus); newLobbyArenaElement.arenaLabelId = ""; newLobbyArenaElement.type = JsonValues.lobby; newLobbyArenaElement.jpVisible = false; newLobbyArenaElement.favoritesSize = lobby.FavoriteSize; var lobbyItemsArray = new JArray(); for (int i = 0; i < lobby.Items.Count; i++) { var lobbyItem = lobby.Items[i]; dynamic lobbyItemXmlElement = new JObject(); lobbyItemXmlElement.arenaType = JsonValues.lobby; lobbyItemXmlElement.arenaTextName = ""; lobbyItemXmlElement.gametype = lobbyItem.Id; lobbyItemXmlElement.iconSizeName = JsonValues.BIG_ICON; lobbyItemXmlElement.isGameHasImageStates = false; lobbyItemXmlElement.displayMode = 3; lobbyItemXmlElement.userMode = 3; if (lobbyItem.JackpotVisible /*|| arenas.IsJackpotVisible(lobbyItem.Id, lobby.PlayerStatus)*/) { lobbyItemXmlElement.templateId = JsonValues.mcDynamicTextedButtonPersonalize; } else { lobbyItemXmlElement.templateId = JsonValues.btnDynamicTexted; } lobbyItemXmlElement.rectId = ArenaGame.GameTypeToRect(lobbyItem.Id); dynamic iconParamsElement = new JObject(); if (JsonValues.x.ContainsKey(lobby.Items.Count)) { iconParamsElement.x = JsonValues.x[lobby.Items.Count][i]; } else { var oneArenaWidth = 996 / lobby.Items.Count; iconParamsElement.x = oneArenaWidth * i + 1; } iconParamsElement.y = JsonValues.y; iconParamsElement.width = 166; iconParamsElement.height = 200; lobbyItemXmlElement.iconParams = iconParamsElement; lobbyItemsArray.Add(lobbyItemXmlElement); } newLobbyArenaElement.games = lobbyItemsArray; return(newLobbyArenaElement); }
private XElement CreateLobbyArenaXmlElement(XElement[] existingArenasXmlElements, Lobby lobby, ArenaCollection arenas) { XElement existingLobbyArenaXmlElement = null; if (string.IsNullOrEmpty(lobby.PlayerStatus)) { existingLobbyArenaXmlElement = existingArenasXmlElements.FirstOrDefault(element => element.GetAttributeValue(XmlNames.type) == XmlValues.lobby); } else { existingLobbyArenaXmlElement = existingArenasXmlElements.FirstOrDefault(element => element.GetAttributeValue(XmlNames.type) == XmlValues.lobby && element.GetAttributeValue(XmlNames.playerStatus) == lobby.PlayerStatus); } XElement newLobbyArenaXmlElement = new XElement(XmlNames.arena); if (existingLobbyArenaXmlElement != null) { existingLobbyArenaXmlElement.CopyAttributesTo(newLobbyArenaXmlElement); } newLobbyArenaXmlElement.AddOrUpdateAttributeValue(XmlNames.type, XmlValues.lobby); if (!string.IsNullOrEmpty(lobby.PlayerStatus)) { newLobbyArenaXmlElement.AddOrUpdateAttributeValue(XmlNames.playerStatus, lobby.PlayerStatus); } newLobbyArenaXmlElement.AddOrUpdateAttributeValue(XmlNames.favoritesSize, lobby.FavoriteSize); int placeHolder = 0; for (int i = 0; i < lobby.Items.Count; i++) { var lobbyItem = lobby.Items[i]; var lobbyItemXmlElement = new XElement(XmlNames.game); lobbyItemXmlElement.AddOrUpdateAttributeValue(XmlNames.placeHolder, placeHolder.ToString().PadLeft(2, '0')); lobbyItemXmlElement.AddOrUpdateAttributeValue(XmlNames.gameType, lobbyItem.Id); if (lobbyItem.JackpotVisible /* || arenas.IsJackpotVisible(lobbyItem.Id, lobby.PlayerStatus)*/) { lobbyItemXmlElement.AddOrUpdateAttributeValue(XmlNames.templateId, XmlValues.mcDynamicTextedButtonPersonalize); } else { lobbyItemXmlElement.AddOrUpdateAttributeValue(XmlNames.templateId, XmlValues.btnDynamicTexted); } if (XmlValues.x.ContainsKey(lobby.Items.Count)) { lobbyItemXmlElement.AddOrUpdateAttributeValue(XmlNames.x, XmlValues.x[lobby.Items.Count][i]); } else { var oneArenaWidth = 996 / lobby.Items.Count; lobbyItemXmlElement.AddOrUpdateAttributeValue(XmlNames.x, oneArenaWidth * i + 1); } lobbyItemXmlElement.AddOrUpdateAttributeValue(XmlNames.y, XmlValues.y); lobbyItemXmlElement.AddOrUpdateAttributeValue(XmlNames.iconSize, XmlValues.BIG_ICON); var rect = ArenaGame.GameTypeToRect(lobbyItem.Id); if (!string.IsNullOrEmpty(rect)) { lobbyItemXmlElement.AddOrUpdateAttributeValue(XmlNames.rect, rect); } newLobbyArenaXmlElement.Add(lobbyItemXmlElement); placeHolder++; } return(newLobbyArenaXmlElement); }