public GestureArenaEntry( GestureArenaManager arena = null, int pointer = 0, GestureArenaMember member = null) { this._arena = arena; this._pointer = pointer; this._member = member; }
internal GestureArenaEntry _add(int pointer, GestureArenaMember member) { D.assert(!this._resolved); D.assert(this._pointer == pointer); this._members.Add(member); this._entry = this._entry ?? GestureBinding.instance.gestureArena.add(pointer, this); return(new _CombiningGestureArenaEntry(this, member)); }
public GestureArenaEntry add(int pointer, GestureArenaMember member) { _CombiningGestureArenaMember combiner; if (!this._combiners.TryGetValue(pointer, out combiner)) { combiner = new _CombiningGestureArenaMember(this, pointer); this._combiners[pointer] = combiner; } return(combiner._add(pointer, member)); }
public GestureArenaEntry add(int pointer, GestureArenaMember member) { _GestureArena state = this._arenas.putIfAbsent(pointer, () => { D.assert(this._debugLogDiagnostic(pointer, () => "★ Opening new gesture arena.")); return(state = new _GestureArena()); }); state.add(member); D.assert(this._debugLogDiagnostic(pointer, () => $"Adding: {member}")); return(new GestureArenaEntry(this, pointer, member)); }
public void acceptGesture(int pointer) { D.assert(this._pointer == pointer); D.assert(this._winner != null || this._members.isNotEmpty()); this._close(); this._winner = this._winner ?? this._owner.captain ?? this._members[0]; foreach (GestureArenaMember member in this._members) { if (member != this._winner) { member.rejectGesture(pointer); } } this._winner.acceptGesture(pointer); }
void _resolveInFavorOf(int pointer, _GestureArena state, GestureArenaMember member) { D.assert(state == this._arenas[pointer]); D.assert(state != null); D.assert(state.eagerWinner == null || state.eagerWinner == member); D.assert(!state.isOpen); this._arenas.Remove(pointer); foreach (GestureArenaMember rejectedMember in state.members) { if (rejectedMember != member) { rejectedMember.rejectGesture(pointer); } } member.acceptGesture(pointer); }
public void acceptGesture(int pointer) { D.assert(_pointer == pointer); D.assert(_winner != null || _members.isNotEmpty()); _close(); _winner = _winner ?? _owner.captain ?? _members[0]; foreach (GestureArenaMember member in _members) { if (member != _winner) { member.rejectGesture(pointer); } } _winner.acceptGesture(pointer); }
internal void _resolve(GestureArenaMember member, GestureDisposition disposition) { if (this._resolved) { return; } if (disposition == GestureDisposition.rejected) { this._members.Remove(member); member.rejectGesture(this._pointer); if (this._members.isEmpty()) { this._entry.resolve(disposition); } } else { this._winner = this._winner ?? this._owner.captain ?? member; this._entry.resolve(disposition); } }
internal void _resolve(GestureArenaMember member, GestureDisposition disposition) { if (_resolved) { return; } if (disposition == GestureDisposition.rejected) { _members.Remove(member); member.rejectGesture(_pointer); if (_members.isEmpty()) { _entry.resolve(disposition); } } else { D.assert(disposition == GestureDisposition.accepted); _winner = _winner ?? _owner.captain ?? member; _entry.resolve(disposition); } }
internal void _resolve(int pointer, GestureArenaMember member, GestureDisposition disposition) { _GestureArena state; if (!this._arenas.TryGetValue(pointer, out state)) { return; } D.assert(this._debugLogDiagnostic(pointer, () => $"{(disposition == GestureDisposition.accepted ? "Accepting" : "Rejecting")}: {member}")); D.assert(state.members.Contains(member)); if (disposition == GestureDisposition.rejected) { state.members.Remove(member); member.rejectGesture(pointer); if (!state.isOpen) { this._tryToResolveArena(pointer, state); } } else { if (state.isOpen) { state.eagerWinner = state.eagerWinner ?? member; } else { D.assert(this._debugLogDiagnostic(pointer, () => $"Self-declared winner: {member}")); this._resolveInFavorOf(pointer, state, member); } } }
public _CombiningGestureArenaEntry(_CombiningGestureArenaMember _combiner, GestureArenaMember _member) { this._combiner = _combiner; this._member = _member; }
public void add(GestureArenaMember member) { D.assert(this.isOpen); this.members.Add(member); }
public void add(GestureArenaMember member) { D.assert(isOpen); members.Add(member); }