Example #1
0
    void Start()
    {
        instance = this;

        this.alertText = GameObject.Find("AlertText").GetComponent <Text>();

        if (!isControlledByPlayer)
        {
            this.playerInputRecord = File.ReadAllText("Records/ShadowMan/Record14.json");
            GameRecord info = JsonUtility.FromJson <GameRecord>(playerInputRecord);
            this.seed = info.seed;
            this.playerInputSequence = info.playerInputSequence;
        }
        else
        {
            System.Random rnd = new System.Random();
            this.seed = rnd.Next(100);
        }

        this.state = GameState.Running;

        UnityEngine.Random.InitState(this.seed);
        this.random = new System.Random(GameRecorder.instance.seed);

        alertText.gameObject.SetActive(false);
    }
    private void Start()
    {
        TeamChanger teamChanger = new TeamChanger();

        UniqueList <IEventReceiver> receivers = new UniqueList <IEventReceiver>();

        receivers.Add(teamChanger);

        GameRecorder recorder = new GameRecorder();
        GameReplayer replayer = new GameReplayer(receivers);

        teamChanger.TeamName.Subscribe((newName) => Debug.Log(newName));

        TeamChangeEvent evt = new TeamChangeEvent(40, teamChanger.ID, "New team name");

        recorder.AddEvent(evt);

        string gameLog = recorder.CreateGameLog();

        replayer.Load(gameLog);

        replayer.Update(new Winch.UpdateInfo()
        {
            Time           = 40,
            TicksPerUpdate = 0.1f
        });
    }
Example #3
0
    private EnumPlayError Load()
    {
        if (!File.Exists(path))
        {
            return(EnumPlayError.FileDontExits);
        }
        if (!path.EndsWith(RecordFileSuffix))
        {
            return(EnumPlayError.FileTypeError);
        }
        try
        {
            var stream = File.OpenRead(path);
            stream.Seek(0, SeekOrigin.Begin);
            string time;
            stream.Read(out time);
            string t;
            stream.Read(out t);
            var dataType = Type.GetType(t);
            GameRecordDataHandle = GameRecorder.CreateRecodeData(dataType);
            GameRecordDataHandle?.Load(stream);
            stream.Close();
        }
        catch (Exception e)
        {
            Logger.LogError(e.ToString());
        }

        if (GameRecordDataHandle?.CommandsCount == 0)
        {
            return(EnumPlayError.FileContentError);
        }

        return(EnumPlayError.None);
    }
    private void HandleEvent(TutorialEvent tutorialEvent)
    {
        switch (tutorialEvent)
        {
        case TutorialEvent.NONE:
            break;

        case TutorialEvent.LOAD_PRESET_LEVEL:
            LevelSelectGUI.currentLevel = Levels.GetLevel(level);
            Loading.Load(level);
            break;

        case TutorialEvent.LOAD_NEXT_LEVEL:
            LoadLevel.LoadALevel("next");
            break;

        case TutorialEvent.START_PLAYER:
            tutorialEnabled = false;

            // Disable buttons
            lastButton.interactable = false;
            nextButton.interactable = false;
            skipButton.interactable = false;

            // Get rid of mainCamera tag
            //tag = "Untagged";

            // Unfreeze camera
            {
                //theCamera.active = true;
                theCamera.GetComponent <LevelStart>().Start();
            }

            // Unfreeze player
            GameObject player = GameObject.Find("Player");
            if (player != null)
            {
                player.GetComponent <Rigidbody>().constraints = RigidbodyConstraints.FreezeRotation;
            }

            // Disable tutorial camera
            //gameObject.active = false;
            this.enabled = false;
            break;

        case TutorialEvent.PLAY_RECORDING:
            string       test = "Recordings/" + points[index].recordingName;
            TextAsset    ta   = (TextAsset)Resources.Load(test);
            Stream       s    = new MemoryStream(ta.bytes);
            BinaryReader br   = new BinaryReader(s);
            GameRecorder.StartPlaybackTutorial(Recording.Read(br));
            break;

        case TutorialEvent.RESET_PLAYER:
            GameRecorder.StopPlayback();
            GameObject.Find("Player").BroadcastMessage("Reload");
            break;
        }
    }
Example #5
0
        public void AddTest03()
        {
            //Arrange
            GameRecorder = GameRecorder.GetInstance;

            //Act
            //Assert
            Assert.Throws <ArgumentNullException>(() =>
                                                  { GameRecorder.Add(null); });
        }
Example #6
0
        public void AddTest05()
        {
            //Arrange
            Game[] games = new Game[] { };
            GameRecorder = GameRecorder.GetInstance;

            //Act
            //Assert
            Assert.Throws <ArgumentException>(() =>
                                              { GameRecorder.Add(games); });
        }
        public void SetRecorder(GameRecorder recorder)
        {
            replay = new GameReplay(recorder);

            DisplayGame(replay.Game);

            //Set the color of all buttons to neutral
            foreach (var button in allPoints)
            {
                button.Background = colorBrushMap[Game.HostId];
            }
        }
Example #8
0
        public void GetTimesTest09()
        {
            //Arrange
            Game[] games = new Game[] { testGame01, testGame01 };
            GameRecorder = GameRecorder.GetInstance;
            GameRecorder.Add(games);

            //Act
            //Assert
            Assert.Throws <ArgumentException>(() =>
                                              { GameRecorder.GetTimes(testPerson01, testPerson01); });
        }
    void Start()
    {
        recordingsDir = Application.persistentDataPath + Recording.dir + "/";
        GameRecorder.Reset();

        playRecording  = false;
        recordingNames = new List <string>();
        fullFilenames  = new List <string>();
        recordingDates = new List <string>();
        StartCoroutine("LoadRecordings");

#if FALSE
        const bool dostuff = false;
        if (dostuff)
        {
            // Load all recordings and export scores
            StreamWriter all = new StreamWriter("D:\\Dropbox\\Pillowdrift\\Testing\\won.txt");
            all.WriteLine("Level name\tWon\tTotal");
            foreach (string dir in Directory.GetDirectories(recordingsDir))
            {
                string levelname = Path.GetFileNameWithoutExtension(dir);

                int won   = 0;
                int total = 0;

                StreamWriter stream = new StreamWriter("D:\\Dropbox\\Pillowdrift\\Testing\\Scores\\" + levelname + ".txt");

                stream.WriteLine("Score\tSpeed\tTime");

                foreach (string file in Directory.GetFiles(dir))
                {
                    Recording rec = Recording.Read(file);

                    // If a win
                    if (rec.score.time > 0)
                    {
                        stream.WriteLine(rec.score.score.ToString() + "\t" + rec.score.speed.ToString() + "\t" + rec.score.time.ToString());

                        won++;
                    }

                    total++;
                }

                all.WriteLine(levelname + "\t" + won.ToString() + "\t" + total.ToString());

                stream.Close();
            }
            all.Close();
        }
#endif
    }
Example #10
0
    public void ButtonPressed()
    {
        if (pressed)
        {
            return;
        }

        GameRecorder.Reset();

        JukeBox.DontChangeMusic = true;
        LoadALevel(level);
        pressed = true;
    }
Example #11
0
        public void AddTest02()
        {
            //Arrange
            Game[] games = new Game[] { testGame01, testGame01, testGame01, testGame01 };
            GameRecorder = GameRecorder.GetInstance;

            //Act
            GameRecorder.Add(games);
            int expected = 4;
            int actual   = GameRecorder.GetTimes(testPerson01, testPerson02);

            //Assert
            Assert.Equal(expected, actual);
        }
Example #12
0
        public void GetTimesTest04()
        {
            //Arrange
            Game[] games = new Game[] { testGame01, testGame01, testGame02 };
            GameRecorder = GameRecorder.GetInstance;
            GameRecorder.Add(games);

            //Act
            int actualCount   = GameRecorder.GetTimes(testPerson02, testPerson03);
            int expectedCount = 0;

            //Assert
            Assert.Equal(expectedCount, actualCount);
        }
Example #13
0
    public void Start()
    {
        tutorialCamera = FindObjectOfType <TutorialCamera>();
        MainGUI        = GameObject.Find("MainGUI").GetComponent <Animator>();
        if (TutorialCamera.Enabled())
        {
            enabled = false;
            return;
        }
        else
        {
            enabled = true;

            initialCameraPosition = transform.position;
            initialCameraRotation = transform.rotation;

            AmbientNoise.Play();

            PauseButton.paused = false;

            player          = GameObject.Find("Player");
            grapplingHook   = player.GetComponent <GrapplingHook>();
            playerMovements = player.GetComponent <PlayerMovements>();

            //ControlManager.Disabled = true;
            if (!GameRecorder.playingBack)
            {
                GameRecorder.StopPlayback();

                if (LevelSelectGUI.currentLevel != null)
                {
                    GUIController.ShowText("LevelName", LevelSelectGUI.currentLevel.name);
                }

#if UNITY_ANDROID || UNITY_IPHONE
                GUIController.ShowText("Text", "Tap to begin");
#else
                //GUIController.ShowText("Text", "Click to begin");
                //tutorialCamera.ShowTutorialText("Click to begin", false);
                StartCoroutine(ShowStartText());
#endif

                GUIController.GUILevelPause();
                GUIController.HideText("Paused");
            }

            EnableCameraController();
        }
    }
Example #14
0
    public void ButtonPressed()
    {
        if (GameRecorder.playingBack)
        {
            GameRecorder.Restart();
        }
        else
        {
            GameRecorder.Reset();

            Time.timeScale     = 1.0f;
            LevelStart.started = false;
            Loading.Load(Application.loadedLevelName);
            GameRecorder.StopPlayback();
            ControlManager.Disabled = false;
        }
    }
Example #15
0
    private readonly Vector3 offset = Vector3.zero;    // new Vector3(0.0f, -0.05f, -0.39f);

    void Awake()
    {
        instance      = this;
        grappleScript = GetComponent <GrapplingHook>();

        if (enableLine && lineRenderer == null)
        {
            GameObject obj = new GameObject("Trail renderer");
            linePoints            = new Queue <Vector3>();
            lineRenderer          = obj.AddComponent <LineRenderer>();
            lineRenderer.material = lineMaterial;
            lineRenderer.SetColors(Color.clear, lineColour);
            points = 1;
            lineRenderer.SetVertexCount(points);
            lineRenderer.SetWidth(0.6f, 1.2f);
            lineRenderer.enabled = true;
        }
    }
    IEnumerator PauseBeforeReset()
    {
        float time = 0.0f;

        while (time < RESET_TIME && !Input.GetMouseButtonDown(0))
        {
            time += Time.deltaTime;
            yield return(null);
        }

        // Stop the recording, and also the line it generates
        GameRecorder.StopRecording();

        // Reset player
        player.BroadcastMessage("Reload");
        player.GetComponent <Renderer>().enabled = true;

        // Lerp camera back to start transform
        Camera.main.SendMessage("LerpToStartPos");
    }
    public void Skip()
    {
        GameRecorder.StopPlayback();
        GameObject.Find("Player").SendMessage("Reload");

        HideTutorial();
        //StartCoroutine(MainMenuController.PlayAnimation(animation, "ShowTutorial", true, () => { }));

        // Disable buttons
        lastButton.interactable = false;
        nextButton.interactable = false;
        skipButton.interactable = false;

        // Load final point
        EndPoint();
        if (index < points.Count)
        {
            Tutorial.HideText(points[index].textName);
        }
    }
    void Update()
    {
        if (currentRecording != selGridInt)
        {
            currentRecording = selGridInt;
            if (selGridInt < fullFilenames.Count)
            {
                current = Recording.Read(fullFilenames[selGridInt]);
            }
            else
            {
                current = null;
            }
        }

        if (playRecording && current != null)
        {
            // Play back recording
            playRecording = false;
            GameRecorder.StartPlaybackFromMenu(current);
        }
    }
Example #19
0
    internal void SetSeedAndStart(int randomSeed)
    {
        seeded = randomSeed;

        if (isRecording)
        {
            recorder = new GameRecorder(randomSeed);
        }

        dice = new SeededRandom(randomSeed);

        SetupPieceArray();

        currentPiece = MakeAPiece();

        currentPiece.transform.parent = this.transform;
        UpdateCurrentPieceTransform();

        nextPiece = MakeAPiece();
        nextPiece.transform.parent        = nextPieceHolder;
        nextPiece.transform.localPosition = Vector3.zero;

        SetGridCellTypeStateAndAttendentVFX();


        if (isPlayerOne)
        {
            string dataPath;


            dataPath = Path.Combine(Application.persistentDataPath, MissionManager.instance.player1CharacterSheetPath);
            if (!File.Exists(dataPath))
            {
                player.SaveCharacterToDisk(MissionManager.instance.player1CharacterSheetPath);
            }

            player.SetCharacterSheet(MissionManager.instance.player1CharacterSheetPath);
        }
    }
    public static void InstanceHandle <T>() where T : IGameRecordData
    {
        GameRecorder recorder = new GameRecorder();

        if (recorder.InstanceHandle <T>())
        {
            thread = !IsRecovering ? new RecordLogThread(recorder) : new RecordLogThread(null);
            if (!IsRecovering)
            {
                if (typeof(T) == typeof(GameRecordDataPvp))
                {
                    FightStatistic.AddPvpFightTimes();
                }
                else
                {
                    FightStatistic.AddPveFightTimes();
                }
            }
        }
        else
        {
            thread = null;
        }
    }
Example #21
0
    IEnumerator FinishLevel()
    {
        Debug.Log("Level finished!");

        // Wait time between stars unless tapped to skip
        const bool playting = true;
        const bool playfail = false;

        // Which stars are unlocked
        bool scoreStar = false;
        bool timeStar  = false;

        Debug.Log("Updating next level");

        hasFinished = true;

        // Calculate scores
        Debug.Log("Calculating scores");

        score = new Save.LevelHighScore();

        if (!GameRecorder.playingBack)
        {
            score.Score = ScoreCalculator.finalScore;
            score.Speed = ScoreCalculator.finalSpeed;
            score.Time  = ScoreCalculator.finalTime;
        }
        else
        {
            score.Score = GameRecorder.current.score.score;
            score.Speed = GameRecorder.current.score.speed;
            score.Time  = GameRecorder.current.score.time;
        }

        // Save recording
        Debug.Log("Save recording!");

        if (!GameRecorder.playingBack)
        {
            savedRecording = true;
            GameRecorder.StopRecording();
            //Recording rec = GameRecorder.Save(true, false);

            // Upload score to online thing
            if (!GameRecorder.playingBack)
            {
                //HighScores.PostScore(LevelSelectGUI.currentLevel, rec);
            }
            // Disable buttons so user doesn't disrupt score uploading
            GUIController.DisableButtons();
        }

        // Check which stars have been earnt
        Debug.Log("Checking speed star!");

        scoreStar = SaveManager.HasSurpassedSpeed(score, LevelSelectGUI.currentLevel);
        timeStar  = SaveManager.HasSurpassedTime(score, LevelSelectGUI.currentLevel);

        // Check rewards
        int passedReward     = 500;
        int noPowerupsReward = 500;
        int scoreReward      = scoreStar ? 500 : 0;
        int timeReward       = timeStar ? 500 : 0;

        // Get picolinium counter and set target to current value so we can manually increment it
        var picoliniumCounter = GameObject.Find("Game End/Content/Picolinium/Value/Content/Text")?.GetComponent <PicoliniumCounter>();

        picoliniumCounter.Target = SaveManager.save?.picolinium ?? 0;

        if (SaveManager.save != null)
        {
            SaveManager.save.levelCompletions++;
            SaveManager.save.IncrementPicolinium(passedReward + noPowerupsReward + scoreReward + timeReward);
        }

        // Update save
        // Don't save if we are replaying a recording.
        if (!GameRecorder.playingBack)
        {
            if (LevelSelectGUI.currentLevel != null)
            {
                SaveManager.Beaten(LevelSelectGUI.currentLevel);
                SaveManager.UpdateScore(LevelSelectGUI.currentLevel);
                SaveManager.Write();
            }
        }

        // Let the camera pan back a bit
        tapped = false;
        yield return(WaitButAllowSkip(START_WAIT_TIME));

        // Show the gui
        // Do everything important before this because they can exit the level or reset after this
        GameObject.Find("Game End").BroadcastMessage("Reset");
        GameObject.Find("MainGUI").GetComponent <Animator>().Play("EndLevel");

        tapped = false;
        yield return(new WaitForSeconds(0.5f));

        string formattedTime = ReadableTime((int)(score.Time * 1000.0f));

        // Get reward text template
        var bonusTemplate = GameObject.Find("RewardText");

        SoundManager.Play("ting");
        picoliniumCounter.Target += passedReward;

        // Show level time
        var levelTime = GameObject.Find("LevelTime/Text").GetComponent <TextRevealer>();

        levelTime.Text    = $"{formattedTime}";
        levelTime.Run     = true;
        levelTime.Counter = 0.0f;

        TextFadeout newBonusText;

        if (!tapped)
        {
            newBonusText      = GameObject.Instantiate(bonusTemplate, bonusTemplate.transform.parent).GetComponent <TextFadeout>();
            newBonusText.Text = "Level complete!";
            newBonusText.Go   = true;
        }

        yield return(WaitButAllowSkip(WAIT_TIME));

        // Show powerups bonus
        if (noPowerupsReward > 0)
        {
            picoliniumCounter.Target += noPowerupsReward;

            if (!tapped)
            {
                newBonusText      = GameObject.Instantiate(bonusTemplate, bonusTemplate.transform.parent).GetComponent <TextFadeout>();
                newBonusText.Text = "No powerups";
                newBonusText.Go   = true;

                SoundManager.Play("ting");
            }

            yield return(WaitButAllowSkip(WAIT_TIME));
        }

        // Show time bonus
        if (timeReward > 0)
        {
            picoliniumCounter.Target += timeReward;

            if (!tapped)
            {
                SoundManager.Play("ting");

                newBonusText      = GameObject.Instantiate(bonusTemplate, bonusTemplate.transform.parent).GetComponent <TextFadeout>();
                newBonusText.Text = "Super fast time!";
                newBonusText.Go   = true;
            }

            yield return(WaitButAllowSkip(WAIT_TIME));
        }

        // Show speed bonus
        if (scoreReward > 0)
        {
            picoliniumCounter.Target += scoreReward;

            if (!tapped)
            {
                SoundManager.Play("ting");

                newBonusText      = GameObject.Instantiate(bonusTemplate, bonusTemplate.transform.parent).GetComponent <TextFadeout>();
                newBonusText.Text = "Super fast speed!";
                newBonusText.Go   = true;
            }

            yield return(WaitButAllowSkip(WAIT_TIME));
        }

        // End
        player.SendMessage("StopCounting");

        player.SendMessage("EndMining");

        //GameObject.Find("Game End/Content/Story/Text").GetComponent<TextRevealer>().Run = true;
        GameObject.Find("MainGUI").GetComponent <Animator>().Play("ExpandEndLevel");

        if (!uploading)
        {
            GUIController.EndLevel(true);
        }

        endingDone = true;
    }
Example #22
0
    void Update()
    {
        if (!TutorialCamera.Enabled() && !LevelState.Dead)
        {
            if (!grapplingHook.enabled)
            {
                grapplingHook.Update();
            }

            // Handle back button
            if (Input.GetKeyDown(KeyCode.Escape) || Input.GetButtonDown("SkipTutorial"))
            {
                GameObject pauseButton = GameObject.Find("Pause");
                if (pauseButton != null)
                {
                    pauseButton.SendMessage("ButtonPressed", SendMessageOptions.DontRequireReceiver);
                }
            }

            if (!started && !GameRecorder.playingBack)
            {
                //			if (enablePreviews && useStaticPreviews && !GameRecorder.playingBack)
                //			{
                //				// Handle previews
                //				timePassed += Time.deltaTime;
                //				if (timePassed >= previewTime)
                //				{
                //					timePassed = 0.0f;
                //					NextPreview();
                //				}
                //			}

                // Start level if player tapped last frame or if reload is disabled
                if (start ||
                    (!reload && !started && (InputManager.pressed || InputManager.released) && !ControlManager.MouseOnGUI && !GameRecorder.playingBack))
                {
                    if (!reload)
                    {
                        Debug.Log("Reloading");
                        foreach (GameObject gameObject in GameObject.FindObjectsOfType(typeof(GameObject)))
                        {
                            Debug.Log(gameObject.name);
                            gameObject.BroadcastMessage("Reload", SendMessageOptions.DontRequireReceiver);
                        }

                        //persistClick = true;
                        //clickpos = InputManager.currentPosition;
                    }

                    playerMovements.GetComponent <Rigidbody>().constraints = RigidbodyConstraints.FreezeRotation;

                    // Apply initial velocity
                    playerMovements.Go();

                    // Set state
                    start   = false;
                    started = true;

                    // Reset camera
                    transform.position = initialCameraPosition;
                    transform.rotation = initialCameraRotation;

                    // Enable camera controller
                    EnableCameraController();

                    // Initialise systems
                    GameRecorder.playingBack = false;
                    GameRecorder.StartRecording();
                    GUIController.HideText("Text");
                    tutorialCamera.HideTutorial();
                    GUIController.GUILevelPlay();
                    GUIController.LevelStarted = true;
                    ControlManager.Disabled    = false;
                    ScoreCalculator.Reset();
                    Debug.Log("Playing start level");
                    MainGUI.Play("StartLevel");

                    // Try to grapple
                    if (persistClick)
                    {
                        persistClick = false;
                        InputManager.currentPosition = clickpos;

                        grapplingHook.TryGrapple(InputManager.currentPosition);
                    }
                }
                else if (!LevelState.Dead)
                {
                    playerMovements.GetComponent <Rigidbody>().constraints = RigidbodyConstraints.FreezeAll;
                }

                // Reload and start level if reload is enabled
                if (reload && !started && InputManager.pressed && !ControlManager.MouseOnGUI && !GameRecorder.playingBack)
                {
                    start              = true;
                    persistClick       = true;
                    clickpos           = InputManager.currentPosition;
                    PauseButton.paused = false;
                    Application.LoadLevel(Application.loadedLevelName);
                    InputManager.pressed  = true;
                    InputManager.released = true;
                }
            }
        }
    }
Example #23
0
    // Draw the highscores.
    void OnGUI()
    {
        if (LevelSelectGUI.menuState != LevelSelectGUI.MenuState.LEVEL_SELECT)
        {
            enable = false;
        }

        if (!enable)
        {
            GUIController.HideText("ScoreTypeName");
            return;
        }

        // Set skin and store old skin
        GUISkin oldSkin = GUI.skin;

        GUI.skin = Screen.width > 1500 ? biggerSkin : guiSkin;

        // Find out whether or not a planet is selected
        if (LevelSelectGUI.currentPlanet == null || !enable)
        {
            return;
        }

        // Calculate the how large things need to be.
        float labelPosX        = Screen.width / 20;
        float labelPosY        = Screen.height / 20;
        float labelWidth       = Screen.width - (Screen.width / 10);
        float labelHeight      = (Screen.height / 12);
        float buttonX          = labelPosX;
        float buttonY          = labelPosY;
        float buttonWidth      = (Screen.width / 6);
        float buttonHeight     = labelHeight;
        float buttonScoreTypeX = labelPosX + buttonWidth;
        float buttonScoreTypeY = buttonY;
        float scrollPosX       = labelPosX;
        float scrollPosY       = buttonY + buttonHeight;
        float scrollWidth      = labelWidth;
        float scrollHeight     = (Screen.height / 2.0f);
        float playButtonX      = scrollPosX;
        float playButtonY      = scrollPosY + scrollHeight + 5;
        float playButtonWidth  = scrollWidth;
        float playButtonHeight = scrollHeight / 4;

        // Update the mouse position
        if (InputManager.currentPosition.x > labelPosX && InputManager.currentPosition.y > (Screen.height - (playButtonY + playButtonHeight)))
        {
            if (InputManager.held)
            {
                if ((lastMousePos - InputManager.currentPosition).y < 10.0f)
                {
                    scrolled.y -= (lastMousePos - InputManager.currentPosition).y;
                }
            }
        }
        lastMousePos = InputManager.currentPosition;

        // Draw a texture at the back
        GUI.DrawTexture(new Rect(labelPosX, labelHeight + labelPosY, playButtonX + playButtonWidth - (Screen.width / 20), playButtonY + playButtonHeight - labelHeight - buttonY), BG);

        // Draw a label at the top of the menu.
        string label = (locality == Locality.Internet ? "Internet" : "Local") + " " +
                       (scoreType == HighScores.ScoreType.Speed ? "Top Scores" : "Fastest Times");

        GUIController.ShowText("ScoreTypeName", label);

        // Draw the play replay button
        if (GUI.Button(new Rect(playButtonX, playButtonY, playButtonWidth, playButtonHeight), "Play Replay"))
        {
            LevelSelectGUI.worldToShow = LevelSelectGUI.currentWorld;
            LevelSelectGUI.levelToShow = LevelSelectGUI.currentLevel.number;

            if (locality == Locality.Local && selectedIndex < recordings.Count)
            {
                GameRecorder.StartPlaybackFromMenu(recordings[selectedIndex]);
            }
            else
            {
                // Grab the recording from the net.
                if (scores != null)
                {
                    Networking.GetRecording(LoadRecordingFromInternet, scores[selectedIndex].id);
                }
            }

            if (selectedIndex < recordings.Count)
            {
                GameRecorder.StartPlaybackFromMenu(recordings[selectedIndex]);
            }
        }

        // Draw the button to switch from local to internet
        // and vice versa.
        string buttonText = "";

        switch (locality)
        {
        case Locality.Local:
            buttonText = "Internet Scores";
            break;

        case Locality.Internet:
            buttonText = "Local Scores";
            break;

        default:
            buttonText = "Wut";
            break;
        }

        if (Options.Networking)
        {
            if (GUI.Button(new Rect(buttonX, buttonY, buttonWidth, buttonHeight), buttonText))
            {
                if (locality == Locality.Local)
                {
                    locality = Locality.Internet;
                }
                else
                {
                    locality = Locality.Local;
                }

                // Refresh the scores
                LoadReplays();
            }
        }

        // Button to switch score type.
        string scoreTypeText = "";

        switch (scoreType)
        {
        case HighScores.ScoreType.Speed:
            scoreTypeText = "View Fastest Times";
            break;

        case HighScores.ScoreType.Time:
            scoreTypeText = "View Highest Scores";
            break;

        default:
            scoreTypeText = "Wut";
            break;
        }

        if (GUI.Button(new Rect(buttonScoreTypeX, buttonScoreTypeY, buttonWidth, buttonHeight), scoreTypeText))
        {
            if (scoreType == HighScores.ScoreType.Speed)
            {
                scoreType = HighScores.ScoreType.Time;
            }
            else
            {
                scoreType = HighScores.ScoreType.Speed;
            }

            // Refresh the scores
            LoadReplays();
        }

        // The scrolling menu stuff
        GUILayout.BeginArea(new Rect(scrollPosX, scrollPosY, scrollWidth, scrollHeight));

        scrolled = GUILayout.BeginScrollView(scrolled);

        if (names != null)
        {
            selectedIndex = GUILayout.SelectionGrid(selectedIndex, names, 1);
        }

        GUILayout.EndScrollView();

        GUILayout.EndArea();

        // Restore old skin
        GUI.skin = oldSkin;
    }
Example #24
0
        /// <summary>
        /// コンストラクタでテストの準備をする
        /// </summary>
        public FewMatchPriorityGeneratorTest()
        {
            gameRecorder = GameRecorder.GetInstance;
            fewMatchPriorityGenerator = new FewMatchPriorityGenerator();

            Gender men = new Gender {
                GenderNum = 1
            };
            Gender women = new Gender {
                GenderNum = 0
            };
            Level beginner = new Level {
                LevelNum = 0
            };
            Level intermediate = new Level {
                LevelNum = 1
            };
            Level advanced = new Level {
                LevelNum = 2
            };

            testPerson01 = new Person
            {
                ID         = "test01",
                Name       = "snoopy",
                Gender     = men,
                Level      = advanced,
                DeleteFlag = false,
                AttendFlag = true
            };
            testPerson02 = new Person
            {
                ID         = "test02",
                Name       = "bell",
                Gender     = women,
                Level      = beginner,
                DeleteFlag = false,
                AttendFlag = true
            };
            testPerson03 = new Person
            {
                ID         = "test03",
                Name       = "andy",
                Gender     = men,
                Level      = intermediate,
                DeleteFlag = false,
                AttendFlag = true
            };
            testPerson04 = new Person
            {
                ID         = "test04",
                Name       = "marbles",
                Gender     = men,
                Level      = advanced,
                DeleteFlag = false,
                AttendFlag = true
            };
            testPerson05 = new Person
            {
                ID         = "test05",
                Name       = "woodstock",
                Gender     = men,
                Level      = beginner,
                DeleteFlag = false,
                AttendFlag = true
            };
            testPerson06 = new Person
            {
                ID         = "test06",
                Name       = "harriet",
                Gender     = women,
                Level      = intermediate,
                DeleteFlag = false,
                AttendFlag = true
            };

            //Gameの準備
            Court court = new Court
            {
                CourtName         = "テストコート",
                AccommodateNumber = 2
            };

            Person[] players1 = { testPerson01 };
            Person[] players2 = { testPerson02 };
            Person[] players3 = { testPerson03 };
            Person[] players4 = { testPerson04 };
            Person[] players5 = { testPerson05 };
            Person[] players6 = { testPerson06 };

            testGame01 = new Game(court, players1, players2);
            testGame02 = new Game(court, players1, players3);
            testGame03 = new Game(court, players1, players4);
            testGame04 = new Game(court, players1, players5);
            testGame05 = new Game(court, players1, players6);
            testGame06 = new Game(court, players2, players3);
            testGame07 = new Game(court, players2, players3);
            testGame08 = new Game(court, players2, players4);
            testGame09 = new Game(court, players3, players4);
        }
    void Awake()
    {
        instance = this;
        grappleScript = GetComponent<GrapplingHook>();

        if (enableLine && lineRenderer == null)
        {
            GameObject obj = new GameObject("Trail renderer");
            linePoints = new Queue<Vector3>();
            lineRenderer = obj.AddComponent<LineRenderer>();
            lineRenderer.material.shader = Shader.Find("Particles/Additive");
            lineRenderer.SetColors(Color.clear, lineColour);
            points = 1;
            lineRenderer.SetVertexCount(points);
            lineRenderer.SetWidth(0.3f, 0.3f);
            lineRenderer.enabled = true;
        }
    }
Example #26
0
 void LoadRecordingFromInternet(Recording recording)
 {
     GameRecorder.StartPlaybackFromMenu(recording);
 }
        /// <summary>
        /// コンストラクタでテスト用データの作成
        /// </summary>
        public RandomByGenderGeneratorTest()
        {
            gameRecorder            = GameRecorder.GetInstance;
            randomByGenderGenerator = new RandomByGenderGenerator();

            Gender men = new Gender {
                GenderNum = 1
            };
            Gender women = new Gender {
                GenderNum = 0
            };
            Level beginner = new Level {
                LevelNum = 0
            };
            Level intermediate = new Level {
                LevelNum = 1
            };
            Level advanced = new Level {
                LevelNum = 2
            };

            testPerson01 = new Person
            {
                ID         = "test01",
                Name       = "snoopy",
                Gender     = men,
                Level      = advanced,
                DeleteFlag = false,
                AttendFlag = true
            };
            testPerson02 = new Person
            {
                ID         = "test02",
                Name       = "bell",
                Gender     = women,
                Level      = beginner,
                DeleteFlag = false,
                AttendFlag = true
            };
            testPerson03 = new Person
            {
                ID         = "test03",
                Name       = "andy",
                Gender     = men,
                Level      = intermediate,
                DeleteFlag = false,
                AttendFlag = true
            };
            testPerson04 = new Person
            {
                ID         = "test04",
                Name       = "marbles",
                Gender     = men,
                Level      = advanced,
                DeleteFlag = false,
                AttendFlag = true
            };
            testPerson05 = new Person
            {
                ID         = "test05",
                Name       = "woodstock",
                Gender     = men,
                Level      = beginner,
                DeleteFlag = false,
                AttendFlag = true
            };
            testPerson06 = new Person
            {
                ID         = "test07",
                Name       = "harriet",
                Gender     = women,
                Level      = intermediate,
                DeleteFlag = false,
                AttendFlag = true
            };
        }
    void KillPlayer(GameObject player)
    {
        if (TutorialCamera.Enabled())
        {
            GameRecorder.StopPlayback();
            if (explode)
            {
                player.SendMessage("Explode");
                SoundManager.Play("crash");

                player.SendMessage("Reload");
                IncrementCrashCount(true);
            }

            return;
        }

        if (!LevelState.Dead)
        {
            MainGUI.Play("RestartLevel");

            // Disable text
            GUIController.DisableTexts();

            // Update drone count
            if (SaveManager.save != null)
            {
                if (explode)
                {
                    IncrementCrashCount(false);
                }
                SaveManager.save.droneCount++;
                SaveManager.Write();

                // Display drone coun
                if (false)
                {
                    GameObject thingy = Tutorial.ShowText("DroneText", "Drones lost: " + SaveManager.save.droneCount, 0, TextAlignment.Center, TextAnchor.MiddleCenter, 0.5f, 0.5f);
                    Mover      mover  = thingy.AddComponent <Mover>();
                    mover.direction = Vector3.up;
                    mover.speed     = 0.2f;
                    TextFader fader = thingy.AddComponent <TextFader>();
                    fader.fadeRate = 1.0f;
                    fader.FadeOut();
                }
            }

            // Update level state
            GUIController.LevelStarted = false;
            LevelStart.started         = false;
            LevelState.Dead            = true;

            if (explode)
            {
                // Create explosion effect
                player.SendMessage("Explode");

                // Crash sound
                SoundManager.Play("crash");

                // Disable renderers if exploding
                player.GetComponent <Renderer>().enabled = false;
                player.transform.Find("Shield").GetComponent <Renderer>().enabled = false;
            }

            // Disable default camera controller until level restarts
            ThirdPersonCamera cameraController = Camera.main.GetComponent <ThirdPersonCamera>();
            if (cameraController != null)
            {
                cameraController.enabled = false;
            }

            // Detach grappling hook so we don't keep swinging
            grapplingHook.Detach();

            // I don't really remember why
            ControlManager.DisabledFrame = true;

            // Pause and then restart the level
            StartCoroutine(PauseBeforeReset());
        }
    }
Example #29
0
    public IEnumerator _PostToServer(string rFileName)
    {
        while (!IsFileSaveComplete(rFileName + ".log"))
        {
            yield return(0);
        }

        var     account  = Module_Login.instance?.account;
        WWWForm postForm = new WWWForm();

        var playerName = string.Empty;

        if (Module_Player.instance != null)
        {
            playerName = Module_Player.instance.roleInfo.roleId.ToString();
        }
        var path     = gameLogger.GetFullPath(rFileName);
        var contents = Util.LoadFile(path);

        if (contents != null && contents.Length > 0)
        {
            postForm.AddBinaryData("logFile", contents, $"{rFileName }_{playerName}.log");
        }

        var request = UnityWebRequest.Post(WebAPI.FullApiUrl(WebAPI.RES_FIGHT_DATA), postForm);

        request.SetRequestHeader("Content-Type", postForm.headers["Content-Type"]);
        request.SetRequestHeader("Authorization", BasicAuth(account?.acc_name ?? "null", "123456"));
        request.SetRequestHeader("X-Game-Identity", $"kzwg/{rFileName}");

        request.timeout = 5;
        yield return(request.SendWebRequest());

        if (request.isNetworkError)
        {
            Logger.LogWarning($"日志文件上传失败:{request.url}");
            yield break;
        }
        Logger.LogWarning($"日志文件上传成功:{WebAPI.FullApiUrl(WebAPI.RES_FIGHT_DATA)} 数据大小:{contents.Length}");
        request.Dispose();

        while (!IsFileSaveComplete(rFileName + ".gr"))
        {
            yield return(0);
        }

        postForm = new WWWForm();
        path     = GameRecorder.GetFullPath(rFileName);
        contents = Util.LoadFile(path);
        if (contents != null && contents.Length > 0)
        {
            postForm.AddBinaryData("grFile", contents, $"{rFileName }_{playerName}.gr");
        }

        request = UnityWebRequest.Post(WebAPI.FullApiUrl(WebAPI.RES_FIGHT_DATA), postForm);
        request.SetRequestHeader("Content-Type", postForm.headers["Content-Type"]);
        request.SetRequestHeader("Authorization", BasicAuth(account?.acc_name ?? "null", "123456"));
        request.SetRequestHeader("X-Game-Identity", $"kzwg/{rFileName}");

        request.timeout = 5;
        yield return(request.SendWebRequest());

        if (request.isNetworkError)
        {
            Logger.LogWarning($"录像文件上传失败:{request.url}");
            yield break;
        }
        Logger.LogWarning($"录像文件上传成功:{WebAPI.FullApiUrl(WebAPI.RES_FIGHT_DATA)} 数据大小:{contents.Length}");
        request.Dispose();
    }
Example #30
0
 public RecordLogThread(GameRecorder rGameRecorder)
 {
     gameRecorder = rGameRecorder;
     Util.GetDataPath();
     Util.GetExternalDataPath();
 }