예제 #1
0
파일: Game.cs 프로젝트: tscheckie/SNICE
        public void Render()
        {
            // an den Digistar senden
            for (int i = 0; i < players.Length; i++)
            {
                if (players[i] != null && players[i].isAlive)
                {
                    players[i].renderPos();
                    textValue.Value = Convert.ToString(players[i].points);
                    DsAPI.DsSetObjectAttr(pointsObjId[i], t2cTextAttrIndex, textValue, true);
                }
            }

            // an den Digistar senden
            for (int i = 0; i < items.Length; i++)
            {
                if (items[i].justSpawned)
                {
                    items[i].renderPos();
                }
                if (items[i].justCollected)
                {
                    items[i].remove();
                    items[i].start();
                }

                if (items[i].isActive)
                {
                    items[i].timer();
                }
            }
        }
예제 #2
0
 // render method for digistar
 public void renderPos()
 {
     // Set Attribut usring Ref
     positionValue.Azimuth   = x;
     positionValue.Elevation = y;
     positionValue.Distance  = 11;
     DsAPI.DsSetObjectAttr(objId, positionAttrIndex, positionValue, true);
 }
예제 #3
0
파일: Item.cs 프로젝트: tscheckie/SNICE
        public void resetBorder()
        {
            borderY   = 0.5;
            borderZ   = 0;
            borderLvl = 0;

            positionValueCar.X = 0;
            positionValueCar.Y = 0;
            positionValueCar.Z = borderZ;
            DsAPI.DsSetObjectAttr(objIdWarning, positionAttrIndex, positionValueCar, true);
            DsAPI.DsSetObjectAttr(objIdBorder, positionAttrIndex, positionValueCar, true);
        }
예제 #4
0
파일: Item.cs 프로젝트: tscheckie/SNICE
 public void remove()
 {
     // Set Attribut usring Ref
     positionValueCar.Azimuth   = -5;
     positionValueCar.Elevation = -5;
     positionValueCar.Distance  = 11;
     DsAPI.DsSetObjectAttr(objId, positionAttrIndex, positionValueCar, true);
     DsAPI.DsSendStringCommand("scene remove item" + NR_IN_DS);
     DsAPI.DsSendStringCommand("item" + NR_IN_DS + " intensity 0 duration 1");
     // after being rendered, justSpawned can bet set to false again, so this item wont be rendered every frame
     // also we need to increment itemsOnScreen and set this item onscreen
     justCollected = false;
     Game.itemsOnscreen--;
     onscreen = false;
 }
예제 #5
0
파일: Game.cs 프로젝트: tscheckie/SNICE
        public void initPlayerSelect()
        {
            status = "playerSelect";
            selectPlayersCountdown = 30;
            numberOfActivePlayers  = 0;
            // Init character array
            for (int i = 0; i < numberOfControllers; i++)
            {
                players[i] = new Player(i);                                           // create player
            }
            // Init text objects
            DsAPI.DsSendStringCommand("SelectPlayer_Text intensity 80 dur 1");
            DsAPI.DsSendStringCommand("SelectPlayer_Countdown text " + selectPlayersCountdown);
            DsAPI.DsSendStringCommand("SelectPlayer_Countdown intensity 80 dur 1");

            // Set label position
            int    labelwidth       = 10;
            double offset           = -(labelwidth * (numberOfControllers - 2)) - 90;
            int    offsetAdjustment = -15;

            offsetAdjustment = offsetAdjustment + numberOfControllers * 5;

            offset += offsetAdjustment;

            /*if (numberOfControllers == 2) offset -= 5;
             * if (numberOfControllers == 4) offset += 5;
             * if (numberOfControllers == 5) offset += 10;
             * if (numberOfControllers == 6) offset += 15;
             * if (numberOfControllers == 7) offset += 20;
             * if (numberOfControllers == 8) offset += 25;*/

            for (int i = 0; i < numberOfControllers; i++)
            {
                positionValue.Azimuth   = offset;
                positionValue.Elevation = 10;
                positionValue.Distance  = 11;
                DsAPI.DsSetObjectAttr(startlabelObjId[i], smcPosAttrIndex, positionValue, true);
                DsAPI.DsSendStringCommand("startlabel" + players[i].NR_IN_DS + " intensity 60 dur 1");
                DsAPI.DsSendStringCommand("scene add startlabel" + players[i].NR_IN_DS);
                offset += labelwidth;
            }

            Thread.Sleep(600);
        }
예제 #6
0
파일: Item.cs 프로젝트: tscheckie/SNICE
        public void start()
        {
            isActive = true;
            int effectDirection = rnd.Next(0, 1);

            collectSound.play();

            switch (EFFECT_NR)
            {
            case 0:     // Turn
                if (effectDirection == 0)
                {
                    DsAPI.DsSendStringCommand("eye attitude cartesian rate 10 0 0 duration 1");
                }
                else
                {
                    DsAPI.DsSendStringCommand("eye attitude cartesian rate -10 0 0 duration 1");
                }
                break;

            case 1:     // Border
                moveUpBorder(true);
                break;

            case 2:     // Siren
                DsAPI.DsSendStringCommand("sirens_effect intensity 90 duration 2");
                if (effectDirection == 0)
                {
                    DsAPI.DsSendStringCommand("sirens_effect attitude cartesian rate 200 0 0 duration 2 ");
                }
                else
                {
                    DsAPI.DsSendStringCommand("sirens_effect attitude cartesian rate -200 0 0 duration 2 ");
                }
                break;

            case 3:     // Eraser
                // delete trails
                for (int i = 0; i < Game.numberOfControllers; i++)
                {
                    DsAPI.DsSendStringCommand("trail" + Game.players[i].NR_IN_DS + " delete");
                }
                // delete items
                for (int i = 0; i < Game.items.Length; i++)
                {
                    if (Game.items[i].onscreen)
                    {
                        Game.items[i].justCollected = true;
                    }
                }

                // add trails
                Game.Script.PlaySkript(Properties.Resources.InitTrails);
                Thread.Sleep(200);
                for (int i = 0; i < Game.numberOfControllers; i++)
                {
                    Game.colorValue.Red   = Game.players[i].RED;
                    Game.colorValue.Green = Game.players[i].GREEN;
                    Game.colorValue.Blue  = Game.players[i].BLUE;

                    DsAPI.DsSetObjectAttr(Game.trailObjId[i], Game.trailColAttrIndex, Game.colorValue, true);
                }
                // init sections
                Game.InitSections();
                break;

            case 4:     // Flashbomb
                break;
            }
        }
예제 #7
0
파일: Item.cs 프로젝트: tscheckie/SNICE
        public void moveUpBorder(bool isWarning)
        {
            short ID;

            if (isWarning)
            {
                ID = objIdWarning;
            }
            else
            {
                ID = objIdBorder;
            }

            if (borderY == 0.5)
            {
                borderZ = 131;
            }
            if (borderY == 10.5)
            {
                borderZ = 262;
            }
            if (borderY == 15.5)
            {
                borderZ = 400;
            }
            if (borderY == 20.5)
            {
                borderZ = 545;
            }
            if (borderY == 25.5)
            {
                borderZ = 700;
            }
            if (borderY == 30.5)
            {
                borderZ = 865;
            }
            if (borderY == 35.5)
            {
                borderZ = 1050;
            }
            if (borderY == 40.5)
            {
                borderZ = 1260;
            }
            if (borderY == 45.5)
            {
                borderZ = 1500;
            }
            if (borderY == 50.5)
            {
                borderZ = 1780;
            }
            if (borderY == 55.5)
            {
                borderZ = 2150;
            }
            if (borderY == 60.5)
            {
                borderZ = 2600;
            }
            if (borderY == 65.5)
            {
                borderZ = 3200;
            }
            if (borderY == 70.5)
            {
                borderZ = 4120;
            }
            if (borderY == 75.5)
            {
                borderZ = 5560;
            }
            if (borderY == 80.5)
            {
                borderZ = 9000;
            }

            positionValueCar.X = 0;
            positionValueCar.Y = 0;
            positionValueCar.Z = borderZ;
            DsAPI.DsSetObjectAttr(ID, positionAttrIndex, positionValueCar, true);

            if (isWarning)
            {
                DsAPI.DsSendStringCommand("script include " + Game.path + "DsScripts/Border_Item_Fade.ds");
            }

            else
            {
                // check if there is an item in this ring
                for (int i = 0; i < Game.items.Length; i++)
                {
                    if (Game.items[i].onscreen)
                    {
                        Game.items[i].remove();
                    }
                }

                borderY   += 5;
                borderLvl += 1;
            }
        }
예제 #8
0
파일: Game.cs 프로젝트: tscheckie/SNICE
        public static void GameDone(bool debug)
        {
            // ----------------------------------------------------------------------------------------
            if (debug)
            {
                for (int i = 0; i < numberOfControllers; i++)
                {
                    DsAPI.DsSendStringCommand("trail" + +players[i].NR_IN_DS + " delete");
                    DsAPI.DsSendStringCommand("scene remove snake" + players[i].NR_IN_DS);
                }
            }

            // -----------------------------------------------------------------------------------------

            DsAPI.DsSendStringCommand("BG intensity 0 duration 2");
            DsAPI.DsSendStringCommand("BG_ss frame 0");
            DsAPI.DsSendStringCommand("pointstotal intensity 0 dur 1");

            for (int i = 0; i < players.Length; i++)
            {
                if (players[i] != null)
                {
                    DsAPI.DsSendStringCommand("points" + players[i].NR_IN_DS + " intensity 0 duration 1");
                    DsAPI.DsSendStringCommand("counter" + players[i].NR_IN_DS + " intensity 0 duration 1");
                    DsAPI.DsSendStringCommand("startlabel" + players[i].NR_IN_DS + " intensity 0 duration 1");
                }
            }

            for (int i = 0; i < players.Length; i++)
            {
                if (players[i] != null)
                {
                    DsAPI.DsSendStringCommand("startlabel" + players[i].NR_IN_DS + " modelTexture 0 " + path + "/img/label/label_" + players[i].NR_IN_DS + ".dds");
                    DsAPI.DsSendStringCommand("scene remove points" + players[i].NR_IN_DS);
                    DsAPI.DsSendStringCommand("scene remove counter" + players[i].NR_IN_DS);
                    DsAPI.DsSendStringCommand("scene remove startlabel" + players[i].NR_IN_DS);
                }
            }


            DsAPI.DsSendStringCommand("eye reset");
            DsAPI.DsSendStringCommand("pointstotal intensity 0 dur 1");
            DsAPI.DsSendStringCommand("pointstotal attitude cartesian rate 0 0 0 dur 1");

            Thread.Sleep(100);



            DsAPI.DsSendStringCommand("BG intensity 100 duration 1");

            // Hier muss noch die Gameloopmusic auf null gesetzt werden und anhalten
            gameLoop.setVolume(0, 2);
            gameLoop.stop();
            //  Hier muss noch der gewinner sound abgespielt werden
            winSound.play();
            // Hier muss noch kontrolleirt werden wer alles gewonnen hat
            for (int i = 0; i < winners.Length; i++)
            {
                if (i == numberOfWinners - 1)
                {
                    int z = i + 1;
                    positionValue.Azimuth   = -90;
                    positionValue.Elevation = 5 * (z + 3);
                    positionValue.Distance  = 11;
                    DsAPI.DsSetObjectAttr(winnersObjId, smcPosAttrIndex, positionValue, true);
                    DsAPI.DsSendStringCommand("winners intensity 100 dur 1");
                }


                if (winners[i] > -1)
                {
                    positionValue.Azimuth   = -90;
                    positionValue.Elevation = 5 * (i + 3);
                    positionValue.Distance  = 11;
                    DsAPI.DsSetObjectAttr(playerObjId[winners[i]], smcPosAttrIndex, positionValue, true);

                    scaleValue.X = scaleValue.Y = scaleValue.Z = 0.5;
                    DsAPI.DsSetObjectAttr(playerObjId[winners[i]], smcScaleAttrIndex, scaleValue, true); // duration 2 fehlt noch

                    DsAPI.DsSendStringCommand("player" + players[winners[i]].NR_IN_DS + " intensity 100 dur 1");
                }
            }

            Thread.Sleep(4000);

            for (int i = 0; i < winners.Length; i++)
            {
                if (i == numberOfWinners - 1)
                {
                    int z = i + 1;
                    DsAPI.DsSendStringCommand("winners intensity 0 dur 1");
                }

                if (winners[i] > -1)
                {
                    scaleValue.X = scaleValue.Y = scaleValue.Z = 0;
                    DsAPI.DsSetObjectAttr(playerObjId[winners[i]], smcScaleAttrIndex, scaleValue, true); // duration 2 fehlt noch
                    DsAPI.DsSendStringCommand("player" + players[winners[i]].NR_IN_DS + " intensity 0 dur 1");
                }
            }

            Thread.Sleep(2000);

            for (int i = 0; i < numberOfControllers; i++)
            {
                players[i] = null;
            }

            status = "init"; // Initialize the menu
        }
예제 #9
0
파일: Game.cs 프로젝트: tscheckie/SNICE
        public void RoundInit()
        {
            // Set the startlabels
            // Set player varibles right
            playersAlive = 0;
            for (int i = 0; i < numberOfControllers; i++)
            {
                playersAlive++;
                players[i].isAlive = true;
                players[i].dir     = "up";
                DsAPI.DsSendStringCommand("startlabel" + players[i].NR_IN_DS + " modelTexture 0 " + path + "/img/label/label.dds");
                DsAPI.DsSendStringCommand("startlabel" + players[i].NR_IN_DS + " int 100 dur 1");
            }


            // Inits Trails and Countdown

            Script.PlaySkript(Properties.Resources.InitTrails);

            double angle = 360 / numberOfControllers;

            //Display the snakes
            for (int i = 0; i < numberOfControllers; i++)
            {
                players[i].setPos(angle * i - 180, 5);
                positionValue.Azimuth   = players[i].x;
                positionValue.Elevation = players[i].y;
                positionValue.Distance  = 11;
                DsAPI.DsSetObjectAttr(snakeObjId[i], smcPosAttrIndex, positionValue, true);

                colorValue.Red   = players[i].RED;
                colorValue.Green = players[i].GREEN;
                colorValue.Blue  = players[i].BLUE;

                DsAPI.DsSetObjectAttr(trailObjId[i], trailColAttrIndex, colorValue, true);

                DsAPI.DsSendStringCommand("trail" + players[i].NR_IN_DS + " intensity 0");
                DsAPI.DsSendStringCommand("scene add snake" + players[i].NR_IN_DS);
            }

            Script.PlaySkript(Properties.Resources.Countdown);

            //Display the snakes
            for (int i = 0; i < numberOfControllers; i++)
            {
                DsAPI.DsSendStringCommand("trail" + players[i].NR_IN_DS + " intensity 100 dur 1");
            }

            // Empty the position arrays
            clearSections();
            // Wait for the countdown to end

            frame  = 0;
            status = "running";

            // Fade out the startlabels
            for (int i = 0; i < numberOfControllers; i++)
            {
                DsAPI.DsSendStringCommand("startlabel" + players[i].NR_IN_DS + " int 0 dur 1");
            }
        }
예제 #10
0
파일: Game.cs 프로젝트: tscheckie/SNICE
        // Game Strucutre ---------------------------------

        public void GameInit()
        {
            // Stop the music (fade out)
            gameLoop.setVolume(0, 5);
            // Change the background image to the game grid background
            DsAPI.DsSendStringCommand("BG_ss frame 4");
            // Fade the background image in
            DsAPI.DsSendStringCommand("BG intensity 100 duration 1");

            // Calculate the position for the player related objects such as startlabel, score, ect.
            // the distance between the objects depends on the number of players --> calc the angle
            double angle = 360 / numberOfControllers;

            // Init points, counter and startlabel
            for (int i = 0; i < numberOfControllers; i++)
            {
                double horizontalPlayerPosition = angle * i - 180; // calculate the objects position depending on player number with a 180 degree shift because values must go from -180 to 180
                // Set the points (text obejct)
                positionValue.Azimuth   = horizontalPlayerPosition;
                positionValue.Elevation = 83.2;
                positionValue.Distance  = 9;
                DsAPI.DsSetObjectAttr(pointsObjId[i], t2cPosAttrIndex, positionValue, true);
                textValue.Value = Convert.ToString(players[i].points);
                DsAPI.DsSetObjectAttr(pointsObjId[i], t2cTextAttrIndex, textValue, true);

                colorValue.Red   = players[i].RED;
                colorValue.Green = players[i].GREEN;
                colorValue.Blue  = players[i].BLUE;

                DsAPI.DsSetObjectAttr(pointsObjId[i], t2cColAttrIndex, colorValue, true);

                DsAPI.DsSendStringCommand("scene add points" + players[i].NR_IN_DS);
                // Set the counter (frame around points)
                DsAPI.DsSendStringCommand("points" + players[i].NR_IN_DS + " intensity 100 duration 2");
                DsAPI.DsSendStringCommand("counter" + players[i].NR_IN_DS + " modelTexture 0 " + path + "img/counter/Counter" + numberOfControllers + "-0" + i + ".png");
                DsAPI.DsSendStringCommand("counter" + players[i].NR_IN_DS + " attitude 0 -90 " + horizontalPlayerPosition);
                DsAPI.DsSendStringCommand("scene add counter" + players[i].NR_IN_DS);
                // Set the startlabel
                DsAPI.DsSendStringCommand("counter" + players[i].NR_IN_DS + " intensity 100 duration 2 ");
                DsAPI.DsSendStringCommand("startlabel" + players[i].NR_IN_DS + " position spherical " + horizontalPlayerPosition + " 5 11 dur 2");
                DsAPI.DsSendStringCommand("scene add startlabel" + players[i].NR_IN_DS);
            }

            // Calc and display points total (needed to win game)
            pointsTotal = numberOfControllers * pointsTotalFactor;

            textValue.Value = Convert.ToString(pointsTotal);
            if (pointsTotal == 6 || pointsTotal == 9)
            {
                textValue.Value += ".";                                       // append '.' so 6 and 9 are distinguishable
            }
            DsAPI.DsSetObjectAttr(pointsTotalObjId, t2cTextAttrIndex, textValue, true);

            DsAPI.DsSendStringCommand("pointstotal intensity 100 dur 1");
            DsAPI.DsSendStringCommand("pointstotal attitude cartesian rate 5 0 0 dur 1");

            // Stop the rotation of the eye
            DsAPI.DsSendStringCommand("eye attitude cartesian rate 0 0 0 duration 1");

            for (int i = 0; i < winners.Length; i++)
            {
                winners[i] = -1;
            }
            numberOfWinners = 0;

            // Init first round
            RoundInit();
        }