예제 #1
0
 public void LockMessageType(Constant.enumMessage msgTypeID)
 {
     if (m_MsgLockables.Contains(msgTypeID) && !m_LockList.Contains(msgTypeID))
     {
         m_LockList.Add(msgTypeID);
     }
 }
예제 #2
0
        private SFMLGraphics2D()
        {
            m_PostOffice = null;
            m_RenderWindow = null;
            m_SpriteManager = null;
            m_GraphicsSettings = null;
            m_ModuleID = Constant.enumModuleID.GRAPHICS;
            m_MsgTypeArray = new Constant.enumMessage[]
            {
                Constant.enumMessage.INITIALISE,
                Constant.enumMessage.UPDATE,
                Constant.enumMessage.DRAW,
                Constant.enumMessage.CLOSING,

                Constant.enumMessage.LOAD_TEXTURES,
                Constant.enumMessage.UPDATE_GRAPHICS_SETTINGS,
                Constant.enumMessage.SWITCH_SPRITES_DRAW_STATUS,

                Constant.enumMessage.GET_GRAPHICS_SETTINGS,
                Constant.enumMessage.SEND_GAMEOBJECT,

                Constant.enumMessage.SEND_SPRITE_COMPONENTS,
                Constant.enumMessage.SEND_POSITION_COMPONENTS,
                Constant.enumMessage.SEND_TEXTURE_IDS,
                Constant.enumMessage.SEND_COMPONENTS,
                Constant.enumMessage.SEND_GAMEOBJECT,
                Constant.enumMessage.SEND_KEYBOARD_EVENT_HANDLER,
                Constant.enumMessage.SEND_MOUSE_BUTTON_EVENT_HANDLER,
                Constant.enumMessage.SEND_MOUSE_MOVE_EVENT_HANDLER,
                Constant.enumMessage.SEND_MOUSE_WHEEL_EVENT_HANDLER,
                Constant.enumMessage.SEND_GAMEOBJECTCOMPONENTS
            };
        }
예제 #3
0
 public void UnLockMessageType(Constant.enumMessage msgTypeID)
 {
     if (m_MsgLockables.Contains(msgTypeID))
     {
         m_LockList.Remove(msgTypeID);
     }
 }
예제 #4
0
 protected AIAgent(IPostOffice postOff)
 {
     m_PostOffice   = postOff;
     m_ModuleID     = Constant.enumModuleID.AI;
     m_MsgTypeArray = new Constant.enumMessage[]
     {
         Constant.enumMessage.INITIALISE,
         Constant.enumMessage.UPDATE,
     };
 }
예제 #5
0
 protected AIAgent(IPostOffice postOff)
 {
     m_PostOffice = postOff;
     m_ModuleID = Constant.enumModuleID.AI;
     m_MsgTypeArray = new Constant.enumMessage[]
     {
         Constant.enumMessage.INITIALISE,
         Constant.enumMessage.UPDATE,
     };
 }
예제 #6
0
 public void RemoveMessage(Constant.enumMessage msgTypeID, Constant.enumModuleID moduleID, Boolean command = true)
 {
     //m_LetterBoxes[moduleID].Remove(m_LetterBoxes[moduleID].Where(msg => msg.m_MsgType.m_MsgTypeID == msgTypeID).FirstOrDefault());
     IMessage[] msgArray = m_LetterBoxes[moduleID].Where(msg => msg.m_MsgType.m_MsgTypeID == msgTypeID && (command ? msg.m_MsgType.m_Command
                                                                                                                    : !msg.m_MsgType.m_Command)).ToArray();
     foreach (IMessage msg in msgArray)
     {
         m_LetterBoxes[moduleID].Remove(msg);
     }
     //throw new NotImplementedException();
 }
예제 #7
0
        public void RequestData <T>(Constant.enumMessage msgTypeID, Constant.enumMessage recieveMsgTypeID, Object[] data = null)
        {
            m_TempMsgTypeList.Add(recieveMsgTypeID);

            SendData(msgTypeID, data);

            Object[] objArray = m_PostOffice.GetMessageObjects(m_ModuleID, recieveMsgTypeID);

            T[] TArray = Methods.GetObjectArrayOf <T>(objArray);

            m_TempMsgTypeList.Clear();
        }
예제 #8
0
 protected GameCommand(IGame game)
 {
     m_Game            = game;
     m_ModuleID        = Constant.enumModuleID.GAMECOMMAND;
     m_TempMsgTypeList = new List <Constant.enumMessage>();
     m_MsgTypeArray    = new Constant.enumMessage[]
     {
         Constant.enumMessage.INITIALISE,
         Constant.enumMessage.DRAW,
         Constant.enumMessage.UPDATE,
         Constant.enumMessage.CLOSING,
     };
 }
예제 #9
0
        public static MessageType Instance(Constant.enumMessage iD, Boolean command)
        {
            if (m_InstanceList == null)
            {
                m_InstanceList = new List <MessageType>();
            }
            if (!m_InstanceList.Any(x => x.m_MsgTypeID == iD && x.m_Command == command))
            {
                m_InstanceList.Add(new MessageType(iD, command));
            }

            return(m_InstanceList.FirstOrDefault(x => x.m_MsgTypeID == iD && x.m_Command == command));
        }
예제 #10
0
 protected PostOffice(IObserver observer)
 {
     m_Observer     = observer;
     m_POBox        = new List <IMessage>();
     m_LetterBoxes  = new Dictionary <Constant.enumModuleID, List <IMessage> >();
     m_LockList     = new List <Constant.enumMessage>();
     m_MsgLockables = new Constant.enumMessage[]
     {
         Constant.enumMessage.INITIALISE,
         Constant.enumMessage.DRAW,
         Constant.enumMessage.UPDATE,
     };
     //m_ModuleMsgTypeList = new Dictionary<Constant.enumModuleID, List<Constant.enumMessage>>();
 }
예제 #11
0
 protected PostOffice(IObserver observer)
 {
     m_Observer = observer;
     m_POBox = new List<IMessage>();
     m_LetterBoxes = new Dictionary<Constant.enumModuleID, List<IMessage>>();
     m_LockList = new List<Constant.enumMessage>();
     m_MsgLockables = new Constant.enumMessage[]
     {
         Constant.enumMessage.INITIALISE,
         Constant.enumMessage.DRAW,
         Constant.enumMessage.UPDATE,
     };
     //m_ModuleMsgTypeList = new Dictionary<Constant.enumModuleID, List<Constant.enumMessage>>();
 }
예제 #12
0
 protected Physics(IPostOffice postOffice)
 {
     collisions     = new Dictionary <int, List <int> >();
     m_ModuleID     = Constant.enumModuleID.PHYSICS;
     m_PostOffice   = postOffice;
     m_MsgTypeArray = new Constant.enumMessage[]
     {
         Constant.enumMessage.UPDATE,
         Constant.enumMessage.INITIALISE,
         Constant.enumMessage.SEND_COLLISIONDETECTIONDATA,
         Constant.enumMessage.SEND_POSITIONCOMPONENTS,
         Constant.enumMessage.SEND_COMPONENTS,
         Constant.enumMessage.COLLISIONDETECTION,
     };
 }
예제 #13
0
 protected Physics(IPostOffice postOffice)
 {
     collisions = new Dictionary<int, List<int>>();
     m_ModuleID = Constant.enumModuleID.PHYSICS;
     m_PostOffice = postOffice;
     m_MsgTypeArray= new Constant.enumMessage[]
     {
         Constant.enumMessage.UPDATE,
         Constant.enumMessage.INITIALISE,
         Constant.enumMessage.SEND_COLLISIONDETECTIONDATA,
         Constant.enumMessage.SEND_POSITIONCOMPONENTS,
         Constant.enumMessage.SEND_COMPONENTS,
         Constant.enumMessage.COLLISIONDETECTION,
     };
 }
예제 #14
0
 protected ScriptController(IPostOffice postOffice)
 {
     m_ModuleID     = Constant.enumModuleID.SCRIPTCONTROLLER;
     m_PostOffice   = postOffice;
     m_MsgTypeArray = new Constant.enumMessage[]
     {
         Constant.enumMessage.UPDATE,
         Constant.enumMessage.INITIALISE,
         Constant.enumMessage.DRAW,
         Constant.enumMessage.COLLISIONDETECTION,
         Constant.enumMessage.SEND_GAMEOBJECT,
     };
     m_TempMsgTypeList  = new List <Constant.enumMessage>();
     m_GameObjectIdList = new List <int>();
     scriptList         = new List <IScript>();
 }
예제 #15
0
 protected SFMLInput()
 {
     m_PostOffice          = null;
     m_ModuleID            = Constant.enumModuleID.INPUT;
     m_PressedKeys         = new List <Constant.enumKey>();
     m_PressedMouseButtons = new List <Constant.enumMouseButton>();
     m_MousePosition       = new Vector2();
     m_MouseWheelDelta     = 0;
     m_MsgTypeArray        = new Constant.enumMessage[]
     {
         Constant.enumMessage.INITIALISE,
         Constant.enumMessage.UPDATE,
         Constant.enumMessage.GET_INPUT_EVENT_HANDLERS,
         Constant.enumMessage.GET_MOUSE_POSITION,
         Constant.enumMessage.GET_PRESSED_KEYS,
         Constant.enumMessage.GET_PRESSED_MOUSEBUTTONS,
         Constant.enumMessage.GET_MOUSE_WHEEL_DELTA,
     };
 }
예제 #16
0
        protected SFMLInput()
        {
            m_PostOffice = null;
            m_ModuleID = Constant.enumModuleID.INPUT;
            m_PressedKeys = new List<Constant.enumKey>();
            m_PressedMouseButtons = new List<Constant.enumMouseButton>();
            m_MousePosition = new Vector2();
            m_MouseWheelDelta = 0;
            m_MsgTypeArray = new Constant.enumMessage[]
            {
                Constant.enumMessage.INITIALISE,
                Constant.enumMessage.UPDATE,
                Constant.enumMessage.GET_INPUT_EVENT_HANDLERS,
                Constant.enumMessage.GET_MOUSE_POSITION,
                Constant.enumMessage.GET_PRESSED_KEYS,
                Constant.enumMessage.GET_PRESSED_MOUSEBUTTONS,
                Constant.enumMessage.GET_MOUSE_WHEEL_DELTA,

            };
        }
예제 #17
0
 public void SendMessage(Constant.enumMessage msgTypeID, Object[] data = null, Boolean command = true)
 {
     if (command)
     {
         IMessage msg2 = new Message(msgTypeID, true, null);
         m_POBox.Add(msg2);
     }
     if (data != null)
     {
         IMessage msg = new Message(msgTypeID, false, data);
         m_POBox.Add(msg);
     }
     if (data == null && !command)
     {
         throw new ApplicationException();
     }
     m_Observer.Notify(true);
     m_POBox.Clear();
     if (command)
     {
         m_Observer.Notify(false);
     }
 }
예제 #18
0
 protected MessageType(Constant.enumMessage msgTypeID, Boolean command)
 {
     m_MsgTypeID = msgTypeID;
     m_Command   = command;
 }
예제 #19
0
 public Message(Constant.enumMessage msgTypeID, Boolean command = false, Object[] data = null)
 {
     m_MsgType = MessageType.Instance(msgTypeID, command);
     m_Data    = data;
 }
예제 #20
0
        public T[] RequestData <T>(Constant.enumMessage msgTypeID, Object[] data = null)
        {
            Constant.enumMessage recieveMsgTypeID = Constant.enumMessage.NULL;
            switch (msgTypeID)
            {
            case Constant.enumMessage.GET_GAMEOBJECT:
                recieveMsgTypeID = Constant.enumMessage.SEND_GAMEOBJECT;
                break;

            case Constant.enumMessage.GET_COMPONENTS:
                recieveMsgTypeID = Constant.enumMessage.SEND_COMPONENTS;
                break;

            case Constant.enumMessage.GET_GAMEOBJECTCOMPONENTS:
                recieveMsgTypeID = Constant.enumMessage.SEND_GAMEOBJECTCOMPONENTS;
                break;

            case Constant.enumMessage.GET_GAMEOBJECTCOMPONENTS_BY_ID:
                recieveMsgTypeID = Constant.enumMessage.SEND_GAMEOBJECTCOMPONENTS;
                break;

            case Constant.enumMessage.LOAD_TEXTURES:
                recieveMsgTypeID = Constant.enumMessage.SEND_TEXTURE_IDS;
                break;

            case Constant.enumMessage.GET_PRESSED_MOUSEBUTTONS:
                recieveMsgTypeID = Constant.enumMessage.SEND_PRESSED_MOUSEBUTTONS;
                break;

            case Constant.enumMessage.GET_PRESSED_KEYS:
                recieveMsgTypeID = Constant.enumMessage.SEND_PRESSED_KEYS;
                break;

            case Constant.enumMessage.GET_MOUSE_POSITION:
                recieveMsgTypeID = Constant.enumMessage.SEND_MOUSE_POSITION;
                break;

            case Constant.enumMessage.GET_MOUSE_WHEEL_DELTA:
                recieveMsgTypeID = Constant.enumMessage.SEND_MOUSE_WHEEL_DELTA;
                break;

            case Constant.enumMessage.GET_GRAPHICS_SETTINGS:
                recieveMsgTypeID = Constant.enumMessage.SEND_GRAPHICS_SETTINGS;
                break;
            }

            if (recieveMsgTypeID != Constant.enumMessage.NULL)
            {
                m_TempMsgTypeList.Add(recieveMsgTypeID);

                SendData(msgTypeID, data);

                Object[] objArray = m_PostOffice.GetMessageObjects(m_ModuleID, recieveMsgTypeID);

                T[] TArray = Methods.GetObjectArrayOf <T>(objArray);

                m_TempMsgTypeList.Clear();
                return(TArray);
            }
            else
            {
                throw new ApplicationException();
            }
        }
예제 #21
0
 public void SendDataForObject <T>(Constant.enumMessage msgTypeID, String objectKey, T data)
 {
     T[] TArray = { data };
     SendData(msgTypeID, new Object[] { objectKey, TArray });
 }
예제 #22
0
 public void SendDataForObject <T>(Constant.enumMessage msgTypeID, String objectKey, T[] data)
 {
     SendData(msgTypeID, new Object[] { objectKey, data });
 }
예제 #23
0
 public void SendData(Constant.enumMessage msgTypeID, Object[] data = null)
 {
     m_PostOffice.SendMessage(msgTypeID, data);
 }
예제 #24
0
 public Object[] GetMessageObjects(Constant.enumModuleID moduleID, Constant.enumMessage msgID)
 {
     IMessage[] result = m_LetterBoxes[moduleID].Where(msg => msgID == msg.m_MsgType.m_MsgTypeID).ToArray();
     m_LetterBoxes[moduleID] = m_LetterBoxes[moduleID].Except(result).ToList();
     return(result.Select(msg => msg.m_Data).ToArray());
 }