private void PatchPlayerName(String entity_raw, State.GameTag tag, int tag_value) { if (tag == State.GameTag.PLAYSTATE && tag_value == (int)State.TAG_PLAYSTATE.PLAYING) { // the player's name can only be known from debug print power logs // so we parse the name out, and write back to our entity object string entity_str; if (ParserUtilities.GetEntityIdFromRawString(this.game_state, entity_raw, out entity_str) >= 0) { return; // already has id } foreach (var entity in this.game_state.Entities.Items) { foreach (var entity_tag in entity.Value.Tags) { if (entity_tag.Key == State.GameTag.PLAYSTATE && entity_tag.Value == (int)State.TAG_PLAYSTATE.PLAYING) { if (entity.Value.Name == String.Empty) { game_state.ChangeEntityName(entity.Key, entity_str); return; } } } } logger_.Info("Failed to patch player name."); } }
private bool ParseOneStatus(State.ReadOnlyEntity entity, State.GameTag tag, out int value) { value = entity.GetTagOrDefault(tag, 0); return(true); }