Adding
How do I use Adding
Below are practical examples compiled from projects for learning and reference purposes
Featured Snippets
File name: HubGui.cs
Copy
22 void Start()
23 {
24 m_Headline = new GUIStyle(this.Skin.label);
25 m_Headline.padding = new RectOffset(3, 0, 0, 0);
26 }
File name: PhotonGUI.cs
Copy
11 {
12 get
13 {
14 if( m_DefaultTitleStyle == null )
15 {
16 m_DefaultTitleStyle = new GUIStyle();
17 m_DefaultTitleStyle.border = new RectOffset( 2, 2, 2, 1 );
18 m_DefaultTitleStyle.margin = new RectOffset( 5, 5, 5, 0 );
19 m_DefaultTitleStyle.padding = new RectOffset( 5, 5, 0, 0 );
20 m_DefaultTitleStyle.alignment = TextAnchor.MiddleLeft;
21 m_DefaultTitleStyle.normal.background = ReorderableListResources.texTitleBackground;
22 m_DefaultTitleStyle.normal.textColor = EditorGUIUtility.isProSkin
23 ? new Color( 0.8f, 0.8f, 0.8f )
24 : new Color( 0.2f, 0.2f, 0.2f );
25 }
26
27 return m_DefaultTitleStyle;
28 }
29 }
File name: PhotonGUI.cs
Copy
33 {
34 get
35 {
36 if( m_DefaultContainerStyle == null )
37 {
38 m_DefaultContainerStyle = new GUIStyle();
39 m_DefaultContainerStyle.border = new RectOffset( 2, 2, 1, 2 );
40 m_DefaultContainerStyle.margin = new RectOffset( 5, 5, 5, 5 );
41 m_DefaultContainerStyle.padding = new RectOffset( 1, 1, 2, 2 );
42 m_DefaultContainerStyle.normal.background = ReorderableListResources.texContainerBackground;
43 }
44
45 return m_DefaultContainerStyle;
46 }
47 }
File name: PhotonGUI.cs
Copy
88 {
89 get
90 {
91 if( m_DefaultContainerRowStyle == null )
92 {
93 m_DefaultContainerRowStyle = new GUIStyle();
94 m_DefaultContainerRowStyle.border = new RectOffset( 2, 2, 2, 2 );
95
96 m_DefaultContainerRowStyle.margin = new RectOffset( 5, 5, 5, 5 );
97 m_DefaultContainerRowStyle.padding = new RectOffset( 1, 1, 2, 2 );
98 m_DefaultContainerRowStyle.normal.background = ReorderableListResources.texContainerBackground;
99 }
100
101 return m_DefaultContainerRowStyle;
102 }
103 }
File name: NetworkingPeer.cs
Copy
594 private void AddNewPlayer(int ID, PhotonPlayer player)
595 {
596 if (!this.mActors.ContainsKey(ID))
597 {
598 this.mActors[ID] = player;
599 RebuildPlayerListCopies();
600 }
601 else
602 {
603 Debug.LogError("Adding player twice: " + ID);
604 }
605 }
File name: NetworkingPeer.cs
Copy
2688 public void RegisterPhotonView(PhotonView netView)
2689 {
2690 if (!Application.isPlaying)
2691 {
2692 this.photonViewList = new Dictionary
2693 return;
2694 }
2695
2696 if (netView.viewID == 0)
2697 {
2698 // don't register views with ID 0 (not initialized). they register when a ID is assigned later on
2699 Debug.Log("PhotonView register is ignored, because viewID is 0. No id assigned yet to: " + netView);
2700 return;
2701 }
2702
2703 if (this.photonViewList.ContainsKey(netView.viewID))
2704 {
2705 // if some other view is in the list already, we got a problem. it might be undestructible. print out error
2706 if (netView != photonViewList[netView.viewID])
2707 {
2708 Debug.LogError(string.Format("PhotonView ID duplicate found: {0}. New: {1} old: {2}. Maybe one wasn't destroyed on scene load?! Check for 'DontDestroyOnLoad'. Destroying old entry, adding new.", netView.viewID, netView, photonViewList[netView.viewID]));
2709 }
2710
2711 //this.photonViewList.Remove(netView.viewID); // TODO check if we chould Destroy the GO of this view?!
2712 this.RemoveInstantiatedGO(photonViewList[netView.viewID].gameObject, true);
2713 }
2714
2715 // Debug.Log("adding view to known list: " + netView);
2716 this.photonViewList.Add(netView.viewID, netView);
2717 //Debug.LogError("view being added. " + netView); // Exit Games internal log
2718
2719 if (PhotonNetwork.logLevel >= PhotonLogLevel.Full)
2720 Debug.Log("Registered PhotonView: " + netView.viewID);
2721 }
File name: PingCloudRegions.cs
Copy
118 public IEnumerator PingSocket(Region region)
119 {
120 region.Ping = Attempts*MaxMilliseconsPerPing;
121
122 this.PingsRunning++; // TODO: Add try-catch to make sure the PingsRunning are reduced at the end and that the lib does not crash the app
123 PhotonPing ping;
124 //Debug.Log("PhotonHandler.PingImplementation " + PhotonHandler.PingImplementation);
125 if (PhotonHandler.PingImplementation == typeof(PingNativeDynamic))
126 {
127 Debug.Log("Using constructor for new PingNativeDynamic()"); // it seems on android, the Activator can't find the default Constructor
128 ping = new PingNativeDynamic();
129 }
130 else
131 {
132 ping = (PhotonPing)Activator.CreateInstance(PhotonHandler.PingImplementation);
133 }
134
135 //Debug.Log("Ping is: " + ping + " type " + ping.GetType());
136
137 float rttSum = 0.0f;
138 int replyCount = 0;
139
140
141 // PhotonPing.StartPing() requires a plain IP address without port (on all but Windows 8 platforms).
142 // So: remove port and do the DNS-resolving if needed
143 string cleanIpOfRegion = region.HostAndPort;
144 int indexOfColon = cleanIpOfRegion.LastIndexOf(':');
145 if (indexOfColon > 1)
146 {
147 cleanIpOfRegion = cleanIpOfRegion.Substring(0, indexOfColon);
148 }
149 cleanIpOfRegion = ResolveHost(cleanIpOfRegion);
150 //Debug.Log("Resolved and port-less IP is: " + cleanIpOfRegion);
151
152
153 for (int i = 0; i < Attempts; i++)
154 {
155 bool overtime = false;
156 Stopwatch sw = new Stopwatch();
157 sw.Start();
158
159 try
160 {
161 ping.StartPing(cleanIpOfRegion);
162 }
163 catch (Exception e)
164 {
165 Debug.Log("catched: " + e);
166 this.PingsRunning--;
167 break;
168 }
169
170
171 while (!ping.Done())
172 {
173 if (sw.ElapsedMilliseconds >= MaxMilliseconsPerPing)
174 {
175 overtime = true;
176 break;
177 }
178 yield return 0; // keep this loop tight, to avoid adding local lag to rtt.
179 }
180 int rtt = (int)sw.ElapsedMilliseconds;
181
182
183 if (IgnoreInitialAttempt && i == 0)
184 {
185 // do nothing.
186 }
187 else if (ping.Successful && !overtime)
188 {
189 rttSum += rtt;
190 replyCount++;
191 region.Ping = (int)((rttSum) / replyCount);
192 //Debug.Log("region " + region.Code + " RTT " + region.Ping + " success: " + ping.Successful + " over: " + overtime);
193 }
194
195 yield return new WaitForSeconds(0.1f);
196 }
197
198 this.PingsRunning--;
199
200 //Debug.Log("this.PingsRunning: " + this.PingsRunning + " this debug: " + ping.DebugString);
201 yield return null;
202 }
File name: GameControllerScript.cs
Copy
248 private void adjustConnectors() {
249 int j, k, axis;
250 ConnectorScript connectorScript;
251 bool show;
252// for (j = 0; j <= 2; j++) {
253// for (k = 0; k <= 2; k++) {
254// for (axis = 0; axis <= 2; axis++) {
255// connectorScript = this.connectors[j,k,axis].gameObject.GetComponent("ConnectorScript") as ConnectorScript;
256// connectorScript.show = true;
257//
258// if (this.options.board_type == "Hollow Cube") {
259// if(j == 1 & k == 1) {
260// connectorScript.show = false;
261// }
262// }
263//
264// if (this.options.board_type == "Box Outline") { //Box Outline
265// if(j == 1 || k == 1) {
266// connectorScript.show = false;
267// }
268// }
269//
270// if (this.options.board_type == "Four Walls") {
271// //remove center connector on the x axis
272// if(axis == 0 && j == 1 & k == 1) {
273// connectorScript.show = false;
274// }
275// //remove 3 center connectors on the y axis
276// if(axis == 1 && j == 1) {
277// connectorScript.show = false;
278// }
279// //remove 3 center connectors on the z axis
280// if(axis == 2 && k == 1) {
281// connectorScript.show = false;
282// }
283// }
284//
285//
286// if (this.options.board_type == "No Corners") {
287// if(j != 1 && k != 1) {
288// connectorScript.show = false;
289// }
290// }
291// }}}
292 }
293
294 public bool doMove (string axis, int direction) {
295 int loop1, loop2; //looping variables
296 int x, y, z; //block location variables
297 int numMoves = 0; //number of moves to make
298 int scoreChange = 0;
299 bool blockCollision = false;
300 bool blockCollisionSound = false;
301 Transform blockA, blockB, blockC; //variables for holding the three blocks in a row
302 IDictionary
303 IDictionary
304 int[,,] numbersAfterMove = new int[3,3,3];
305;
306 if (PlayerPrefs.GetString ("game_status") != "playing") return false;
307 if (this.gameView != "game") return false;
308
309 //loop through each of the 9 rows to be calculated
310 for(loop1 = 0; loop1 <=2; loop1++) {
311 for(loop2 = 0; loop2 <=2; loop2++) {
312 if (axis == "x") {
313 y = loop1;
314 z = loop2;
315 if (direction == 1) {
316 blockA= this.blocks[0,y,z];
317 blockB= this.blocks[1,y,z];
318 blockC= this.blocks[2,y,z];
319 }
320 else {
321 blockA= this.blocks[2,y,z];
322 blockB= this.blocks[1,y,z];
323 blockC= this.blocks[0,y,z];
324 }
325 }
326 else if (axis == "y") {
327 x = loop1;
328 z = loop2;
329 if (direction == 1) {
330 blockA= this.blocks[x,0,z];
331 blockB= this.blocks[x,1,z];
332 blockC= this.blocks[x,2,z];
333 }
334 else {
335 blockA= this.blocks[x,2,z];
336 blockB= this.blocks[x,1,z];
337 blockC= this.blocks[x,0,z];
338 }
339 }
340 else {
341 x = loop1;
342 y = loop2;
343 if (direction == 1) {
344 blockA= this.blocks[x,y,0];
345 blockB= this.blocks[x,y,1];
346 blockC= this.blocks[x,y,2];
347 }
348 else {
349 blockA= this.blocks[x,y,2];
350 blockB= this.blocks[x,y,1];
351 blockC= this.blocks[x,y,0];
352 }
353 }
354 calculateRowChanges(this.getBlockNumber(blockA), this.getBlockNumber(blockB), this.getBlockNumber(blockC), ref scoreChange, ref newNumbers, ref shiftBy, ref blockCollision);
355
356 blockA.GetComponent
357 blockB.GetComponent
358 blockC.GetComponent
359
360 numMoves = numMoves + shiftBy["a"] + shiftBy["b"] + shiftBy["c"];
361 if (blockCollision) blockCollisionSound = true;
362
363 int newHighestBlock = 0;
364 if(newNumbers["a"] > PlayerPrefs.GetInt ("game_highest_block")) newHighestBlock = newNumbers["a"];
365 if(newNumbers["b"] > PlayerPrefs.GetInt ("game_highest_block")) newHighestBlock = newNumbers["b"];
366 if(newNumbers["c"] > PlayerPrefs.GetInt ("game_highest_block")) newHighestBlock = newNumbers["c"];
367
368 if (newHighestBlock > 0) {
369 PlayerPrefs.SetInt ("game_highest_block", newHighestBlock);
370 if (newHighestBlock == 2048) PlayerPrefs.SetString("game_status","game_won");
371 PlayerPrefs.Save ();
372 this.timer.SetNextBlockTarget(newHighestBlock);
373 if (newHighestBlock > this.getHighestBlock()) this.SetHighestBlock(newHighestBlock);
374 }
375
376
377
378
379 PlayerPrefs.Save ();
380
381 //save the numbers after the move for redo
382 numbersAfterMove[blockA.GetComponent
383 blockA.GetComponent
384 blockA.GetComponent
385
386 numbersAfterMove[blockB.GetComponent
387 blockB.GetComponent
388 blockB.GetComponent
389
390 numbersAfterMove[blockC.GetComponent
391 blockC.GetComponent
392 blockC.GetComponent
393 }
394 }
395
396 if(blockCollisionSound && this.options.play_sounds) {
397 this.collideAudioSource.PlayDelayed(this.moveDuration);
398 }
399
400 if (numMoves > 0) {
401 this.moveStartTime = Time.time;
402 this.setScore (this.score + scoreChange);
403 if(this.options.play_sounds) {
404 if (axis == "x") this.swipeAudioSource.PlayOneShot(swipeSoundX);
405 if (axis == "y") this.swipeAudioSource.PlayOneShot(swipeSoundY);
406 if (axis == "z") this.swipeAudioSource.PlayOneShot(swipeSoundZ);
407 }
408 return true;
409 }
410 else {
411 return false;
412 }
413 }
414
415 //Determine the possible successful combines between 3 blockNumbers (a,b,c) being pushed toward c
416 void calculateRowChanges (int a, int b, int c, ref int scoreChange, ref IDictionary
417 blockCollision = false;
418
419 //first check if we have any -2 values which signify that blocks cant merge along this connector
420 if(a == -2 || b == -2 || c == -2) {
421 newNumbers["a"] = a;
422 newNumbers["b"] = b;
423 newNumbers["c"] = c;
424 shiftBy["a"] = 0;
425 shiftBy["b"] = 0;
426 shiftBy["c"] = 0;
427 }
428 else {
429 //figure out if any of the three merges occurred
430 shiftBy ["c"] = 0;
431 if (c > -1 && c == b) { //b and c merged
432 scoreChange = scoreChange + c*2;
433 blockCollision = true;
434 newNumbers["c"] = c*2;
435 newNumbers["b"] = a;
436 newNumbers["a"] = -1;
437 shiftBy["b"] = 1;
438 if(a > -1) {
439 shiftBy["a"] = 1;
440 }
441 else if (a == -1) {
442 shiftBy["a"] = 0;
443 }
444 }
445 else if (b > -1 && a == b) { //a and b merged
446 scoreChange = scoreChange + a*2;
447 blockCollision = true;
448 if(c == -1) {
449 newNumbers["c"] = b*2;
450 newNumbers["b"] = -1;
451 newNumbers["a"] = -1;
452 shiftBy["b"] = 1;
453 shiftBy["a"] = 2;
454 }
455 else {
456 newNumbers["c"] = c;
457 newNumbers["b"] = b*2;
458 newNumbers["a"] = -1;
459 shiftBy["b"] = 0;
460 shiftBy["a"] = 1;
461 }
462 }
463 else if (c > -1 && a == c && b == -1) { //a and c merged
464 scoreChange = scoreChange + c*2;
465 blockCollision = true;
466 newNumbers["c"] = c*2;
467 newNumbers["b"] = -1;
468 newNumbers["a"] = -1;
469 shiftBy["b"] = 0;
470 shiftBy["a"] = 2;
471 } //end of merges block
472 else { //no merges occurred
473 if(c > -1) { //last column has number
474 newNumbers["c"] = c;
475 if(b > -1) { //second column has number
476 newNumbers["b"] = b;
477 newNumbers["a"] = a;
478 shiftBy["b"] = 0;
479 shiftBy["a"] = 0;
480 }
481 else if(b == -1) {//second column empty
482 newNumbers["b"] = a;
483 newNumbers["a"] = -1;
484 shiftBy["b"] = 0;
485 if (a == -1) {
486 shiftBy["a"] = 0;
487 }
488 else {
489 shiftBy["a"] = 1;
490 }
491 }
492
493 } //end of block for value in c column
494 else if (c == -1) { //first column empty
495 if(b > -1) { //second column has number
496 newNumbers["c"] = b;
497 newNumbers["b"] = a;
498 newNumbers["a"] = -1;
499 shiftBy["b"] = 1;
500 if(a > -1) {
501 shiftBy["a"] = 1;
502 }
503 else {
504 shiftBy["a"] = 0;
505 }
506
507 }
508 else if(b == -1) { //second column empty and first column empty
509 newNumbers["c"] = a;
510 newNumbers["b"] = -1;
511 newNumbers["a"] = -1;
512 shiftBy["b"] = 0;
513 if (a == -1) {
514 shiftBy["a"] = 0;
515 }
516 else {
517 shiftBy["a"] = 2;
518 }
519 }
520 }
521 } //end of no merges block
522 } //end of check for -2;
523 }
524
525
526 void Update (){
527 int x =0, y=0, z=0, newNumber=0;
528 if(GameControllerScript.performRestart) {
529 this.restart ();
530 GameControllerScript.performRestart = false;
531 }
532 if(moveStartTime >= 0) {
533 if(Time.time - this.moveStartTime > this.moveDuration + 0.05F) {
534 this.fillRandomBlock(ref x, ref y, ref z, ref newNumber);
535 this.saveHistory ();
536 this.moveStartTime = -1F;
537 if(this.getEmptyBlocks().Count == 0) {
538 if(this.CheckGameOver()) {
539 PlayerPrefs.SetString ("game_status", "game_over");
540 PlayerPrefs.Save();
541 }
542 }
543 }
544 }
545 else {
546 bool moved;
547 if (Input.GetKeyUp("right")) moved = this.doMove ("x", 1);
548 if (Input.GetKeyUp("left")) moved = this.doMove ("x", -1);
549 if (Input.GetKeyUp("up")) moved = this.doMove ("y", 1);
550 if (Input.GetKeyUp("down")) moved = this.doMove ("y", -1);
551 if (Input.GetKeyUp("a")) moved = this.doMove ("z", 1);
552 if (Input.GetKeyUp("z")) moved = this.doMove ("z", -1);
553 }
554 this.adjustConnectors();
555 if (Input.GetKey(KeyCode.Escape))
556 {
557 Application.Quit();
558 }
559 }
560
561 void FixedUpdate () {
562 }
563
564 void setScore(int score) {
565 this.score = score;
566 PlayerPrefs.SetInt ("score", score);
567
568 //handle setting high score
569 if(this.score > this.GetHighScore()) {
570 this.SetHighScore(this.score);
571 }
572 }
573
574 public void restart() {
575 int[,,] positions = new int[3, 3, 3];
576 int x=0, y=0, z=0, newNumber=0;
577 this.gameLight.intensity = this.lightIntensity;
578
579 for (x = 0; x <= 2; x++) {
580 for (y = 0; y <= 2; y++) {
581 for (z = 0; z <= 2; z++) {
582 this.setBlockNumber(this.blocks[x,y,z], this.getInitialBlockNumber(x,y,z));
583 positions[x,y,z] = -1;
584 }
585 }
586 }
587
588 this.adjustConnectors ();
589
590 PlayerPrefs.SetString ("redo_moves2","");
591 PlayerPrefs.SetString ("redo_moves1","");
592 PlayerPrefs.SetString ("redo_moves0","");
593 PlayerPrefs.SetInt ("redos", 2);
594 PlayerPrefs.SetString ("game_status", "playing");
595 PlayerPrefs.SetInt ("game_highest_block", 0);
596 PlayerPrefs.SetInt ("cube_rotation_x", 0);
597 PlayerPrefs.SetInt ("cube_rotation_y", 0);
598 PlayerPrefs.SetInt ("cube_rotation_z", 0);
599 PlayerPrefs.Save ();
600
601 this.fillRandomBlock(ref x, ref y, ref z, ref newNumber);
602 positions [x, y, z] = newNumber;
603 this.fillRandomBlock(ref x, ref y, ref z, ref newNumber);
604 positions [x, y, z] = newNumber;
605 this.saveHistory();
606
607 this.setScore (0);
608
609 TimerScript timerScript = this.gameObject.GetComponent ("TimerScript") as TimerScript;
610 timerScript.ResetTimer();
611 }
612
613 public int GetHighScore()
614 {
615 string key = "highscore-" + options.GetOptionsKey();
616 if (PlayerPrefs.HasKey (key)) {
617 return PlayerPrefs.GetInt (key);
618 }
619 else {
620 this.SetHighScore(0);
621 return 0;
622 }
623 }
624
625 void SetHighScore(int myHighScore)
626 {
627 string key = "highscore-" + options.GetOptionsKey();
628 PlayerPrefs.SetInt( key, myHighScore );
629 PlayerPrefs.Save();
630 }
631
632 public int getHighestBlock()
633 {
634 string key = "highestblock-" + options.GetOptionsKey();
635 if (PlayerPrefs.HasKey (key)) {
636 return PlayerPrefs.GetInt (key);
637 }
638 else {
639 this.SetHighestBlock(0);
640 return 0;
641 }
642 }
643
644 void SetHighestBlock(int highestBlock)
645 {
646 string key = "highestblock-" + options.GetOptionsKey();
647 PlayerPrefs.SetInt( key, highestBlock );
648 PlayerPrefs.Save();
649 }
650
651 private bool CheckGameOver() {
652
653 string[] axisList = new string[3] {"x", "y", "z"};
654 int direction = 1;
655 string axis = "x";
656 int loop1, loop2, loopAxis; //looping variables
657 int x, y, z; //block location variables
658 int numMoves = 0; //number of moves to make
659 int scoreChange = 0;
660 bool blockCollision = false;
661 Transform blockA, blockB, blockC; //variables for holding the three blocks in a row
662 IDictionary
663 IDictionary
664
665 //loop through each of the 9 rows to be calculated
666 for(loopAxis = 0; loopAxis < 3; loopAxis ++) {
667 axis = axisList[loopAxis];
668 for(direction = -1; direction < 2; direction += 2) {
669 for(loop1 = 0; loop1 <=2; loop1++) {
670 for(loop2 = 0; loop2 <=2; loop2++) {
671 if (axis == "x") {
672 y = loop1;
673 z = loop2;
674 if (direction == 1) {
675 blockA= this.blocks[0,y,z];
676 blockB= this.blocks[1,y,z];
677 blockC= this.blocks[2,y,z];
678 }
679 else {
680 blockA= this.blocks[2,y,z];
681 blockB= this.blocks[1,y,z];
682 blockC= this.blocks[0,y,z];
683 }
684 }
685 else if (axis == "y") {
686 x = loop1;
687 z = loop2;
688 if (direction == 1) {
689 blockA= this.blocks[x,0,z];
690 blockB= this.blocks[x,1,z];
691 blockC= this.blocks[x,2,z];
692 }
693 else {
694 blockA= this.blocks[x,2,z];
695 blockB= this.blocks[x,1,z];
696 blockC= this.blocks[x,0,z];
697 }
698 }
699 else {
700 x = loop1;
701 y = loop2;
702 if (direction == 1) {
703 blockA= this.blocks[x,y,0];
704 blockB= this.blocks[x,y,1];
705 blockC= this.blocks[x,y,2];
706 }
707 else {
708 blockA= this.blocks[x,y,2];
709 blockB= this.blocks[x,y,1];
710 blockC= this.blocks[x,y,0];
711 }
712 }
713 calculateRowChanges(this.getBlockNumber(blockA), this.getBlockNumber(blockB), this.getBlockNumber(blockC), ref scoreChange, ref newNumbers, ref shiftBy, ref blockCollision);
714
715 numMoves = numMoves + shiftBy["a"] + shiftBy["b"] + shiftBy["c"];
716 }
717 }
718 }
719 }
720 if (numMoves > 0) {
721 return false;
722 }
723 else {
724 return true;
725 }
726 }
727
728 void OnGUI() {
729 //GAME GUI
730 if (this.gameView == "game") {
731 GUI.skin = currentGUISkin;
732 this.gameLight.intensity = this.lightIntensity;
733 this.mainCamera.transform.eulerAngles = new Vector3 (16F, 29.5F, 0);
734
735 //create rotating buttons
736
737
738
739 if (PlayerPrefs.GetString ("game_status") == "game_over") {
740 GUI.Label (new Rect (0, Screen.height * 0.3f , Screen.width, Screen.height * 0.10F), "Game Over", "BigLabel");
741 this.gameLight.intensity = 0;
742 }
743 if (PlayerPrefs.GetString ("game_status") == "game_won") {
744 GUI.Label (new Rect (0, Screen.height * 0.3f , Screen.width, Screen.height * 0.10F), "You Won!", "BigLabel");
745 if (GUI.Button(new Rect(Screen.width * .33f, Screen.height * 0.4F, Screen.width * 0.30F, Screen.height * 0.06F),"Continue")) {
746 PlayerPrefs.SetString ("game_status", "playing");
747 PlayerPrefs.Save ();
748 }
749 this.gameLight.intensity = 0;
750 }
751
752 GUI.Label (new Rect (0, 0, Screen.width, Screen.height * 0.06F), "Score: " + this.score.ToString (), "BigLabel");
753 string highScoreText = "High Score/Block: " + this.GetHighScore ().ToString () + " / " + this.getHighestBlock ().ToString ();
754 GUI.Label (new Rect (0, Screen.height * 0.06F, Screen.width, Screen.height / 10), highScoreText, "SmallLabel");
755
756
757 GUIStyle style = currentGUISkin.GetStyle ("button");
758 //style.fontSize = 14;
759
760 if (GUI.Button(new Rect(1, Screen.height * 0.12F, Screen.width * 0.30F, Screen.height * 0.06F),"Menu")) {
761 this.gameView = "menu";
762 }
763 if (GUI.Button(new Rect(Screen.width * .33f, Screen.height * 0.12F, Screen.width * 0.33F, Screen.height * 0.06F),"Restart")) {
764 this.restart();
765 }
766 if (GUI.Button(new Rect(Screen.width * .7f, Screen.height * 0.12F, Screen.width * .3f, Screen.height * 0.06F), "Undo (" + PlayerPrefs.GetInt ("redos").ToString () + ")")) {
767 this.undo();
768 }
769
770
771 //Roation buttons
772
773
774 //GUI.Label(new Rect(Screen.width * .8f, Screen.height * 0.72F, Screen.width * .1f, Screen.height * 0.06F), "", "RotateButton");
775
776 //left button
777 if (GUI.Button(new Rect(Screen.width * .73f, Screen.height * 0.72F, Screen.width * .1f, Screen.height * 0.06F), "\t", "RotateButtonLeft")) {
778 this.rotateBlocks(Vector3.up);
779 }
780 //right button
781 if (GUI.Button(new Rect(Screen.width * .87f, Screen.height * 0.72F, Screen.width * .1f, Screen.height * 0.06F), "", "RotateButtonRight")) {
782 this.rotateBlocks(Vector3.down);
783 }
784 //up button
785 if (GUI.Button(new Rect(Screen.width * .8f, Screen.height * 0.675F, Screen.width * .1f, Screen.height * 0.06F), "", "RotateButtonUp")) {
786 this.rotateBlocks(Vector3.right);
787 }
788 //down button
789 if (GUI.Button(new Rect(Screen.width * .8f, Screen.height * 0.765F, Screen.width * .1f, Screen.height * 0.06F), "", "RotateButtonDown")) {
790 this.rotateBlocks(Vector3.left);
791 }
792 }
793 }
794
795 private void sizeGUI() {
796 this.currentGUISkin.GetStyle ("Label").fontSize = Mathf.CeilToInt(Screen.height * 0.04F);
797 this.currentGUISkin.GetStyle ("Button").fontSize = Mathf.CeilToInt(Screen.height * 0.04F);
798 this.currentGUISkin.GetStyle ("Subheader").fontSize = Mathf.CeilToInt(Screen.height * 0.05F);
799 this.currentGUISkin.GetStyle ("Toggle").fontSize = Mathf.CeilToInt(Screen.height * 0.04F);
800 this.currentGUISkin.GetStyle ("ToggleLabel").fontSize = Mathf.CeilToInt(Screen.height * 0.04F);
801 this.currentGUISkin.GetStyle ("ToggleLabelWarning").fontSize = Mathf.CeilToInt(Screen.height * 0.04F);
802
803 this.currentGUISkin.GetStyle ("SmallLabel").fontSize = Mathf.CeilToInt(Screen.height * 0.03F);
804
805 this.currentGUISkin.GetStyle ("BigLabel").fontSize = Mathf.CeilToInt(Screen.height * 0.06F);
806
807 this.currentGUISkin.GetStyle ("Toggle").padding.top = Mathf.CeilToInt(Screen.height * 0.04F);
808 this.currentGUISkin.GetStyle ("Toggle").padding.left = Mathf.CeilToInt(Screen.height * 0.04F);
809 }
810
811 private void saveHistory() {
812 int x,y,z;
813 string stringVal = "";
814
815 //create comma separated list of values
816 for (x = 0; x <= 2; x++) {
817 for (y = 0; y <= 2; y++) {
818 for (z = 0; z <= 2; z++) {
819 stringVal = stringVal + getBlockNumber(this.blocks[x,y,z]).ToString() + ",";
820 }
821 }
822 }
823 //add score and highest block to end of array
824 stringVal = stringVal + this.score.ToString() + "," + PlayerPrefs.GetInt ("game_highest_block").ToString();
825
826 PlayerPrefs.SetString ("redo_moves2",PlayerPrefs.GetString ("redo_moves1"));
827 PlayerPrefs.SetString ("redo_moves1",PlayerPrefs.GetString ("redo_moves0"));
828 PlayerPrefs.SetString ("redo_moves0",stringVal);
829
830 PlayerPrefs.Save();
831 }
832
833 private void undo() {
834 string[] positions = new string[27];
835 int myNum = 0;
836 char[] separator = {','};
837
838 if( PlayerPrefs.GetString ("game_status") != "game_over"
839 && PlayerPrefs.GetString ("redo_moves1") != ""
840 && PlayerPrefs.GetInt ("redos") > 0
841 ) {
842 positions = PlayerPrefs.GetString ("redo_moves1").Split (separator);
843 //loop through and set the block numbers for each block
844 for (int x = 0; x <= 2; x++) {
845 for (int y = 0; y <= 2; y++) {
846 for (int z = 0; z <= 2; z++) {
847 int.TryParse(positions[9*x+3*y+z], out myNum);
848 this.setBlockNumber(this.blocks[x,y,z],myNum);
849 }
850 }
851 }
852
853 //roll back the score
854 int.TryParse (positions[27], out myNum);
855 this.setScore (myNum);
856
857 //roll back the game_highest_block
858 int.TryParse (positions[28], out myNum);
859 PlayerPrefs.SetInt ("game_highest_block", myNum);
860
861 //move all the redo moves back
862 PlayerPrefs.SetString ("redo_moves0",PlayerPrefs.GetString ("redo_moves1"));
863 PlayerPrefs.SetString ("redo_moves1",PlayerPrefs.GetString ("redo_moves2"));
864 PlayerPrefs.SetString ("redo_moves2","");
865 PlayerPrefs.SetInt ("redos", PlayerPrefs.GetInt ("redos") - 1);
866 }
867 }
868
869 private void rotateBlocks(Vector3 direction) {
870 Transform block;
871 BlockScript blockScript;
872 Transform connector;
873 ConnectorScript connectorScript;
874 this.rotating = true;
875 for (int x = 0; x <= 2; x++) {
876 for (int y = 0; y <= 2; y++) {
877 for (int z = 0; z <= 2; z++) {
878 block = this.blocks[x,y,z];
879 block.GetComponent
880
881 for(int axis = 0; axis <=2; axis++) {
882 connector = this.connectors[x,y,z,axis];
883 connector.GetComponent
884 }
885 }
886 }
887 }
888 }
889
890 private void loadSavedGame() {
891 string[] positions = new string[27];
892 int positionNum = 0;
893 char[] separator = {','};
894 positions = PlayerPrefs.GetString ("redo_moves0").Split (separator);
895
896 for (int x = 0; x <= 2; x++) {
897 for (int y = 0; y <= 2; y++) {
898 for (int z = 0; z <= 2; z++) {
899 int.TryParse(positions[9*x+3*y+z], out positionNum);
900 this.setBlockNumber(this.blocks[x,y,z],positionNum);
901 }
902 }
903 }
904
905
906 this.adjustConnectors ();
907 this.setScore (PlayerPrefs.GetInt ("score"));
908
909 }
910}
911
912
File name: FlowLayoutGroup.cs
Copy
26 public override void CalculateLayoutInputHorizontal()
27 {
28
29 base.CalculateLayoutInputHorizontal();
30
31 var minWidth = GetGreatestMinimumChildWidth() + padding.left + padding.right;
32
33 SetLayoutInputForAxis(minWidth, -1, -1, 0);
34
35 }
File name: FlowLayoutGroup.cs
Copy
99 public float SetLayout(float width, int axis, bool layoutInput)
100 {
101 var groupHeight = rectTransform.rect.height;
102
103 // Width that is available after padding is subtracted
104 var workingWidth = rectTransform.rect.width - padding.left - padding.right;
105
106 // Accumulates the total height of the rows, including spacing and padding.
107 var yOffset = IsLowerAlign ? (float)padding.bottom : (float)padding.top;
108
109 var currentRowWidth = 0f;
110 var currentRowHeight = 0f;
111
112 for (var i = 0; i < rectChildren.Count; i++) {
113
114 // LowerAlign works from back to front
115 var index = IsLowerAlign ? rectChildren.Count - 1 - i : i;
116
117 var child = rectChildren[index];
118
119 var childWidth = LayoutUtility.GetPreferredSize(child, 0);
120 var childHeight = LayoutUtility.GetPreferredSize(child, 1);
121
122 // Max child width is layout group width - padding
123 childWidth = Mathf.Min(childWidth, workingWidth);
124
125 // If adding this element would exceed the bounds of the row,
126 // go to a new line after processing the current row
127 if (currentRowWidth + childWidth > workingWidth) {
128
129 currentRowWidth -= SpacingX;
130
131 // Process current row elements positioning
132 if (!layoutInput) {
133
134 var h = CalculateRowVerticalOffset(groupHeight, yOffset, currentRowHeight);
135 LayoutRow(_rowList, currentRowWidth, currentRowHeight, workingWidth, padding.left, h, axis);
136
137 }
138
139 // Clear existing row
140 _rowList.Clear();
141
142 // Add the current row height to total height accumulator, and reset to 0 for the next row
143 yOffset += currentRowHeight;
144 yOffset += SpacingY;
145
146 currentRowHeight = 0;
147 currentRowWidth = 0;
148
149 }
150
151 currentRowWidth += childWidth;
152 _rowList.Add(child);
153
154 // We need the largest element height to determine the starting position of the next line
155 if (childHeight > currentRowHeight) {
156 currentRowHeight = childHeight;
157 }
158
159 // Don't do this for the last one
160 if (i < rectChildren.Count - 1 )
161 currentRowWidth += SpacingX;
162 }
163
164 if (!layoutInput) {
165 var h = CalculateRowVerticalOffset(groupHeight, yOffset, currentRowHeight);
166 currentRowWidth -= SpacingX;
167 // Layout the final row
168 LayoutRow(_rowList, currentRowWidth, currentRowHeight, workingWidth - (_rowList.Count > 1 ? SpacingX : 0), padding.left, h, axis);
169 }
170
171 _rowList.Clear();
172
173 // Add the last rows height to the height accumulator
174 yOffset += currentRowHeight;
175 yOffset += IsLowerAlign ? padding.top : padding.bottom;
176
177 if (layoutInput) {
178
179 if(axis == 1)
180 SetLayoutInputForAxis(yOffset, yOffset, -1, axis);
181
182 }
183
184 return yOffset;
185 }
Adding 127 lượt xem
Gõ tìm kiếm nhanh...