/// <summary>
        /// Calculates the U of the facilitated trip
        /// </summary>
        /// <param name="tripChain"></param>
        /// <param name="oldU"></param>
        /// <param name="newU"></param>
        public void CalculateU(ITripChain tripChain, out double oldU, out double newU)
        {
            ITrip       facilitatedTrip     = (ITrip)tripChain["FacilitateTrip"];
            ISharedMode facilitatedTripMode = (ISharedMode)tripChain["SharedMode"];
            ITrip       connectingTrip      = tripChain["ConnectingChain"] as ITrip;

            //the mode data for the facilitated trip
            ModeData facilitatedTripData = ModeData.Get(facilitatedTrip);
            int      indexOfPass         = TashaRuntime.GetIndexOfMode(facilitatedTripMode);
            double   UofAuxiliaryTrip    = CalculateUofAuxTrip(tripChain);

            facilitatedTripData.V[indexOfPass] = facilitatedTripMode.CalculateV(facilitatedTrip);

            newU = facilitatedTripData.U(indexOfPass)
                   + UofAuxiliaryTrip;
            if (facilitatedTrip.Mode == null)
            {
                // if there is no other way
                oldU = float.NegativeInfinity;
            }
            else
            {
                if (connectingTrip == null)
                {
                    oldU = facilitatedTripData.U(TashaRuntime.GetIndexOfMode(facilitatedTrip.Mode));
                }
                else
                {
                    ModeData connectingTripData = ModeData.Get(connectingTrip);
                    oldU = facilitatedTripData.U(TashaRuntime.GetIndexOfMode(facilitatedTrip.Mode))
                           + connectingTripData.U(TashaRuntime.GetIndexOfMode(connectingTrip.Mode));
                }
            }
        }
예제 #2
0
        /// <summary>
        /// Sets the YubiKey connection mode.
        /// </summary>
        /// <param name="modeData">YubiKey mode data</param>
        /// <exception cref="UnexpectedResponseException">Thrown if response from device is invalid.</exception>
        /// <exception cref="ModeSwitchException">Thrown if unsuccessful.</exception>
        public void SetMode(ModeData modeData)
        {
            // Convert data struct to byte array
            int size = Marshal.SizeOf(modeData);

            byte[] apduData = new byte[size];
            IntPtr ptr      = Marshal.AllocHGlobal(size);

            Marshal.StructureToPtr(modeData, ptr, true);
            Marshal.Copy(ptr, apduData, 0, size);
            Marshal.FreeHGlobal(ptr);

            try
            {
                // First try setting OTP mode
                SetModeOTP(apduData);
            }
            catch (Exception)
            {
                try
                {
                    // Finally try setting MGR mode
                    SetModeMGR(apduData);
                }
                catch (Exception)
                {
                    throw new ModeSwitchException("Failed to switch mode.");
                }
            }
        }
예제 #3
0
    // Start is called before the first frame update
    public void SetVectors()
    {
        start.Add(start0);
        start.Add(start1);
        start.Add(start2);
        start.Add(start3);

        d_start.Add(d_start0);
        d_start.Add(d_start1);
        d_start.Add(d_start2);
        d_start.Add(d_start3);

        ofset.Add(new Vector3(cardOffset, 0f));
        ofset.Add(new Vector3(0f, -cardOffset));
        ofset.Add(new Vector3(-cardOffset, 0));
        ofset.Add(new Vector3(0f, cardOffset));

        rotate.Add(new Vector3(0f, 0f, 0f));
        rotate.Add(new Vector3(0f, 0f, 270f));
        rotate.Add(new Vector3(0f, 0f, 180f));
        rotate.Add(new Vector3(0f, 0f, 90f));

        //PhotonView view = GetComponent<PhotonView>();
        md     = GameObject.Find("ModeData").GetComponent <ModeData>();
        player = md.player;

        ShiftList(start);
        ShiftList(d_start);
        ShiftList(ofset);
        ShiftList(rotate);
    }
예제 #4
0
    // Start is called before the first frame update
    void Start()
    {
        ModeData modeData = GameObject.Find("ModeData").GetComponent <ModeData>();

        IsEasy = modeData.IsEasy();
        deck   = GetComponent <ZiziDeck>();

        /*
         * hands = new List<int>[4];
         * originals = new List<int>[4];
         * drawns = new List<int>[4];
         * for (int i = 0; i < 4; i++)
         * {
         *  if (drawns[i] == null) drawns[i] = new List<int>();
         *  else drawns[i].Clear();
         * }
         * grave = new List<int>();
         * CardList();
         * InitBackList(); //orginalBack[cardIndex]でbackIndexを返す、ziziは4
         * Delete();
         * Delete();
         * makeoriginals(); //originals配列を作成
         *                   //Record record = GameObject.Find("GameManager").GetComponent<Record>();
         *                   //record.InitRecord(originals);
         *                   //record.DebugRecord();
         */
    }
예제 #5
0
    public void SetMode(ModeData modeData)
    {
        this.modeData = modeData;

        name.text        = modeData.modeName;
        description.text = modeData.modeDescription;
    }
예제 #6
0
    void Start()
    {
        ModeData modeData = GameObject.Find("ModeData").GetComponent <ModeData>();

        flag  = modeData.GetComponent <ModeData>().IsSolo(); // 的な感じ?
        level = modeData.computerLevel;
    }
예제 #7
0
    public void StartGame(ModeData mode_data)
    {
        currentMode    = mode_data.mode;
        currentSubMode = mode_data.sub_mode;

        //Every game starts from field view
        CameraManager.Instance.ShowField();

        switch (currentMode)
        {
        case GameMode.Practice:
            mode = new PracticeMode();
            break;

        case GameMode.SinglePlayer:
            mode = new SingleMode(currentSubMode, mode_data.teamPlayer, mode_data.teamEnemy);
            break;

        case GameMode.MultiPlayer:
            mode = new MultiOffMode(mode_data.teamPlayer, mode_data.teamEnemy);
            break;

        case GameMode.MultiplayerOnline:
            mode = new MultiOnMode(mode_data.teamPlayer, mode_data.teamEnemy);
            isOnlineGameActive    = true;
            isOnlineScoreRecieved = false;
            isRingStopped         = false;
            break;
        }

        mode.CreateGame();
        GameView.Instance.SwitchPanelGame();
    }
예제 #8
0
        /// <summary>
        /// Generates all feasible sets of modes for the trip chain
        /// </summary>
        /// <param name="chain">The chain to operate on</param>
        public static void GenerateModeSets(this ITripChain chain)
        {
            //initiates the mode set
            ModeSet.InitModeSets( chain );
            ModeData[] Data = new ModeData[chain.Trips.Count];
            // Generate the random terms
            var trips = chain.Trips;
            for ( int i = 0; i < Data.Length; i++ )
            {
                Data[i] = ModeData.Get( trips[i] );
                if ( Data[i] != null )
                {
                    Data[i].GenerateError();
                }
            }
            ModeSet set = ModeSet.Make( chain );
            // launch the recursive version to explore all sets
            GenerateModeSets( chain, Data, set );

            //clear temp var 'mode' that was used in generate mode set algo
            foreach ( var trip in chain.Trips )
            {
                trip.Mode = null;
            }
        }
예제 #9
0
    // Start is called before the first frame update
    void Start()
    {
        ModeData modeData = GameObject.Find("ModeData").GetComponent <ModeData>();

        IsEasy    = modeData.IsEasy();
        deck      = GetComponent <ZiziDeck>();
        hands     = new List <int> [4];
        originals = new List <int> [4];
        drawns    = new List <int> [4];

        for (int i = 0; i < 4; i++)
        {
            if (drawns[i] == null)
            {
                drawns[i] = new List <int>();
            }
            else
            {
                drawns[i].Clear();
            }
        }
        grave = new List <int>();
        CardList();
        InitBackList(); //orginalBack[cardIndex]でbackIndexを返す、ziziは4
        Delete();
        Delete();
        makeoriginals(); //originals配列を作成
        //Record record = GameObject.Find("GameManager").GetComponent<Record>();
        //record.InitRecord(originals);
        //record.DebugRecord();
    }
예제 #10
0
 // Start is called before the first frame update
 void Start()
 {
     guessListIndex = new List <int>();
     sm             = GetComponent <ScoreManagerOnline>();
     tm             = GetComponent <TurnManagerOnline>();
     md             = GameObject.Find("ModeData").GetComponent <ModeData>();
 }
예제 #11
0
        public void ReceiveKey_B_CycleBetweenFields()
        {
            var modesData = new Dictionary <ModeId, ModeData> {
                { ModeId.Help, new ModeData("Name", "Description", "Help", Song.ZeldasLullaby) }
            }.ToImmutableDictionary();

            var        modeData   = new ModeData("", "", "", Song.EmptySong);
            DeskPiMode deskPiMode = new HelpMode(() => null, modeData, modesData);

            Assert.AreEqual(modesData[ModeId.Help].Name, deskPiMode.Text[0].Item1);

            deskPiMode = deskPiMode.ReceiveKey(KeyId.B);
            Assert.AreEqual(modesData[ModeId.Help].Description, deskPiMode.Text[0].Item1);

            deskPiMode = deskPiMode.ReceiveKey(KeyId.B);
            Assert.AreEqual(modesData[ModeId.Help].HelpText, deskPiMode.Text[0].Item1);

            deskPiMode = deskPiMode.ReceiveKey(KeyId.B);
            Assert.AreEqual(modesData[ModeId.Help].Song.Name, deskPiMode.Text[0].Item1);

            deskPiMode = deskPiMode.ReceiveKey(KeyId.B);
            Assert.AreEqual(Song.NotesToString(modesData[ModeId.Help].Song.Notes), deskPiMode.Text[0].Item1);

            deskPiMode = deskPiMode.ReceiveKey(KeyId.B);
            Assert.AreEqual(modesData[ModeId.Help].Name, deskPiMode.Text[0].Item1);
        }
예제 #12
0
            public DataGridViewValues(ModeData modeData)
                : base()
            {
                _modeData = modeData;

                InitializeComponents();
            }
예제 #13
0
    void setCurrentModeLogo()
    {
        string       path    = $"Resources/Graphics/GUI/{ModeData.ModeToString(GameData.CurrentMode)}.png";
        ImageTexture texture = new ImageTexture();

        texture.Load(path);
        modeLogo.Texture = texture;
    }
예제 #14
0
    public void OnSlideCPULevel()
    {
        ModeData modeData = GameObject.Find("ModeData").GetComponent <ModeData>();
        Text     text     = GameObject.Find("SliderText").GetComponent <Text>();

        value = (int)slider.value;
        modeData.computerLevel = value;
        text.text = "cpu level ... " + value;
    }
예제 #15
0
 public void SetMode(string name, ModeData modeData = null)
 {
     if (curentMode != null)
     {
         Destroy(curentMode.gameObject);
     }
     curentMode = Instantiate(gameModes[name]);
     curentMode.InitMode(modeData);
 }
예제 #16
0
    void Start()
    {
        ModeData modeData = GameObject.Find("ModeData").GetComponent <ModeData>();

        flag        = modeData.GetComponent <ModeData>().IsSolo(); // 的な感じ?
        level       = modeData.computerLevel;
        player      = modeData.player;
        numOfPlayer = modeData.numOfPlayer;
        numOfComs   = 4 - numOfPlayer;
    }
예제 #17
0
        public void Text_ReturnsFormattedTime()
        {
            var  now      = DateTime.Now;
            uint ticks    = 0;
            var  modeData = new ModeData("", "", "", Song.EmptySong);
            var  mode     = new TimeMode(() => null, modeData,
                                         () => now, (arg) => new Ticker(arg, ticks));

            Assert.AreEqual($"{now:MM.ddHH.mm}", mode.Text[0].Item1);
        }
예제 #18
0
 public override void InitMode(ModeData previusMode)
 {
     if (previusMode != null)
     {
         preModeName      = previusMode.name;
         preModeHighscore = previusMode.highScore;
         gui.UpdateHighScore(previusMode.highScore);
         gui.UpdateScore(previusMode.score);
     }
 }
예제 #19
0
    public void ChooseMode(ModeData data)
    {
        if (channelInfo.channels[index].channelIsLocked)
        {
            return;
        }

        GameController.instance.game.SetGameMode(data.mode, data.modeValue);
        channelInfo.SetDefaultTeamNumbers(data.defaultTeamNumbers);
        GameController.instance.menuNav.GoToScreen(channelInfo.channels[index].nextMenu);
    }
    public static void CreateMode()
    {
        ModeData asset = ScriptableObject.CreateInstance <ModeData>();

        AssetDatabase.CreateAsset(asset, "Assets/New Mode.asset");
        AssetDatabase.SaveAssets();

        EditorUtility.FocusProjectWindow();

        Selection.activeObject = asset;
    }
예제 #21
0
        public void ReceivedKey_F_GoesToSelectorMode()
        {
            var modesData = new Dictionary <ModeId, ModeData> {
                { ModeId.Dummy1, new ModeData("1", "Description", "Help", Song.ZeldasLullaby) },
                { ModeId.Dummy2, new ModeData("2", "Description", "Help", Song.ZeldasLullaby) },
                { ModeId.Help, new ModeData("3", "Description", "Help", Song.ZeldasLullaby) }
            }.ToImmutableDictionary();

            var        modeData   = new ModeData("", "", "", Song.EmptySong);
            DeskPiMode deskPiMode = new HelpMode(() => null, modeData, modesData, ModeId.Dummy1);

            var deskPiModeN = deskPiMode.ReceiveKey(KeyId.F);

            Assert.IsNull(deskPiModeN);
        }
예제 #22
0
 void Start()
 {
     Debug.Log("zizideck called");
     md = GameObject.Find("ModeData").GetComponent <ModeData>();
     if (!md.IsSolo() && md.IsHost())
     {
         seed = UnityEngine.Random.Range(0, 10000);
         PhotonView view = GetComponent <PhotonView>();
         ShufflePlayers(md.numOfPlayer);
         view.RPC("SendSeed", PhotonTargets.All, seed, md.numOfPlayer, md.playerInfo);
     }
     else if (md.IsSolo())
     {
         Shuffle();
     }
 }
예제 #23
0
    //void Start()
    //{
    //    PhotonNetwork.logLevel = PhotonLogLevel.Full;//情報を全部ください
    //    // Photonに接続する(引数でゲームのバージョンを指定できる)
    //    PhotonNetwork.ConnectUsingSettings(null);
    //}

    // ロビーに入ると呼ばれる
    //void OnJoinedLobby()
    //{
    //    Debug.Log("ロビーに入りました。");
    //    RoomOptions ro = new RoomOptions() { IsVisible = true, MaxPlayers = 4 };//maxPlayerは人数の上限
    //    // ルームに入室する
    //    PhotonNetwork.JoinOrCreateRoom("myRoom", ro, TypedLobby.Default);
    //}

    //// ルームに入室すると呼ばれる
    //void OnJoinedRoom()
    //{
    //hand = GameObject.Find("Hand");
    //Debug.Log("ルームへ入室しました。");

    //}

    void Start()
    {
        // Photonに接続する(引数でゲームのバージョンを指定できる)
        if (PhotonNetwork.connected)
        {
            PhotonNetwork.Disconnect();
        }
        else
        {
            PhotonNetwork.ConnectUsingSettings(null);
        }
        //In = false;
        //Loaded = false;
        md          = GameObject.Find("ModeData").GetComponent <ModeData>();
        md.roomName = "myroom"; //初めに指定できるようにする
    }
예제 #24
0
 void Start()
 {
     Debug.Log("zizideck called");
     md = GameObject.Find("ModeData").GetComponent <ModeData>();
     if (!md.IsSolo() && md.player == 0)
     {
         numOfPlayer = md.numOfPlayer;
         seed        = Random.Range(0, 10000);
         PhotonView view = GetComponent <PhotonView>();
         view.RPC("SendSeed", PhotonTargets.All, seed);
     }
     else if (md.IsSolo())
     {
         Shuffle();
     }
 }
        private double CalculateUofAuxTrip(ITripChain currentTripChain)
        {
            double U = 0;

            for (int i = 0; i < currentTripChain.Trips.Count; i++)
            {
                var      trip = currentTripChain.Trips[i];
                ModeData md   = ModeData.MakeModeData();
                md.Store(trip);
                int indexOfMode = TashaRuntime.GetIndexOfMode(trip.Mode);
                md.V[indexOfMode]     = trip.Mode.CalculateV(trip);
                md.Error[indexOfMode] = this.GetNormal();
                U += md.U(indexOfMode);
            }
            currentTripChain.Attach("U", U);
            return(U);
        }
예제 #26
0
    void Start()
    {
        ModeData modeData = GameObject.Find("ModeData").GetComponent <ModeData>();

        flag        = modeData.GetComponent <ModeData>().IsSolo(); // 的な感じ?
        level       = modeData.computerLevel;
        player      = modeData.player;
        numOfPlayer = modeData.numOfPlayer;
        numOfComs   = 4 - numOfPlayer;

        /*
         * if (numOfPlayer == 1) computerFlags = new bool[4] { false, true, true, true };
         * if (numOfPlayer == 2) computerFlags = new bool[4] { false, true, false, true };
         * if (numOfPlayer == 3) computerFlags = new bool[4] { false, false, false, true };
         * if (numOfPlayer == 4) computerFlags = new bool[4] { false, false, false, false };
         */
    }
예제 #27
0
    public void SetMode(int modeIndex, int option)
    {
        switch (modeIndex)
        {
        case 0:
            _mode = new TimeModeData(option);
            break;

        case 1:
            _mode = new SurvivalModeData(option);
            break;

        default:
            throw new System.InvalidOperationException("Mode does not exist");
        }
        ;
    }
예제 #28
0
    public void OnModeUpdate(ModeData modeData, ModeSettings modeSettings)
    {
        text.text = modeData.modeName;

        foreach (Transform child in valueHolder.transform)
        {
            Destroy(child.gameObject);
        }

        foreach (Value value in modeSettings.values)
        {
            ValueEntry valueEntry = Instantiate(this.valueEntry) as ValueEntry;

            valueEntry.SetValue(value);
            valueEntry.transform.SetParent(valueHolder.transform);
        }
    }
예제 #29
0
 void Start()
 {
     PhotonNetwork.ConnectUsingSettings(null);
     md         = GameObject.Find("ModeData").GetComponent <ModeData>();
     roomhost   = GameObject.Find("InputFieldText").GetComponent <Text>();
     push1      = GameObject.Find("OkButton").GetComponent <RoomName>();
     push2      = GameObject.Find("StartButton").GetComponent <RoomMake>();
     numplayers = GameObject.Find("NumOfPlayers").GetComponent <Text>();
     dd         = GameObject.Find("RoomDropdown").GetComponent <Dropdown>();
     dlabel     = GameObject.Find("DropdownLabel").GetComponent <Text>();
     push3      = GameObject.Find("RoomDropdown").GetComponent <Guest>();
     push4      = GameObject.Find("BackButton").GetComponent <BackButton>();
     push5      = GameObject.Find("BackToMenuButton").GetComponent <BackToMenu>();
     //DontDestroyOnLoad(this);
     suit = new string[4] {
         "♠", "♥", "♣", "♦"
     };
 }
예제 #30
0
 private void get()
 {
     //card = GameObject.Find("Card");
     turnManager = GetComponent <TurnManagerOnline>();
     record      = GetComponent <RecordOnline>();
     turn        = turnManager.turn;
     tP          = turnManager.turnPlayer;
     dP          = turnManager.drawnPlayer;
     hand        = GameObject.Find("Hand"); //Handのクラスを取得
     hands       = hand.GetComponent <HandsOnline>();
     md          = GameObject.Find("ModeData").GetComponent <ModeData>();
     zizikaku    = GetComponent <ZiziKakuOnline>();
     for (int i = 0; i < 4; i++)
     {
         coms[i] = GameObject.Find("Com" + (i)).GetComponent <ComputerVer2Online>();
         //Debug.Log("Com" + (i + 1));
     }
 }
예제 #31
0
    public virtual void Start()
    {
        modeData      = new ModeData();
        modeData.name = modeName;
        gameGrid      = new GameGrid((int)gameSize.x, (int)gameSize.y);

        spawner.transform.position = gameGrid.GetSpawnerPos();


        if (PlayerPrefs.HasKey(modeName + "highScore"))
        {
            modeData.highScore = PlayerPrefs.GetInt(modeName + "highScore");
        }
        else
        {
            PlayerPrefs.SetInt(modeName + "highScore", modeData.highScore);
        }
    }
예제 #32
0
 /// <summary>
 /// Generates all feasible sets of modes for the trip chain
 /// </summary>
 /// <param name="chain">The chain to operate on</param>
 /// <param name="Data">The ModeData for each trip</param>
 /// <param name="set">The mode set we are building</param>
 /// <param name="level">How deep in the recursion we are</param>
 /// <param name=Fo"U">What is the total Utility value calculated</param>
 private static void GenerateModeSets(ITripChain chain, ModeData[] Data, ModeSet set)
 {
     var modes = TashaRuntime.AllModes;
     var numberOfModes = modes.Count - TashaRuntime.SharedModes.Count;
     var topLevel = Data.Length - 1;
     int level = 0;
     double U = 0;
     int mode = 0;
     List<ModeSet> possibleTripChains = ModeSet.GetModeSets( chain ) as List<ModeSet>;
     Stack<int> previousMode = new Stack<int>( 10 );
     Stack<double> previousU = new Stack<double>( 10 );
     int chainLength = chain.Trips.Count;
     var trips = chain.Trips;
     ITrip currentTrip = trips[0];
     while ( level != -1 )
     {
         for ( ; mode < numberOfModes; mode++ )
         {
             // For each feasible mode
             var currentData = Data[level];
             if ( currentData.Feasible[mode] )
             {
                 // find the total utility
                 double newU = U + currentData.V[mode] + currentData.Error[mode];
                 // store the mode into our set and chain
                 set.ChosenMode[level] = currentTrip.Mode = modes[mode];
                 // if we are at the end, store the set
                 if ( level >= topLevel )
                 {
                     bool feasible = true;
                     // make sure this chain is allowed
                     for ( int j = 0; j < numberOfModes; j++ )
                     {
                         // if this doesn't work don't save it
                         if ( !modes[j].Feasible( chain ) )
                         {
                             feasible = false;
                             break;
                         }
                     }
                     if ( feasible )
                     {
                         possibleTripChains.Add( ModeSet.Make( set, newU ) );
                     }
                 }
                 else
                 {
                     // otherwise go to the next trip
                     level++;
                     previousU.Push( U );
                     U = newU;
                     currentTrip = trips[level];
                     previousMode.Push( mode );
                     mode = -1;
                     continue;
                 }
             }
         }
         if ( previousMode.Count > 0 )
         {
             mode = previousMode.Pop() + 1;
             U = previousU.Pop();
             currentTrip = trips[level - 1];
         }
         level--;
     }
 }