/// <summary> /// Clones this Game Info into a new Generic Context /// </summary> /// <returns></returns> public GenericContext CreateContext(GameProfile profile, PlayerInfo info, GenericGameHandler handler) { GenericContext context = new GenericContext(profile, info, handler); Type t = GetType(); PropertyInfo[] props = t.GetProperties(); Type c = context.GetType(); PropertyInfo[] cprops = c.GetProperties(); for (int i = 0; i < props.Length; i++) { PropertyInfo p = props[i]; PropertyInfo d = cprops.FirstOrDefault(k => k.Name == p.Name); if (d == null) { continue; } if (p.PropertyType != d.PropertyType || !d.CanWrite) { continue; } object value = p.GetValue(this, null); d.SetValue(context, value, null); } return(context); }
public GenericContext(GameProfile prof, PlayerInfo info, GenericGameHandler handler, bool hasKeyboard) { profile = prof; pInfo = info; parent = handler; bHasKeyboardPlayer = hasKeyboard; }
public void PrePlay(GenericContext context, GenericGameHandler handler, PlayerInfo player) { engine.SetValue("Context", context); engine.SetValue("Handler", handler); engine.SetValue("Player", player); Play?.Invoke(); }
/// <summary> /// Clones this Game Info into a new Generic Context /// </summary> /// <returns></returns> public GenericContext CreateContext(GameProfile profile, PlayerInfo info, GenericGameHandler handler, bool hasKeyboardPlayer) { GenericContext context = new GenericContext(profile, info, handler, hasKeyboardPlayer); Type t = GetType(); PropertyInfo[] props = t.GetProperties(); FieldInfo[] fields = t.GetFields(); Type c = context.GetType(); PropertyInfo[] cprops = c.GetProperties(); FieldInfo[] cfields = c.GetFields(); for (int i = 0; i < props.Length; i++) { PropertyInfo p = props[i]; PropertyInfo d = cprops.FirstOrDefault(k => k.Name == p.Name); if (d == null) { continue; } if (p.PropertyType != d.PropertyType || !d.CanWrite) { continue; } object value = p.GetValue(this, null); d.SetValue(context, value, null); } for (int i = 0; i < fields.Length; i++) { FieldInfo source = fields[i]; FieldInfo dest = cfields.FirstOrDefault(k => k.Name == source.Name); if (dest == null) { continue; } if (source.FieldType != dest.FieldType) { continue; } object value = source.GetValue(this); dest.SetValue(context, value); } return(context); }
public GenericContext(GameProfile prof, PlayerInfo info, GenericGameHandler handler) { this.profile = prof; this.pInfo = info; this.parent = handler; }