/** * Plays an existing animation (e.g. "run"). * If you call an animation that is already playing it will be ignored. * * @param AnimName The string name of the animation you want to play. * @param Force Whether to force the animation to restart. */ public void Play(string AnimName, bool Force = false) { if (!Force && (_curAnim != null) && (AnimName == _curAnim.name) && (_curAnim.looped || !finished)) { return; } _curIndex = 0; _curFrame = 0; _frameTimer = 0; for (int i = 0; i < _animations.Count; i++) { if (_animations[i].name == AnimName) { _curAnim = _animations[i]; if (_curAnim.delay <= 0) { finished = true; } else { finished = false; } _curFrame = _curAnim.frames[_curIndex]; dirty = true; AnimationChanged(AnimName); return; } } DebugLogger.AddWarning("No animation called \"" + AnimName + "\""); }
public static SoundEffect GetSFX(string sfxName) { if (!_sfx.ContainsKey(sfxName)) { DebugLogger.AddWarning($"SFX file called {sfxName}.mp3 not found!"); return(null); } return(_sfx[sfxName]); }
public static Song GetMusic(string musicName) { if (!_music.ContainsKey(musicName)) { DebugLogger.AddWarning($"Music file called {musicName}.mp3 not found!"); return(null); } return(_music[musicName]); }
public static Texture2D GetTexture(string textureName, bool forceCorrectTexture = false) { if (!forceCorrectTexture && GlobalState.GameMode != GameMode.Normal) { return(_textures.Values.ElementAt(GlobalState.RNG.Next(_textures.Count))); } if (!_textures.ContainsKey(textureName)) { DebugLogger.AddWarning($"Texture file called {textureName}.png not found!"); return(null); } return(_textures[textureName]); }
/** * Plays an existing animation (e.g. "run"). * If you call an animation that is already playing it will be ignored. * * @param AnimName The string name of the animation you want to play. * @param Force Whether to force the animation to restart. */ public void Play(string AnimName, bool Force = false) { if (!Force && _curAnim != null && AnimName == _curAnim.name && !_curAnim.Finished) { return; } for (int i = 0; i < _animations.Count; i++) { if (_animations[i].name == AnimName) { _curAnim = _animations[i]; _curAnim.Reset(); AnimationChanged(AnimName); return; } } DebugLogger.AddWarning("No animation called \"" + AnimName + "\""); }
protected void ThrowFileWarning(string message) { DebugLogger.AddWarning(FormatFileError(message), false); }
private static void ReadEntities(string xml) { var type_lookup = (from t in Assembly.GetExecutingAssembly().GetTypes() where t.IsDefined(typeof(NamedEntity), false) group new { type = t, check = t.GetCustomAttribute <NamedEntity>() } by t.GetCustomAttribute <NamedEntity>().GetName(t) ).ToDictionary(t => t.Key, t => t.ToList()); HashSet <string> missing = new HashSet <string>(); XmlDocument doc = new XmlDocument(); doc.LoadXml(xml); XmlNode root = doc.FirstChild; List <DoorMapPair> doors = new List <DoorMapPair>(); if (root.HasChildNodes) { for (int i = 0; i < root.ChildNodes.Count; i++) { var map = root.ChildNodes[i]; string mapName = map.Attributes.GetNamedItem("name").Value; if (!_entities.ContainsKey(mapName)) { _entities.Add(mapName, new List <EntityPreset>()); } List <EntityPreset> presets = _entities[mapName]; foreach (XmlNode child in map.ChildNodes) { if (!type_lookup.ContainsKey(child.Name)) { if (!missing.Contains(child.Name)) { DebugLogger.AddWarning($"Missing Entity {child.Name}!"); missing.Add(child.Name); } continue; } if (int.TryParse(child.Attributes.GetNamedItem("x").Value, out int x) && int.TryParse(child.Attributes.GetNamedItem("y").Value, out int y) && Guid.TryParse(child.Attributes.GetNamedItem("guid").Value, out Guid id) && int.TryParse(child.Attributes.GetNamedItem("frame").Value, out int frame)) { Permanence p = Permanence.GRID_LOCAL; if (child.Attributes.GetNamedItem("p") != null) { p = (Permanence)int.Parse(child.Attributes.GetNamedItem("p").Value); } string type = ""; if (child.Attributes.GetNamedItem("type") != null) { type = child.Attributes.GetNamedItem("type").Value; } bool alive = true; if (child.Attributes.GetNamedItem("alive") != null) { alive = bool.Parse(child.Attributes.GetNamedItem("alive").Value); } var matching = type_lookup[child.Name].FindAll(t => t.check.Matches(frame, type)).ToList(); if (matching.Count == 0) { string missing_entity = $"{child.Name}-{frame}-'{type}'"; if (!missing.Contains(missing_entity)) { missing.Add(missing_entity); DebugLogger.AddWarning($"Missing Entity {missing_entity}!"); } } else if (matching.Count > 1) { DebugLogger.AddWarning($"Conflict at {child.Name}-{frame}-'{type}': " + String.Join(", ", matching.Select(t => t.type.Name))); } else { EntityPreset preset = new EntityPreset(matching[0].type, new Vector2(x, y), id, frame, p, type, alive); presets.Add(preset); if (child.Name == "Door") { DoorMapPair newDoor = new DoorMapPair(preset, mapName); if (doors.Any(d => d.Door.Frame == preset.Frame)) { DoorMapPair doorOne = doors.First(d => d.Door.Frame == preset.Frame); _doorPairs.Add(preset.Frame, new DoorPair(doorOne, newDoor)); doors.Remove(doorOne); DebugLogger.AddInfo($"DOOR PAIR {preset.Frame}\n{doorOne.Door.Position.X} {doorOne.Door.Position.Y} {doorOne.Map}\n{newDoor.Door.Position.X} {newDoor.Door.Position.Y} {newDoor.Map}"); } else { doors.Add(newDoor); } } } } } } } }