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(); } } }
// 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); }
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); }
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; }
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); }
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; } }
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; } }
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 }
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"); } }
// 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(); }