EntityCultureInfo GetCultureInfoForEntity(IEntity entity) { var lcd = entity.Structure.GetDevice <ILcd>("CultureInfo"); if (lcd != null) { try { var text = lcd.GetText(); if (string.IsNullOrEmpty(text)) { var newCultureInfo = new EntityCultureInfo(); lcd.SetText(Newtonsoft.Json.JsonConvert.SerializeObject(newCultureInfo, Newtonsoft.Json.Formatting.Indented)); return(newCultureInfo); } var ci = Newtonsoft.Json.JsonConvert.DeserializeObject <EntityCultureInfo>(text); ci.CultureInfo = EntityCultureInfo.CreateFormatCulture(System.Globalization.CultureInfo.CreateSpecificCulture(ci.LanguageTag)); return(ci); } catch (Exception error) { var debugLcd = entity.Structure.GetDevice <ILcd>("CultureInfoDebug"); if (debugLcd != null) { debugLcd.SetText(error.Message); } } } return(new EntityCultureInfo()); }
public ScriptRootData( PlayfieldScriptData playfieldScriptData, IEntity[] allEntities, IEntity[] currentEntities, IPlayfield playfield, IEntity entity, ConcurrentDictionary <string, object> persistendData, EventStore eventStore) : this() { _PlayfieldScriptData = playfieldScriptData; _PersistendData = persistendData; this.currentEntities = currentEntities; this.allEntities = allEntities; this.playfield = playfield; this.entity = entity; SignalEventStore = eventStore; var testGroup = entity?.Faction.Group == FactionGroup.Faction || entity?.Faction.Group == FactionGroup.Player ? entity?.Faction.Id.ToString() : entity?.Faction.Group.ToString(); IsElevatedScript = this is ScriptSaveGameRootData || EmpyrionScripting.Configuration.Current.ElevatedGroups.Any(f => f == testGroup); try { CultureInfo = playfieldScriptData?.EntityCultureInfo?.GetOrAdd(entity.Id, e => GetCultureInfoForEntity(entity)); } catch { CultureInfo = new EntityCultureInfo(); } }