public void SendTimeCommand(string mac, string time, string buffer, CommandTypes type)
        {
            TimeCommand tc = new TimeCommand(type, time, buffer);

            //NetworkCommand nc = new NetworkCommand(type, time, buffer);
            nu.DirectMessage(tc.ToJson(), mac);
        }
Beispiel #2
0
        private static void AJula_OnMessage(object sender, Telegram.Bot.Args.MessageEventArgs e)
        {
            Console.WriteLine($"От {e.Message.Chat.Id}:{e.Message.Text}");
            ICommand command;

            switch (e.Message.Text.ToLower())
            {
            case null: return;

            case "привет":
                command = new HelloCommand();
                command.Execute(e.Message);
                break;

            case "время":
                command = new TimeCommand();
                command.Execute(e.Message);
                break;

            case "погода":
                command = new WeatherCommand();
                command.Execute(e.Message);
                break;

            case "курс":
                command = new CurrencyCommand();
                command.Execute(e.Message);
                break;

            case "создание напоминания":
                Bot.Flag = true;
                break;

            case "газета":
                command = new NewsCommand();
                command.Execute(e.Message);
                break;

            case "почта":
                command = new EmailCommand(e.Message.Chat.Id);
                command.Execute(e.Message);
                break;

            default:
                Bot.AssistantJula.SendTextMessageAsync
                (
                    chatId: e.Message.Chat,
                    text: "Я вас не поняла",
                    replyMarkup: KeyboardTemplates.mainKeyboard
                ).ConfigureAwait(false);
                break;
            }
            if (Bot.Flag)
            {
                command = new ReminderCommand();
                command.Execute(e.Message);
            }
        }
    public void update()
    {
        while (_timeline.Count > 0 && _timer.getElapsedTime() > _timeline.First.Value.time)          //解析所有已到时的计数器
        {
            TimeCommand command = _timeline.First.Value;
            _timeline.RemoveFirst();
            if (command.type.Equals("Enemy_Out"))
            {
                RhodesGame.Instance.battle.actorMgr.createEnemy(command.resource);
            }
        }

        //todo
        //更新费用
        //更新全局buff
    }
Beispiel #4
0
        /*public void ReceiveCommand(NetworkCommand nc)
         * {
         *  switch(nc.Type)
         *  {
         *      case NetworkCommand.CommandTypes.KillKey:
         *          // Disconnects client from server
         *          nt.CloseConnection();
         *          break;
         *      case NetworkCommand.CommandTypes.StartTime:
         *          // Starts time and session
         *          // nc.Message = time   nc.Value = buffer
         *          StartTimeCmd(nc.Message, nc.Value);
         *          break;
         *      case NetworkCommand.CommandTypes.PauseTime:
         *          // Pauses session
         *          // nc.Message = time
         *          PauseTimeCmd(nc.Message);
         *          break;
         *      case NetworkCommand.CommandTypes.StopTime:
         *          // Stops session
         *          nt.Sim.TM.StopTime();
         *          break;
         *      case NetworkCommand.CommandTypes.KeepAlive:
         *          // Restarts KeepAlive thread on client side
         *          nt.RestartKeepAliveThread();
         *          break;
         *      case NetworkCommand.CommandTypes.SimBookingInfoUpdate:
         *          // Updates booking info with next scheduled session
         *          // 1 = mac, 2 = next reservation name, 3 = next reservation time, 4 = start time (long), 5 = force update (bool)
         *          // nc.Message = split string of above values
         *          // 0 = nextReservationName, 1 = nextReservationTime, 2 = startTime (long), 3 = forceUpdate (bool)
         *          string[] msg = nc.Message.Split('~');
         *          OnNextBookingUpdateEvent(new NextBookingUpdatedEventArgs(nc.MacAddress, msg[0], msg[1], long.Parse(msg[2]), bool.Parse(msg[3])));
         *          break;
         *      case NetworkCommand.CommandTypes.SimInfoUpdate:
         *          // Updates sim nickname and/or model
         *          // nc.Message = nickname   nc.Value = model
         *          OnSimInfoUpdateEvent(new SimInfoUpdateEventArgs(nc.Message, nc.Value));
         *          break;
         *      default:
         *          // Catch-all
         *          break;
         *  }
         * }*/

        public void ReceiveCommand(MessageInterface m)
        {
            switch (m.Type)
            {
            case "KillKey":
                nt.CloseConnection();
                break;

            case "TimeCommand":
                TimeCommand tc = (TimeCommand)m;
                switch (tc.SubType)
                {
                case "StartTime":
                    StartTimeCmd(tc.Time, tc.Buffer);
                    break;

                case "PauseTime":
                    PauseTimeCmd(tc.Time);
                    break;

                case "StopTime":
                    nt.Sim.TM.StopTime();
                    break;
                }
                break;

            case "Ping":
                nt.RestartKeepAliveThread();
                break;

            case "BookingInfoUpdate":
                BookingInfoUpdate biu = (BookingInfoUpdate)m;
                OnNextBookingUpdateEvent(new NextBookingUpdatedEventArgs("mac", biu.DisplayName, biu.Time, biu.StartTime, biu.ForceUpdate));
                break;

            case "SimInfoUpdate":
                SimInfoUpdate siu = (SimInfoUpdate)m;
                OnSimInfoUpdateEvent(new SimInfoUpdateEventArgs(siu.NickName, siu.Model));
                break;

            default:
                // catch-all
                break;
            }
        }
        public void Execute(TimeCommand _)
        {
            if (Connection == null)
            {
                Console.WriteLine("There is no connection to server!");

                return;
            }

            var request = new Commands.Command()
            {
                CommandType = CommandType.TimeRequest
            };

            Connection.Send(request);
            var response = Connection.Receive().Deserialize <TextCommand>();

            Console.WriteLine(response.Text);
        }
Beispiel #6
0
    private static void DestroyFrameWorkEvent(int lv)
    {
        if (Schedule.mIns != null)
        {
            Schedule.mIns.Destroy();
        }

        if (GameSceneCtr.mIns != null)
        {
            GameSceneCtr.mIns.Destroy();
        }

        if (GameUIControl.mIns != null)
        {
            GameUIControl.mIns.Destroy();
        }


        if (KObjectPool.mIns != null)
        {
            KObjectPool.mIns.Clear();
        }

        if (GameSyncCtr.mIns != null)
        {
            GameSyncCtr.mIns.EndSync();
        }


        FrameCommand.Destroy();
        WaitTaskCommand.Destroy();
        TimeCommand.Destroy();

        FrameworkAttRegister.DestroyAttEvent(MainLoopEvent.Start, typeof(WaitTaskCommand), "PreLoad");
        FrameworkAttRegister.DestroyAttEvent(MainLoopEvent.Start, typeof(TimeCommand), "PreLoad");
        FrameworkAttRegister.DestroyAttEvent(MainLoopEvent.Start, typeof(FrameCommand), "PreLoad");
        FrameworkAttRegister.DestroyAttEvent(MainLoopEvent.Start, typeof(BundlePathConvert), "PreLoad");
        FrameworkAttRegister.DestroyAttEvent(MainLoopEvent.Start, typeof(GenericParams), "Preload");
        FrameworkAttRegister.DestroyAttEvent(MainLoopEvent.Start, typeof(SimpleParams), "Preload");
        FrameworkAttRegister.DestroyAttEvent(MainLoopEvent.OnDestroy, typeof(FrameWorkConfig), "DestroyFrameWorkEvent");
    }
Beispiel #7
0
        static void Main(string[] args)
        {
            string url  = "irc.chat.twitch.tv";
            int    port = 80;

            string user       = "******";
            string oAuthToken = System.IO.File.ReadAllText(@"token.txt"); // token.txt must be in the same folder as EXE
            string channel    = "lobosjr";

            //Set up one IrcClient, only one is required it allows better cooldown managerment and traffic will
            //never cause this code to run slower then any twitch cool down for bots.
            TwitchClientFactory icf    = new TwitchClientFactory();
            ITwitchClient       client = icf.create(url, port, user, oAuthToken, channel, 600,
                                                    new OperationRequestEventRaiser(), new PrivMessageEventRaiser(),
                                                    new WhisperMessageEventRaiser());

            client.DefaultMessageHandler += (o, e) =>
            {
                Console.WriteLine(string.Format("System: {0}", e.Raw));
            };

            //Set up Legacy Item -> IEquipment converter.
            LegacyItemEquipmentConverter liec = new LegacyItemEquipmentConverter();
            //Set up Equipment repository, if legacy then this will load all items from old files and convert them
            //into IEquipment in memory.
            IEquipmentRepository equipmentRepository = LegacyEquipmentRepository
                                                       .getInstance(liec, LegacyEquipmentRepository.LEGACY_ITEM_BRIDGE_FILE_PATH,
                                                                    LegacyEquipmentRepository.LEGACY_ITEM_PREFIX_FILE_PATH);

            //Set up Player Repository, Factory and default ILevelObservers
            ILevelObserver levelUpNotifier = new LevelupNotifier(client);
            PlayerFactory  pf = new PlayerFactory(3, 20, levelUpNotifier);
            ILevelObserver classChoiceNotifier = new ClassChoiceNotifier(client, pf, 3);

            pf.GetCurrentDefaultObservers().Add(classChoiceNotifier);
            IPlayerRepository playerRepo = LegacyPlayerRepository.getInstance(3, 20, pf,
                                                                              equipmentRepository, LegacyPlayerRepository.LEGACY_USER_COINS_FILE_PATH,
                                                                              LegacyPlayerRepository.LEGACY_USER_XP_FILE_PATH,
                                                                              LegacyPlayerRepository.LEGACY_USER_CLASS_FILE_PATH, "players.json");


            //Set up Adventure repository.
            IAdventureRepository adventureRepository = LegacyAdventureRepository
                                                       .getInstance(LegacyAdventureRepository.LEGACY_DUNGEON_BRIDGE_FILE_PATH,
                                                                    LegacyAdventureRepository.LEGACY_DUNGEON_FILE_PATH_PREFIX, equipmentRepository);

            //Set up Adventure manager who's Run() func should be used to run adventures on a daemon thread
            IAdventureManager adventureManager = new AdventureManager(client, 3);

            new Thread(() =>
            {
                Thread.CurrentThread.Name         = "Adventure Manager";
                Thread.CurrentThread.IsBackground = true;
                adventureManager.Run();
            }).Start();
            //Set up Party Pool, this keeps track of current parties.
            IPartyPool partyPool = new PartyPool(client);
            //Set up Group finder, use the current adventure managers queue. Decide party size capacity for
            // group finder.
            GroupFinderFactory gff         = new GroupFinderFactory();
            IGroupFinder       groupFinder = gff.Create(partyPool, 3, adventureRepository,
                                                        adventureManager);

            //Set up FutureTask Registry which will keep track of time based operations
            FutureTaskRegistry futureTaskRegistry = new FutureTaskRegistry();

            //Set up Custom Command Factory and Repository for the Command Manager allowing
            //for saved custom commands to be used aswell as providing capability for new
            //custom commands to be created from chat(broadcaster/mod only).
            CustomCommandFactory    ccf            = new CustomCommandFactory();
            CustomCommandRepository ccr            = new CustomCommandRepository();
            CommandManager          commandManager = new CommandManager(client, ccf, ccr);

            //Initialise all commands to be added to the command manager, seperated by
            //the source of the request, either PRVMSG or WHISPER.
            #region Initialisation of Commands

            #region General Commands

            UptimeCommand          uptime       = new UptimeCommand();
            Command <IPrivRequest> broadcasting = new BroadcastingFlagCommand(user, playerRepo,
                                                                              pf, uptime, client, futureTaskRegistry, 1, 3, 2, TimeSpan.FromMinutes(30));
            Command <IPrivRequest> time     = new TimeCommand();
            Command <IPrivRequest> playlist = new PlaylistCommand("http://open.spotify.com/user/1251282601/playlist/2j1FVSjJ4zdJiqGQgXgW3t");
            Command <IPrivRequest> opinion  = new OpinionCommand();
            Command <IPrivRequest> pun      = new PunCommand();
            Command <IPrivRequest> quote    = new QuoteCommand();
            Command <IPrivRequest> raffle   = new RaffleCommand(client, 5, futureTaskRegistry);

            #endregion

            #region RPG Commands

            #region General

            Command <IWhisperRequest> stats     = new StatsCommand(pf, playerRepo);
            Command <IWhisperRequest> inventory = new InventoryCommand(pf, playerRepo);
            Command <IWhisperRequest> item      = new ItemCommand(equipmentRepository, pf, playerRepo);
            Command <IWhisperRequest> equip     = new EquipCommand(equipmentRepository, pf, playerRepo);
            Command <IWhisperRequest> unequip   = new UnequipCommand(equipmentRepository, pf,
                                                                     playerRepo);
            Command <IWhisperRequest> shop        = new ShopCommand();
            Command <IWhisperRequest> classChoice = new ClassChoice(pf, playerRepo, 3);
            Command <IWhisperRequest> gloat       = new GloatCommand(client, pf, playerRepo);
            Command <IWhisperRequest> respec      = new RespecCommand(pf, playerRepo);
            Command <IWhisperRequest> daily       = new DailyCommand(pf, playerRepo);
            Command <IWhisperRequest> queue       = new QueueCommand(groupFinder, pf, playerRepo);
            Command <IWhisperRequest> leaveQueue  = new LeaveQueueCommand(groupFinder, pf, playerRepo);
            Command <IWhisperRequest> queueTime   = new QueueTimeCommand(groupFinder, pf, playerRepo);

            #endregion

            #region Party Commands

            Command <IWhisperRequest> createParty = new CreatePartyCommand(partyPool, pf,
                                                                           playerRepo);
            Command <IWhisperRequest> pendingInvite = new PendingInvite(partyPool, pf, playerRepo);
            Command <IWhisperRequest> leaveParty    = new LeavePartyCommand(pf, playerRepo);

            #region Party Leader Commands

            Command <IWhisperRequest> partyAdd   = new AddPartyCommand(client, pf, playerRepo);
            Command <IWhisperRequest> partyKick  = new KickPartyCommand(client, pf, playerRepo);
            Command <IWhisperRequest> partyStart = new StartPartyCommand(groupFinder, pf,
                                                                         playerRepo);
            Command <IWhisperRequest> partyPromote = new PromotePartyCommand(client, pf,
                                                                             playerRepo);

            #endregion

            #endregion

            #region Broadcaster only

            Command <IWhisperRequest> addPlayerXp    = new AddPlayerXP(pf, playerRepo);
            Command <IWhisperRequest> addPlayerCoin  = new AddPlayerCoin(pf, playerRepo);
            Command <IWhisperRequest> setPlayerLevel = new SetPlayerLevel(pf, playerRepo);

            #endregion

            #endregion

            #endregion

            commandManager.AddAll(uptime, broadcasting, time, playlist, opinion, pun, quote,
                                  raffle);
            commandManager.AddAll(stats, inventory, item, equip, unequip, shop, classChoice,
                                  gloat, respec, daily, queue, leaveQueue, queueTime, createParty, pendingInvite,
                                  leaveParty, partyAdd, partyKick, partyStart, partyPromote,
                                  addPlayerXp, addPlayerCoin, setPlayerLevel);

            //Provide Handles for events raised by client, multiple handles can be added
            //allow for parsing of PRVMSG chat for mirroring certain messages.
            #region Client Event Handling

            client.AddOperationHandler    += commandManager.Handle;
            client.CancelOperationHandler += commandManager.Handle;
            client.DeleteOperationHandler += commandManager.Handle;
            client.EditOperationHandler   += commandManager.Handle;
            client.InfoOperationHandler   += commandManager.Handle;

            client.PrivHandler += (o, e) =>
            {
                Console.WriteLine(string.Format("{0}: {1}", e.User, e.Message));
            };
            client.PrivRequestHandler += commandManager.Handle;

            client.WhisperHandler += (o, e) =>
            {
                Console.WriteLine(string.Format("Whisper {0}: {1}", e.User, e.Message));
            };
            client.WhisperRequestHandler += commandManager.Handle;



            #endregion

            //new thread for sending messages back to twitch server.
            new Thread(() =>
            {
                Thread.CurrentThread.Name         = "Twitch Client";
                Thread.CurrentThread.IsBackground = true;
                client.Run();
            }).Start();



            futureTaskRegistry.Run();
        }