Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Constants
- integer LINK_ROOT = 0;
- string SOUND_NAME = llGetInventoryName(INVENTORY_SOUND, 0);
- integer MAX_TEXTURES = 12;
- float HIGHLIGHT_GLOW = 0.2;
- float NORMAL_GLOW = 0.0;
- float SOUND_VOLUME = 1.0;
- float SELECTION_DELAY = 0.5;
- // Global variables
- list gTextures;
- integer gSelectedCard1 = -1;
- integer gSelectedCard2 = -1;
- setTexture(integer linkNumber, string textureUUID) {
- llSetLinkPrimitiveParamsFast(linkNumber, [PRIM_TEXTURE, ALL_SIDES, textureUUID, <1.0, 1.0, 1.0>, ZERO_VECTOR, 0.0]);
- }
- setGlow(integer linkNumber, float glowIntensity) {
- llSetLinkPrimitiveParamsFast(linkNumber, [PRIM_GLOW, ALL_SIDES, glowIntensity]);
- }
- default {
- state_entry() {
- integer i;
- for (i = 0; i < MAX_TEXTURES; ++i) {
- string textureName = llGetInventoryName(INVENTORY_TEXTURE, i);
- if (textureName != "") {
- gTextures += [textureName];
- }
- }
- gTextures = llListRandomize(gTextures, 1);
- for (i = 2; i <= llGetNumberOfPrims(); ++i) {
- string texture = llList2String(gTextures, i - 2);
- setTexture(i, texture);
- setGlow(i, NORMAL_GLOW);
- }
- }
- touch_start(integer total_number) {
- integer i;
- for (i = 0; i < total_number; ++i) {
- integer linkNum = llDetectedLinkNumber(i);
- if (linkNum > 1 && linkNum <= (MAX_TEXTURES + 1)) {
- if (gSelectedCard1 == -1) {
- gSelectedCard1 = linkNum;
- setGlow(linkNum, HIGHLIGHT_GLOW);
- } else if (gSelectedCard2 == -1 && linkNum != gSelectedCard1) {
- gSelectedCard2 = linkNum;
- setGlow(linkNum, HIGHLIGHT_GLOW);
- swapTextures();
- resetSelection();
- }
- if (SOUND_NAME != "") {
- llPlaySound(SOUND_NAME, SOUND_VOLUME);
- }
- }
- }
- }
- }
- swapTextures() {
- string texture1 = llList2String(gTextures, gSelectedCard1 - 2);
- string texture2 = llList2String(gTextures, gSelectedCard2 - 2);
- setTexture(gSelectedCard1, texture2);
- setTexture(gSelectedCard2, texture1);
- gTextures = llListReplaceList(gTextures, [texture2], gSelectedCard1 - 2, gSelectedCard1 - 2);
- gTextures = llListReplaceList(gTextures, [texture1], gSelectedCard2 - 2, gSelectedCard2 - 2);
- }
- resetSelection() {
- llSleep(SELECTION_DELAY);
- setGlow(gSelectedCard1, NORMAL_GLOW);
- setGlow(gSelectedCard2, NORMAL_GLOW);
- gSelectedCard1 = -1;
- gSelectedCard2 = -1;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement