示例#1
0
 public void Assign(Character character)
 {
     LogEx.Log <FieldSlot>("Assigned character '{0}'", character.name);
     Character          = character;
     Character.Fainted += OnCharacterFainted;
     Character.AssignSlot(this);
     CharacterAdded.InvokeSafe(Character);
 }
示例#2
0
        public bool AddCharacter(Character character)
        {
            var success = Characters.TryAdd(character.Id, character);

            if (success)
            {
                CharacterAdded?.Invoke(this, new CharacterArgs(character));
            }
            return(success);
        }
示例#3
0
        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);
        }
示例#4
0
        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);
            }
        }