Exemplo n.º 1
0
        // Called when the heroes are detected
        // arendata: As before
        // heroname0: name of hero 0
        // heroname1: name of hero 1
        // heroname2: name of hero 2
        public override async void HeroesDetected(ArenaHelper.Plugin.ArenaData arenadata, string heroname0, string heroname1, string heroname2)
        {
            // Do something with the information
            Logger.WriteLine("Heroes Detected: " + heroname0 + ", " + heroname1 + ", " + heroname2);
            //var res = await MakeApiCall(host+ "/update/detected/" + heroname0+"/"+heroname1+"/"+heroname2);

        }
 void OnDestroy()
 {
     if (arenaHelperInstance != null)
     {
         arenaHelperInstance.dipose();
         arenaHelperInstance = null;
     }
 }
Exemplo n.º 3
0
 // Called when a card is picked
 // arendata: As before
 // pickindex: index of the picked card in the range -1 to 2, if -1, no valid pick was detected
 // card: card information, null if invalid card
 public override void CardPicked(ArenaHelper.Plugin.ArenaData arenadata, int pickindex, Card card)
 {
     // Do something with the information
     string cardname = "";
     if (card != null)
     {
         cardname = card.Name;
     }
     Logger.WriteLine("Card Picked: " + cardname);
 }
Exemplo n.º 4
0
        // Called when three new cards are detected
        // arenadata: The previously detected cards, picked cards and heroes
        // newcards: List of 3 detected cards
        // defaultvalues: List of 3 tier values for the detected cards
        // Return a list of 3 card values and an optional 4th advice value
        public override async Task<List<string>> GetCardValues(ArenaHelper.Plugin.ArenaData arenadata, List<Card> newcards, List<string> defaultvalues)
        {
            List<string> values = new List<string>();

            // Add a test delay to simulate an API call
            //await Task.Delay(1000);
            
            // Add the three card values
            for (int i = 0; i < 3; i++)
            {
                // Add the prefix "p" to the default values as a test
                values.Add(defaultvalues[i]);
            }

            // Optionally add an advice as a 4th list element
            //values.Add("I don't know, pick one!");

            return values;
        }
Exemplo n.º 5
0
 public void HeroPicked(ArenaHelper.Plugin.ArenaData arenadata, string heroname)
 {
     foreach (var plugin in plugins)
     {
         plugin.HeroPicked(arenadata, heroname);
         return;
     }
 }
Exemplo n.º 6
0
 public void HeroesDetected(ArenaHelper.Plugin.ArenaData arenadata, string heroname0, string heroname1, string heroname2)
 {
     foreach (var plugin in plugins)
     {
         plugin.HeroesDetected(arenadata, heroname0, heroname1, heroname2);
         return;
     }
 }
Exemplo n.º 7
0
 public List<string> GetCardValues(ArenaHelper.Plugin.ArenaData arenadata, List<Card> newcards, List<string> defaultvalues)
 {
     foreach (var plugin in plugins)
     {
         return plugin.GetCardValues(arenadata, newcards, defaultvalues);
     }
     return null;
 }
Exemplo n.º 8
0
        private IEnumerator CoJoin(Action <bool> callback)
        {
            Task t = Task.Run(async() =>
            {
                await _hub.JoinAsync();
            });

            yield return(new WaitUntil(() => t.IsCompleted));

            if (t.IsFaulted)
            {
                callback?.Invoke(false);
                yield break;
            }

            Connected = true;

            // 에이전트의 상태를 한 번 동기화 한다.
            Currency goldCurrency = new GoldCurrencyState(
                (Dictionary)GetState(GoldCurrencyState.Address)
                ).Currency;

            States.Instance.SetAgentState(
                GetState(Address) is Bencodex.Types.Dictionary agentDict
                    ? new AgentState(agentDict)
                    : new AgentState(Address));
            States.Instance.SetGoldBalanceState(
                new GoldBalanceState(Address, GetBalance(Address, goldCurrency)));

            // 랭킹의 상태를 한 번 동기화 한다.
            for (var i = 0; i < RankingState.RankingMapCapacity; ++i)
            {
                var address  = RankingState.Derive(i);
                var mapState = GetState(address) is Bencodex.Types.Dictionary serialized
                    ? new RankingMapState(serialized)
                    : new RankingMapState(address);
                States.Instance.SetRankingMapStates(mapState);
            }

            // 상점의 상태를 한 번 동기화 한다.
            States.Instance.SetShopState(
                GetState(ShopState.Address) is Bencodex.Types.Dictionary shopDict
                    ? new ShopState(shopDict)
                    : new ShopState());

            if (GetState(GameConfigState.Address) is Dictionary configDict)
            {
                States.Instance.SetGameConfigState(new GameConfigState(configDict));
            }
            else
            {
                throw new FailedToInstantiateStateException <GameConfigState>();
            }

            if (ArenaHelper.TryGetThisWeekState(BlockIndex, out var weeklyArenaState))
            {
                States.Instance.SetWeeklyArenaState(weeklyArenaState);
            }
            else
            {
                throw new FailedToInstantiateStateException <WeeklyArenaState>();
            }

            ActionRenderHandler.Instance.GoldCurrency = goldCurrency;

            // 그리고 모든 액션에 대한 랜더와 언랜더를 핸들링하기 시작한다.
            BlockRenderHandler.Instance.Start(BlockRenderer);
            ActionRenderHandler.Instance.Start(ActionRenderer);
            ActionUnrenderHandler.Instance.Start(ActionRenderer);

            UpdateSubscribeAddresses();
            callback?.Invoke(true);
        }
Exemplo n.º 9
0
 public async void CloseArena(ArenaHelper.Plugin.ArenaData arenadata, ArenaHelper.Plugin.PluginState state)
 {
     foreach (var plugin in plugins)
     {
         plugin.CloseArena(arenadata, state);
         return;
     }
 }
Exemplo n.º 10
0
        // Called when the cards are detected
        // arendata: As before
        // card0: card 0
        // card1: card 1
        // card2: card 2
        public override async void CardsDetected(ArenaHelper.Plugin.ArenaData arenadata, Card card0, Card card1, Card card2)
        {
            // Do something with the information
            Logger.WriteLine("Cards Detected: " + card0.Name + ", " + card1.Name + ", " + card2.Name);
            var res = await MakeApiCall(host + "/update/detected/" + card0.Name + "/" + card1.Name + "/" + card2.Name);

        }
Exemplo n.º 11
0
 // Called when a card is picked
 // arendata: As before
 // pickindex: index of the picked card in the range -1 to 2, if -1, no valid pick was detected
 // card: card information, null if invalid card
 public virtual void CardPicked(ArenaHelper.Plugin.ArenaData arenadata, int pickindex, Card card)
 {
 }
Exemplo n.º 12
0
 // Called when Arena Helper window is closed
 // arendata: As before
 // state: the current state of Arena Helper
 public virtual void CloseArena(ArenaHelper.Plugin.ArenaData arenadata, ArenaHelper.Plugin.PluginState state)
 {
 }
Exemplo n.º 13
0
 // Called when a new arena is started
 // arendata: As before
 public override async void NewArena(ArenaHelper.Plugin.ArenaData arenadata)
 {
     // Do something with the information
     Logger.WriteLine("New Arena: " + arenadata.deckname);
     var res = await MakeApiCall(host + "/update/newarena");
 }
Exemplo n.º 14
0
 // Called when Arena Helper window is closed
 // arendata: As before
 public override async void CloseArena(ArenaHelper.Plugin.ArenaData arenadata, ArenaHelper.Plugin.PluginState state)
 {
     // Closing the window, to maybe resume at a later time
     Logger.WriteLine("Closing");
 }
Exemplo n.º 15
0
        // Called when Arena Helper window is opened
        // arendata: As before
        // state: the current state of Arena Helper
        public override async void ResumeArena(ArenaHelper.Plugin.ArenaData arenadata, ArenaHelper.Plugin.PluginState state)
        {
            Logger.WriteLine("Resuming Arena");
            foreach (var cardid in arenadata.pickedcards)
            {
                Card card = ArenaHelper.Plugin.GetCard(cardid);
                string cardname = "-";
                if (card != null)
                {
                    cardname = card.Name;
                }
                Logger.WriteLine(cardname);
            }

            foreach (var heroname in arenadata.detectedheroes)
            {
                ArenaHelper.Plugin.HeroHashData hero = ArenaHelper.Plugin.GetHero(heroname);
                Logger.WriteLine("Detected hero: " + hero.name);
            }

            if (arenadata.pickedhero != "")
            {
                ArenaHelper.Plugin.HeroHashData hero = ArenaHelper.Plugin.GetHero(arenadata.pickedhero);
                Logger.WriteLine("Picked hero: " + hero.name);
            }

            Logger.WriteLine("State: " + ArenaHelper.Plugin.GetState().ToString());
        }
Exemplo n.º 16
0
 // Called when all cards are picked
 // arendata: As before
 public override async void Done(ArenaHelper.Plugin.ArenaData arenadata)
 {
     // Do something with the information
     Logger.WriteLine("Done");
 }
Exemplo n.º 17
0
        // Called when a card is picked
        // arendata: As before
        // pickindex: index of the picked card in the range -1 to 2, if -1, no valid pick was detected
        // card: card information, null if invalid card
        public override async void CardPicked(ArenaHelper.Plugin.ArenaData arenadata, int pickindex, Card card)
        {
            // Ensure cards are added sequentially
            await mutex.WaitAsync();
            try
            {
                // Do something with the information
                string cardname = "";
                if (card != null)
                {
                    cardname = card.Name;
                }

                int cardcount = arenadata.pickedcards.Count;
                await Task.Delay(1000);

                // Be careful when manipulating values on the ArenaData as they might have changed while making your API calls
                bool changed = cardcount != arenadata.pickedcards.Count;

                Logger.WriteLine("Card Picked: " + cardname);
                // /update/card/:id
                var res = await MakeApiCall(host+ "/update/card/"+cardname);

            }
            finally
            {
                mutex.Release();
            }
        }
Exemplo n.º 18
0
 public void NewArena(ArenaHelper.Plugin.ArenaData arenadata)
 {
     foreach (var plugin in plugins)
     {
         plugin.NewArena(arenadata);
         return;
     }
 }
Exemplo n.º 19
0
 // All virtual functions are optional
 // Called when three new cards are detected
 // arenadata: The previously detected cards, picked cards and heroes
 // newcards: List of 3 detected cards
 // defaultvalues: List of 3 tier values for the detected cards
 // Return a list of 3 card values and an optional 4th advice value
 public virtual List<string> GetCardValues(ArenaHelper.Plugin.ArenaData arenadata, List<Card> newcards, List<string> defaultvalues)
 {
     return null;
 }
Exemplo n.º 20
0
 public void ResumeArena(ArenaHelper.Plugin.ArenaData arenadata, ArenaHelper.Plugin.PluginState state)
 {
     foreach (var plugin in plugins)
     {
         plugin.ResumeArena(arenadata, state);
         return;
     }
 }
Exemplo n.º 21
0
 // Called when a hero is picked
 // arendata: As before
 // heroname: name of the hero
 public virtual void HeroPicked(ArenaHelper.Plugin.ArenaData arenadata, string heroname)
 {
 }
Exemplo n.º 22
0
 // Called when the cards are detected
 // arendata: As before
 // card0: card 0
 // card1: card 1
 // card2: card 2
 public virtual void CardsDetected(ArenaHelper.Plugin.ArenaData arenadata, Card card0, Card card1, Card card2)
 {
 }
Exemplo n.º 23
0
 // Called when Arena Helper window is opened
 // arendata: As before
 // state: the current state of Arena Helper
 public virtual async void ResumeArena(ArenaHelper.Plugin.ArenaData arenadata, ArenaHelper.Plugin.PluginState state) { }
Exemplo n.º 24
0
 // Called when all cards are picked
 // arendata: As before
 public virtual void Done(ArenaHelper.Plugin.ArenaData arenadata)
 {
 }
Exemplo n.º 25
0
 // Called when a hero is picked
 // arendata: As before
 // heroname: name of the hero
 public override async void HeroPicked(ArenaHelper.Plugin.ArenaData arenadata, string heroname)
 {
     // Do something with the information
     Logger.WriteLine("Hero Picked: " + heroname);
     // /update/hero/:id
     var res = await MakeApiCall(host + "/update/hero/"+heroname);
 }
Exemplo n.º 26
0
 // Called when the heroes are detected
 // arendata: As before
 // heroname0: name of hero 0
 // heroname1: name of hero 1
 // heroname2: name of hero 2
 public virtual void HeroesDetected(ArenaHelper.Plugin.ArenaData arenadata, string heroname0, string heroname1, string heroname2)
 {
 }
Exemplo n.º 27
0
 public void CardPicked(ArenaHelper.Plugin.ArenaData arenadata, int pickindex, Card card)
 {
     foreach (var plugin in plugins)
     {
         plugin.CardPicked(arenadata, pickindex, card);
         return;
     }
 }
Exemplo n.º 28
0
 // Called when a new arena is started
 // arendata: As before
 public virtual void NewArena(ArenaHelper.Plugin.ArenaData arenadata)
 {
 }
Exemplo n.º 29
0
 public void CardsDetected(ArenaHelper.Plugin.ArenaData arenadata, Card card0, Card card1, Card card2)
 {
     foreach (var plugin in plugins)
     {
         plugin.CardsDetected(arenadata, card0, card1, card2);
         return;
     }
 }
 void Start()
 {
     arenaHelperInstance = new ArenaHelper(gameObject);
 }
Exemplo n.º 31
0
 public void Done(ArenaHelper.Plugin.ArenaData arenadata)
 {
     foreach (var plugin in plugins)
     {
         plugin.Done(arenadata);
         return;
     }
 }