public void Assign(Character character) { LogEx.Log <FieldSlot>("Assigned character '{0}'", character.name); Character = character; Character.Fainted += OnCharacterFainted; Character.AssignSlot(this); CharacterAdded.InvokeSafe(Character); }
public bool AddCharacter(Character character) { var success = Characters.TryAdd(character.Id, character); if (success) { CharacterAdded?.Invoke(this, new CharacterArgs(character)); } return(success); }
public bool RegisterNewCharacter(out int generatedId, string name) { Character character = new Character(this, name); generatedId = character.Id = GenerateUniqueId(); m_characters.Add(generatedId, character); character.PropertyChanged += CharacterPropChanged; CharacterAdded?.Invoke(generatedId); return(true); }
private static IntPtr ActiveCallback(int nCode, IntPtr wParam, IntPtr lParam) { currentWindow = WindowInfo.GetActiveWindowInfo(); currentLang = currentWindow.keyboardLayout & 0xFFFF; int vkCode = Marshal.ReadInt32(lParam); int flags = Marshal.ReadInt32(lParam + 8); if (vkCode == 0x76) // F7 { active = false; Deactivated?.Invoke(); } if ((flags & 16) != 0) { return(IntPtr.Zero); // инжектиран } if (vkCode == 0x26 || vkCode == 0x28) // up & down { if (ArrowKeysPressed != null) { if (ArrowKeysPressed(vkCode == 0x26)) { return((IntPtr)1); } else { return(IntPtr.Zero); } } } else if (vkCode == 8) { CharacterRemoved?.Invoke(); return(IntPtr.Zero); } char ch = VkToChar.GetChar(vkCode, currentLang); bool cond1 = (lastWindow != null) && (!currentWindow.Equals(lastWindow)); bool cond2 = (lastLang != 0) && (currentLang != lastLang); bool terminateWord = cond1 || cond2; if (terminateWord) { Console.WriteLine("{0} {1}", cond1, cond2); } bool block = false; if (terminateWord) { WordActionHappened?.Invoke(WordAction.WordTerminated); } if (vkCode == tabCode) { block = AutoCompleteRequested != null?AutoCompleteRequested() : false; } else if (endCodes.Contains(vkCode)) { WordActionHappened?.Invoke(WordAction.WordCompleted); } else if (ch != 0) { CharacterAdded?.Invoke(ch); } else { WordActionHappened?.Invoke(WordAction.WordTerminated); } lastLang = currentLang; lastWindow = currentWindow; if (block) { return((IntPtr)1); } else { return(IntPtr.Zero); } }